flutter学习(5)

1.Flutter Expanded 类似 Web 中的 Flex 布局

在这里插入图片描述
在这里插入图片描述

import 'package:flutter/material.dart';
import 'res/data.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('flutter APP'),
        ),
        body: HomeContent(),
      ),
    );
  }
}

class HomeContent extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return 
    Row(
      children: <Widget>[
        IconContainer(
          Icons.search,
          color: Colors.blue,
         ),
        // Expanded(
        //   flex: 1,
        //   child:IconContainer(
        //   Icons.search,
        //   color: Colors.blue,
        //   ),
        // ),
        Expanded(
          flex: 2,
          child:IconContainer(
          Icons.search,
          color: Colors.pink,
          ),
        ),
      ],
    );
  }
}

// 定义一个动态生成图标的组件,参数由外层传入
class IconContainer extends StatelessWidget {
  // 定义一个构造函数可以进行参数的传入与赋值
  double size = 32.0; //设置默认值
  IconData icon; //必传项
  Color color = Colors.white; //设置默认值

  IconContainer(this.icon, {this.size, this.color}); //{}里的是选填项

  @override
  Widget build(BuildContext context) {
    return Container(
      width: 100.0,
      height: 100.0,
      color: this.color,
      child: Center(
        child: Icon(
          this.icon,
          size: this.size,
          color: Colors.white,
        ),
      ),
    );
  }
}

2.布局练习

在这里插入图片描述

import 'package:flutter/material.dart';
import 'package:flutterapp/main-1.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('flutter APP'),
        ),
        body: HomeContent(),
      ),
    );
  }
}

class HomeContent extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Column(children: <Widget>[
      Row(children: <Widget>[
        Expanded(
          child: Container(
            width: 200.0,
            height: 200.0,
            color: Colors.black,
            child: Text('11111111111'),
          ),
        )
      ]),
      SizedBox(
        height: 10,
      ),
      Row(
        children: <Widget>[
          Expanded(
              flex: 2,
              child: Container(
                height: 180,
                child: Image.network(
                  'https://wx.qlogo.cn/mmopen/vi_32/Q0j4TwGTfTLtiazJZeGWSbWDpsqHVibNTx8p2rmVpDWHVeiacHsLIEib8O3FbDicichaZ0aIdTd8wZoWSlPmLf9Ks7Sg/132',
                  fit: BoxFit.cover,
                ),
              )),
          SizedBox(
            width: 10,
          ),
          Expanded(
              flex: 1,
              child: Container(
                  height: 180.0,
                  child: ListView(
                    children: <Widget>[
                      Container(
                        height: 85.0,
                        child: Image.network(
                          'https://wx.qlogo.cn/mmopen/vi_32/Q0j4TwGTfTLtiazJZeGWSbWDpsqHVibNTx8p2rmVpDWHVeiacHsLIEib8O3FbDicichaZ0aIdTd8wZoWSlPmLf9Ks7Sg/132',
                          fit: BoxFit.cover,
                        ),
                      ),
                      SizedBox(
                        height: 10,
                      ),
                      Container(
                        height: 85.0,
                        child: Image.network(
                          'https://wx.qlogo.cn/mmopen/vi_32/Q0j4TwGTfTLtiazJZeGWSbWDpsqHVibNTx8p2rmVpDWHVeiacHsLIEib8O3FbDicichaZ0aIdTd8wZoWSlPmLf9Ks7Sg/132',
                          fit: BoxFit.cover,
                        ),
                      )
                    ],
                  )))
        ],
      )
    ]);
  }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值