Flutter布局尝试

官方的例子实现


Simulator Screen Shot - iPhone 11 Pro Max - 2020-04-23 at 16.31.20.png

1. 实现图片模块

Widget imageSection = new Container(
      padding: EdgeInsets.only(top: 8),
      child: Image.asset('images/timg.jpeg',
        height: 240.0,
        fit: BoxFit.cover,
      ),
    );

2. 实现标题模块

Widget titleSection = new Container (
        padding: EdgeInsets.all(32.0),
        color: Colors.white,
        child: Row(
          children: [
            // 左半部分上下标题/副标题
            Expanded(
              child: Column(
                crossAxisAlignment: CrossAxisAlignment.start,
                children: [
                  Container(// 创建一个容器,标题在容器中设置下边距,也可以在外部设置边距
                    padding: EdgeInsets.only(bottom: 8.0),
                    child: Text(
                      "我是大标题",
                      style: TextStyle(
                        fontWeight: FontWeight.bold,
                        fontSize: 20.0,
                      ),
                    ),
                  ),
                  Text(
                    '我是一个挺长的副标题',
                    style: TextStyle(
                      color: Colors.grey,
                    ),
                  )
                ],
              ),
            ),
            // 右边小星星
            Icon(
              Icons.star,
              color: Colors.red,
            ),
            // 设置右边距
            Padding(padding: EdgeInsets.only(right: 8)),
            // 右边数字
            Text('41'),
          ],
        ),
    );

3. 实现按钮模块

// 自定义按钮定制
    Column buildButtonColumn(IconData icon, String label) {
      return Column(
        mainAxisAlignment: MainAxisAlignment.center,
        mainAxisSize: MainAxisSize.min,
        children: [
          Icon(icon, color: Colors.blue),
          Padding(padding: EdgeInsets.only(top: 20.0),),
          Text(
            label, 
            style: TextStyle(
              fontSize: 12.0,
            ),
          ),
        ],
      );
    }

    // 按钮行创建
    Widget buttonSection = Container(
        child: Row(
          mainAxisAlignment: MainAxisAlignment.spaceEvenly,
          children: [
            buildButtonColumn(Icons.call, "打电话"),
            buildButtonColumn(Icons.near_me, "找我"),
            buildButtonColumn(Icons.share, "分享"),
          ],
        ),
    );

4. 实现正文模块

Widget textSection = Container(
      padding: EdgeInsets.fromLTRB(32, 40, 32, 0),
      child: Text('今天是个好日子,心想的事情都能成.今天是个好日子,心想的事情都能成.今天是个好日子,心想的事情都能成.今天是个好日子,心想的事情都能成.今天是个好日子,心想的事情都能成.今天是个好日子,心想的事情都能成.今天是个好日子,心想的事情都能成.')
    );

5. 整合所有模块

return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      
      body: ListView (
        
        children: [
          // 图片模块
          imageSection,
          // 标题模块
          titleSection,
          // 按钮模块
          buttonSection,
          // 正文模块
          textSection,
        ],
      ),
    );

源码地址

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 把赚钱当做刚需 日期:2018年12月11日星期二 篇目:人生创业课5(猫叔分享) 字数:789 猫叔昨天分享了7...
    诸葛都不亮阅读 1,735评论 0 1
  • 六项精进打卡第485,姓名:孙维洁 六精进第364期乐2学员,403期乐2志工,456期乐2志工,496服务和带队...
    孙维洁阅读 741评论 0 0
  • 你是否孤独?
    丽哒阅读 786评论 0 0
  • 她是我从幼儿园就认识的女孩,小学同班,初中同班,高中同校。 他是我初中同班的插班生,高中同校,我们是兄弟,在我看来...
    漂流的龙阅读 2,299评论 0 3