使用场景
一般列表里面的数据都是动态创建的
1、基本结构
import 'package:flutter/material.dart';
void main() => runApp(MyApp(
//要调用MyApp需要传入一个list集合
//使用自动生成完成传入,相当与我们已经接收到了1000条记录
items : new List<String>.generate(1000,(i) => "item $i")
));
class MyApp extends StatelessWidget{
//接收父类传入的1000条数据
final List<String> items;
MyApp({key,@required this.items}) : super(key:key);
@override
Widget bulid(BuildContext context){
return MaterialApp(
title:'组件学习',
home:Scafold(
appBar:new AppBar(
title:new Text('组件学习')
),
body:new ListView.bulid(
//拿到参数长度
itemCount:items.length,
//动态生成列表
itemBuilder:(context,index){
return new ListTitle(
title:new Text('${items[index]}')
)
};
)
),
);
}
}
2、List集合类型
List是Dart的集合类型之一,其实你可以把它简单理解为数组(反正我是这么认为的),其他语言也都有这个类型。它的声明有几种方式:
-
var myList = List(): 非固定长度的声明。
-
var myList = List(2): 固定长度的声明。
-
var myList= List():固定类型的声明方式。
-
var myList = [1,2,3]: 对List直接赋值。
| 1、 接收参数在main方法里面 |
void main () => runApp(MyApp(
//generate第一个参数是次数,第二个是方法
items: new List<String>.generate(1000, (i)=> "Item $i")
));
| 2、接收父类的参数 |
final List<String> items;
MyApp({Key key, @required this.items}):super(key:key);
这是一个构造函数,除了Key,我们增加了一个必传参数,这里的@required意思就必传。:super如果父类没有无名无参数的默认构造函数,则子类必须手动调用一个父类构造函数。
这样我们就可以接收一个传递过来的参数了,当然我们要事先进行声明。
| 3、动态列表 |
ListView.builder()
3、效果展示
