列表常见的情况:
1、垂直列表

2、垂直图文列表

3、横向列表

4、动态列表

名称

类型

说明

  1. scrollDirection

Axis

Axis.horizontal 横向列表 Axis.vertical 垂直列表(默认垂直列表)

padding

  1. EdgeInsetsGeometry

内边距

resolve

bool

组件反向排序

children

List<Widget>

列表元素

Flutter 基本列表

  1. import 'package:flutter/material.dart';
  2.  
  3. void main() {
  4. runApp(MyApp());
  5. }
  6.  
  7. class MyApp extends StatelessWidget {
  8. @override
  9. Widget build(BuildContext context) {
  10. return MaterialApp(
  11. home: Scaffold(
  12. appBar: AppBar(title: Text("flutter demo")), body: HomeContent()));
  13. }
  14. }
  15.  
  16. class HomeContent extends StatelessWidget {
  17. @override
  18. Widget build(BuildContext context) {
  19. return Center(
  20. child: ListView(
  21. children: <Widget>[
  22. ListTile(
  23. leading: Icon(Icons.phone),
  24. title: Text(
  25. "this is title",
  26. style: TextStyle(fontSize: 28.0),
  27. ),
  28. subtitle: Text('this is subtitle '),
  29. ),
  30. ListTile(
  31. title: Text("this is title"),
  32. subtitle: Text('this is subtitle '),
  33. trailing: Icon(Icons.phone),
  34. ),
  35. ListTile(
  36. title: Text("this is title"),
  37. subtitle: Text('this is subtitle '),
  38. ),
  39. ListTile(
  40. title: Text("this is title"),
  41. subtitle: Text('this is subtitle'),
  42. ),
  43. ListTile(
  44. title: Text("this is title"),
  45. subtitle: Text('this is subtitle'),
  46. )
  47. ],
  48. ),
  49. );
  50. }
  51. }

图表列表

  1. body: new ListView(
  2. children:<Widget>[
  3. new Image.network(
  4. 'http://127.0.0.1:8080/imgs/a.jpg'
  5. )
  6. new Image.network(
  7. 'http://127.0.0.1:8080/imgs/b.jpg'
  8. )
  9. new Image.network(
  10. 'http://127.0.0.1:8080/imgs/c.jpg'
  11. ),new Image.network(
  12. 'http://127.0.0.1:8080/imgs/d.jpg'
  13. )
  14.  
  15. ]
  16. ),

横向列表

  1. import 'package:flutter/material.dart';
  2.  
  3. void main() {
  4. runApp(MyApp());
  5. }
  6.  
  7. class MyApp extends StatelessWidget {
  8. @override
  9. Widget build(BuildContext context) {
  10. return MaterialApp(
  11. home: Scaffold(
  12. appBar: AppBar(title: Text("flutter demo")), body: HomeContent()));
  13. }
  14. }
  15.  
  16. class HomeContent extends StatelessWidget {
  17. @override
  18. Widget build(BuildContext context) {
  19. return Container(
  20. height: 200.0,
  21. margin: EdgeInsets.all(5),
  22. child: ListView(
  23. scrollDirection: Axis.horizontal,
  24. children: <Widget>[
  25. Container(
  26. width: 180.0,
  27. color: Colors.lightBlue,
  28. ),
  29. Container(
  30. width: 180.0,
  31. color: Colors.amber,
  32. child: ListView(
  33. children: <Widget>[
  34. Image.network(
  35. 'http://127.0.0.1:8080/images/ca.jpg'),
  36. SizedBox(height: 16.0),
  37. Text(
  38. '这是一个文本信息',
  39. textAlign: TextAlign.center,
  40. style: TextStyle(fontSize: 16.0),
  41. )
  42. ],
  43. ),
  44. ),
  45. Container(
  46. width: 180.0,
  47. color: Colors.deepOrange,
  48. ),
  49. Container(
  50. width: 180.0,
  51. color: Colors.deepPurpleAccent,
  52. ),
  53. ],
  54. ));
  55. }
  56. }

动态列表的使用

List类型的使用

List是Dart的集合类型之一,其实你可以把它简单理解为数组(反正我是这么认为的),其他语言也都有这个类型。它的声明有几种方式:

  • var myList = List(): 非固定长度的声明。
  • var myList = List(2): 固定长度的声明。
  • var myList= List<String>():固定类型的声明方式。
  • var myList = [1,2,3]: 对List直接赋值。

那我们这里使用的是一个List传递,然后直接用List中的generate方法进行生产List里的元素。最后的结果是生产了一个带值的List变量。代码如下:

  1. void main () => runApp(MyApp(
  2. items: new List<String>.generate(1000, (i)=> "Item $i")
  3. ));
  1. 说明:再main函数的runApp中调用了MyApp类,再使用类的使用传递了一个items参数,并使用generate生成器对items进行赋值。
  2.  
  3. generate方法传递两个参数,第一个参数是生成的个数,第二个是方法。
  4. #

接受参数

传递了参数,那MyApp类是需要接收的:

  1. inal List<String> items;
  2. MyApp({Key key, @required this.items}):super(key:key);

构造函数,除了Key,增加了一个必传参数,@required意思就必传。:super如果父类没有无名无参数的默认构造函数,则子类必须手动调用一个父类构造函数。

事先进行声明,这样我们就OK了。

  1. import 'package:flutter/material.dart';
  2. void main () => runApp(MyApp(
  3. items: new List<String>.generate(1000, (i)=> "Item $i")
  4. ));
  5.  
  6. class MyApp extends StatelessWidget{
  7.  
  8. List<String> items;
  9. MyApp({Key key, @required this.items}):super(key:key);
  10. @override
  11. Widget build(BuildContext context ){
  12. return MaterialApp(
  13. title:'ListView widget',
  14. home:Scaffold(
  15. body:new ListView.builder(
  16. itemCount:items.length,
  17. itemBuilder:(context,index){
  18. return new ListTile(
  19. title:new Text('${items[index]}'),
  20. );
  21. }
  22. )
  23. ),
  24. );
  25. }
  26. }

Flutter ListView 列表组件的更多相关文章

  1. Android精通:View与ViewGroup,LinearLayout线性布局,RelativeLayout相对布局,ListView列表组件

    UI的描述 对于Android应用程序中,所有用户界面元素都是由View和ViewGroup对象构建的.View是绘制在屏幕上能与用户进行交互的一个对象.而对于ViewGroup来说,则是一个用于存放 ...

  2. flutter ListView列表和导航传值以及回调

    main.dart import 'package:flutter/material.dart'; void main(){ return runApp(MyApp()); } class Produ ...

  3. Android(java)学习笔记186:对ListView等列表组件中数据进行增、删、改操作

    1.ListView介绍 解决大量的相似的数据显示问题 采用了MVC模式: M: model (数据模型) V:  view  (显示的视图) C: controller 控制器 入门案例: acit ...

  4. Android(java)学习笔记129:对ListView等列表组件中数据进行增、删、改操作

    1. ListView介绍 解决大量的相似的数据显示问题 采用了MVC模式: M: model (数据模型) V:  view  (显示的视图) C: controller 控制器 入门案例: aci ...

  5. Flutter学习笔记(12)--列表组件

    如需转载,请注明出处:Flutter学习笔记(12)--列表组件 在日常的产品项目需求中,经常会有列表展示类的需求,在Android中常用的做法是收集数据源,然后创建列表适配器Adapter,将数据源 ...

  6. 07Flutter ListView基础列表组件、水平列表组件、图标组件

    ListView:     ListView:参数     scrollDirection:Axis.horizontal:水平列表.Axis.vertical垂直列表     padding:内边距 ...

  7. ListView 基础列表组件、水平 列表组件、图标组件

    一.Flutter 列表组件概述 列表布局是我们项目开发中最常用的一种布局方式.Flutter 中我们可以通过 ListView 来定义 列表项,支持垂直和水平方向展示.通过一个属性就可以控制列表的显 ...

  8. Flutter中的可滚动列表组件-PageView

    PageVIew,可滚动的视图列表组件,而且每一个子组件的大小都和视图窗口大小一样. 属性: controller -> PageController 用于控制视图页面滚动到的位置 childr ...

  9. Flutter 实战(一):列表项内容可自定义的列表组件

    前言 本篇文的目的是熟练掌握 Flutter 组件的封装,并且使用回调函数实现主要功能. 本组件的设计灵感来源于 Element 组件库的 table 组件. 正题 定义回调函数 在此之前,必须要了解 ...

随机推荐

  1. 剑指Offer(二十三):二叉搜索树的后序遍历序列

    剑指Offer(二十三):二叉搜索树的后序遍历序列 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn.ne ...

  2. Java精通并发-notify方法详解及线程获取锁的方式分析

    wait(): 在上一次https://www.cnblogs.com/webor2006/p/11404521.html中对于无参数的wait()方法的javadoc进行了解读,而它是调用了一个参数 ...

  3. 手把手教用C#编写Windows服务 并控制服务 安装、启动、停止、卸载

    Windows服务 Microsoft Windows 服务(即,以前的 NT 服务)使您能够创建在它们自己的 Windows 会话中可长时间运行的可执行应用程序.这些服务可以在计算机启动时自动启动, ...

  4. P1052 过河[DP]

    题目描述 在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧.在桥上有一些石子,青蛙很讨厌踩在这些石子上.由于桥的长度和青蛙一次跳过的距离都是正整数,我们可以把独木桥上青蛙可能到达的点看成数 ...

  5. 更改intellij高亮字体背景颜色

    intellij工具中依次进入file -> settings -> editor -> colors & fonts -> general,在右侧窗口中将result ...

  6. 【CSP-S 2019】【洛谷P5665】划分【单调队列dp】

    前言 \(csp\)时发现自己做过类似这道题的题目 : P4954 [USACO09Open] Tower of Hay 干草塔 然后回忆了差不多\(15min\)才想出来... 然后就敲了\(88p ...

  7. 019_Python3 输入和输出

    在前面几个章节中,我们其实已经接触了 Python 的输入输出的功能.本章节我们将具体介绍 Python 的输入输出.   ************************************ 1 ...

  8. bzoj 5299: [Cqoi2018]解锁屏幕 状压dp+二进制

    比较简单的状压 dp,令 $f[S][i]$ 表示已经经过的点集为 $S$,且最后一个访问的位置为 $i$ 的方案数. 然后随便转移一下就可以了,可以用 $lowbit$ 来优化一下枚举. code: ...

  9. man、whatis、apropos命令

    man命令类似于Linux的帮助文档. 1.man1提供给普通用户的可执行命令说明: 输入man 1 ls 后,结果如下: 结果分析: (1)NAME:命令的名称: (2)SYNOPSIS:参数的使用 ...

  10. mysqli扩展和持久化连接

    mysqli扩展的持久化连接在PHP5.3中被引入.支持已经存在于PDO MYSQL 和ext/mysql中. 持久化连接背后的思想是客户端进程和数据库之间的连接可以通过一个客户端进程来保持重用, 而 ...