List是Dart的集合类型之一,其实可以把它简单理解为数组。它的声明有几种方式:
var myList = List()
: 非固定长度的声明。var myList = List(2)
: 固定长度的声明。var myList= List<String>()
:固定类型的声明方式。var myList = [1,2,3]
: 对List直接赋值。
void main() => runApp(MyApp( items: new List.generate(100, (i) => "Item $i") ));
这里使用的是一个List传递,然后直接用List中的generate
方法进行生产List里的元素。最后的结果是生产了一个带值的List变量。在main
函数的runApp中调用了MyApp类,再使用类的使用传递了一个items
参数,并使用generate生成器对items
进行赋值。
generate方法传递两个参数,第一个参数是生成的个数,第二个是方法;
final List items; MyApp({Key key, @required this.items}):super(key: key);
这是一个构造函数,除了Key,增加了一个必传参数,@required
就是必传。:super
如果父类没有无名无参数的默认构造函数,则子类必须手动调用一个父类构造函数。
这样我们就可以接收一个传递过来的参数了,当然要事先进行声明。
接受了值之后,就可以直接调用动态列表ListView.builder()
进行生成了:
import 'package:flutter/material.dart'; void main() => runApp(MyApp( items: new List.generate(100, (i) => "Item $i") )); class MyApp extends StatelessWidget { final List items; MyApp({Key key, @required this.items}):super(key: key); // This widget is the root of your application. @override Widget build(BuildContext context) { return MaterialApp( title: 'Welcome to Flutter', home: Scaffold( // appBar: AppBar( // title: Text('Welcome to Flutter'), // ), body: new ListView.builder( itemCount: items.length, itemBuilder: (context,index){ return new ListTile( // title: new Text('tt'), title:new Text('${items[index]}'), ); }, ) ), ); } }