Futter基础第4篇: 实现基础列表组件、 水平列表组件 、 图标组件【ListView、Axis.vertical、Axis.horizontal】

一丶 效果图

【1】基础列表

在这里插入图片描述
【2】基础列表+图标组件
在这里插入图片描述

【3】基础列表+引用远程图片
在这里插入图片描述

【4】垂直列表

在这里插入图片描述
【5】水平列表
在这里插入图片描述

二丶 代码+注释

【1】基础列表

import 'package:flutter/material.dart';

void main()=>runApp(MyApp());

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

class HomeContent extends StatelessWidget{
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return ListView(        //列表
      children: <Widget>[   //表示配置它的子元素
        ListTile(     //每个item一般都是写在ListTile里,这是规范
          title: Text('床前明月光,按数据库里大家都刻录机按时考虑到就开始拉到就',
            style: TextStyle(
              fontSize: 18
            ),
          ),  //标题
          subtitle: Text('阿斯利康大神解答控件阿斯科利大家酷啦四大皆空拉丝机的酷啦数据库了多久啊上课了多久啊上课了经典款了'), //内容
        ),
        ListTile(     //每个item一般都是写在ListTile里,这是规范
          title: Text('床前明月光,按数据库里大家都刻录机按时考虑到就开始拉到就'),  //标题
          subtitle: Text('阿斯利康大神解答控件阿斯科利大家酷啦四大皆空拉丝机的酷啦数据库了多久啊上课了多久啊上课了经典款了'), //内容
        ),
        ListTile(     //每个item一般都是写在ListTile里,这是规范
          title: Text('床前明月光,按数据库里大家都刻录机按时考虑到就开始拉到就'),  //标题
          subtitle: Text('阿斯利康大神解答控件阿斯科利大家酷啦四大皆空拉丝机的酷啦数据库了多久啊上课了多久啊上课了经典款了'), //内容
        ),
        ListTile(     //每个item一般都是写在ListTile里,这是规范
          title: Text('床前明月光,按数据库里大家都刻录机按时考虑到就开始拉到就'),  //标题
          subtitle: Text('阿斯利康大神解答控件阿斯科利大家酷啦四大皆空拉丝机的酷啦数据库了多久啊上课了多久啊上课了经典款了'), //内容
        ),
        ListTile(     //每个item一般都是写在ListTile里,这是规范
          title: Text('床前明月光,按数据库里大家都刻录机按时考虑到就开始拉到就'),  //标题
          subtitle: Text('阿斯利康大神解答控件阿斯科利大家酷啦四大皆空拉丝机的酷啦数据库了多久啊上课了多久啊上课了经典款了'), //内容
        ),
        ListTile(     //每个item一般都是写在ListTile里,这是规范
          title: Text('床前明月光,按数据库里大家都刻录机按时考虑到就开始拉到就'),  //标题
          subtitle: Text('阿斯利康大神解答控件阿斯科利大家酷啦四大皆空拉丝机的酷啦数据库了多久啊上课了多久啊上课了经典款了'), //内容
        )
      ],
    );
  }
}

【2】基础列表+图标组件

...
...
...
    return ListView(        //列表
      children: <Widget>[   //表示配置它的子元素
        ListTile(     //每个item一般都是写在ListTile里,这是规范
          leading: Icon(Icons.settings,color: Colors.yellow),    //在左侧放置一个图标,修改图标颜色
          title: Text('床前明月光,按数据库里大家都刻录机按时考虑到就开始拉到就'),  //标题
          subtitle: Text('阿斯利康大神解答控件阿斯科利大家酷啦四大皆空拉丝机的酷啦数据库了多久啊上课了多久啊上课了经典款了'), //内容
        ),
        ListTile(     //每个item一般都是写在ListTile里,这是规范
          leading: Icon(Icons.home,size: 30),    //在左侧放置一个图标
          title: Text('床前明月光,按数据库里大家都刻录机按时考虑到就开始拉到就'),  //标题
          subtitle: Text('阿斯利康大神解答控件阿斯科利大家酷啦四大皆空拉丝机的酷啦数据库了多久啊上课了多久啊上课了经典款了'), //内容
          trailing: Icon(Icons.settings),     //在右侧放置一个图标
        ),
        ListTile(     //每个item一般都是写在ListTile里,这是规范
          leading: Icon(Icons.settings),    //在左侧放置一个图标
          title: Text('床前明月光,按数据库里大家都刻录机按时考虑到就开始拉到就'),  //标题
          subtitle: Text('阿斯利康大神解答控件阿斯科利大家酷啦四大皆空拉丝机的酷啦数据库了多久啊上课了多久啊上课了经典款了'), //内容
        ),
        ListTile(     //每个item一般都是写在ListTile里,这是规范
          leading: Icon(Icons.home),    //在左侧放置一个图标
          title: Text('床前明月光,按数据库里大家都刻录机按时考虑到就开始拉到就'),  //标题
          subtitle: Text('阿斯利康大神解答控件阿斯科利大家酷啦四大皆空拉丝机的酷啦数据库了多久啊上课了多久啊上课了经典款了'), //内容
        )
      ],
    );

【3】基础列表+引用远程图片

...
...
...
    return ListView(        //列表
      children: <Widget>[   //表示配置它的子元素
        ListTile(     //每个item一般都是写在ListTile里,这是规范
          leading: Image.network("https://www.itying.com/images/flutter/1.png"),
          title: Text('床前明月光,按数据库里大家都刻录机按时考虑到就开始拉到就'),  //标题
          subtitle: Text('阿斯利康大神解答控件阿斯科利大家酷啦四大皆空拉丝机的酷啦数据库了多久啊上课了多久啊上课了经典款了'), //内容
        ),
        ListTile(     //每个item一般都是写在ListTile里,这是规范
          leading: Image.network("https://www.itying.com/images/flutter/2.png"),
          title: Text('床前明月光,按数据库里大家都刻录机按时考虑到就开始拉到就'),  //标题
          subtitle: Text('阿斯利康大神解答控件阿斯科利大家酷啦四大皆空拉丝机的酷啦数据库了多久啊上课了多久啊上课了经典款了'), //内容
          trailing: Image.network("https://www.itying.com/images/flutter/5.png")
        ),
        ListTile(     //每个item一般都是写在ListTile里,这是规范 
          leading: Image.network("https://www.itying.com/images/flutter/3.png"),
          title: Text('床前明月光,按数据库里大家都刻录机按时考虑到就开始拉到就'),  //标题
          subtitle: Text('阿斯利康大神解答控件阿斯科利大家酷啦四大皆空拉丝机的酷啦数据库了多久啊上课了多久啊上课了经典款了'), //内容
        ),
        ListTile(     //每个item一般都是写在ListTile里,这是规范
          leading: Image.network("https://www.itying.com/images/flutter/4.png"),
          title: Text('床前明月光,按数据库里大家都刻录机按时考虑到就开始拉到就'),  //标题
          subtitle: Text('阿斯利康大神解答控件阿斯科利大家酷啦四大皆空拉丝机的酷啦数据库了多久啊上课了多久啊上课了经典款了'), //内容
        )

      ],
    );

【4】垂直列表

...
...
    return ListView(
      scrollDirection: Axis.vertical,     //垂直列表
      padding: EdgeInsets.all(10),
      children: <Widget>[
        Image.network('https://www.itying.com/images/flutter/1.png'),
        Container(
          child: Text('我是一个标题',
            textAlign: TextAlign.center,  //居中
            style: TextStyle(
              fontSize: 28,
            ),
          ),
          height: 60,
          padding: EdgeInsets.fromLTRB(0, 10, 0, 10),
        ),
        Image.network('https://www.itying.com/images/flutter/2.png'),
        Container(
          child: Text('我是一个标题',
            textAlign: TextAlign.center,  //居中
            style: TextStyle(
              fontSize: 28,
            ),
          ),
          height: 60,
          padding: EdgeInsets.fromLTRB(0, 10, 0, 10),
        ),
        Image.network('https://www.itying.com/images/flutter/3.png'),
        Container(
          child: Text('我是一个标题',
            textAlign: TextAlign.center,  //居中
            style: TextStyle(
              fontSize: 28,
            ),
          ),
          height: 60,
          padding: EdgeInsets.fromLTRB(0, 10, 0, 10),
        ),
        Image.network('https://www.itying.com/images/flutter/4.png'),
        Container(
          child: Text('我是一个标题',
            textAlign: TextAlign.center,  //居中
            style: TextStyle(
              fontSize: 28,
            ),
          ),
          height: 60,
          padding: EdgeInsets.fromLTRB(0, 10, 0, 10),
        ),
        Image.network('https://www.itying.com/images/flutter/5.png'),
        Container(
          child: Text('我是一个标题',
            textAlign: TextAlign.center,  //居中
            style: TextStyle(
              fontSize: 28,
            ),
          ),
          height: 60,
          padding: EdgeInsets.fromLTRB(0, 10, 0, 10),
        ),
        Image.network('https://www.itying.com/images/flutter/6.png'),
        Container(
          child: Text('我是一个标题',
            textAlign: TextAlign.center,  //居中
            style: TextStyle(
              fontSize: 28,
            ),
          ),
          height: 60,
          padding: EdgeInsets.fromLTRB(0, 10, 0, 10),
        ),
        Image.network('https://www.itying.com/images/flutter/2.png'),
        Image.network('https://www.itying.com/images/flutter/3.png'),
        Image.network('https://www.itying.com/images/flutter/4.png'),
        Image.network('https://www.itying.com/images/flutter/1.png'),
        Image.network('https://www.itying.com/images/flutter/2.png'),
        Image.network('https://www.itying.com/images/flutter/3.png'),
        Image.network('https://www.itying.com/images/flutter/1.png'),
        Image.network('https://www.itying.com/images/flutter/2.png'),
        Image.network('https://www.itying.com/images/flutter/3.png'),
      ],
    );

【5】水平列表

...
...
...
    return Container(
      height: 180,
        child: ListView(
//      scrollDirection: Axis.vertical,     //垂直列表
          scrollDirection: Axis.horizontal,        //水平列表,
          children: <Widget>[
            Container(
              width: 180.0,
              height: 180.0,
              color: Colors.yellow,
            ),
            Container(
              width: 180.0,
              height: 180.0,
              color: Colors.blue,
              child: ListView(
                children: <Widget>[
                  Image.network("https://www.itying.com/images/flutter/2.png"),
                  Text('我是一个文本')
                ],
              ),
            ),
            Container(
              width: 180.0,
              height: 180.0,
              color: Colors.red,
            ),
            Container(
              width: 180.0,
              height: 180.0,
              color: Colors.green,
            )
          ],
        ),
    );

三丶 知识点

1、Flutter 列表组件概述
列表布局是我们项目开发中最常用的一种布局方式。Flutter 中我们可以通过 ListView 来定义
列表项,支持垂直和水平方向展示。通过一个属性就可以控制列表的显示方向。列表有一下
分类:
1、垂直列表
2、垂直图文列表
3、水平列表
4、动态列表
5、矩阵式列表

2、 Flutter 列表参数

名称 						类型 						说明
scrollDirection		 Axis Axis.horizontal 				水平列表
						Axis.vertical					垂直列表
						
padding 				EdgeInsetsGeometry 				内边距

resolve						 bool					 组件反向排序

children				 List<Widget>					 列表元素

四丶 笔记

1、在ListView的children: 里可以放置任何的组件

2、我们在写完每一个ListTile(android里的item)后,它会自动的生成Widget数组,这就相当于是一个adapter管理数据后的一个数组

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王睿丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值