Mar*_*ary 4 listview tableview flutter
我有一个要在屏幕上显示的小部件列表(比如 100 个);屏幕可以容纳大约 10 个项目。在绘画效率方面,我应该使用 ListView.builder 还是带有 SingleChildScrollView 的 Table?或者是其他东西?
ListView 看起来像这样(有点伪编码):
return new Column(
children: <Widget>[
new Container(
height: 30.0,
child: new Row(
children: <Widget>[
utils.createLabelText('Name'),
utils.createLabelText('Owner'),
utils.createLabelText('Last Modified'),
],
),
),
new Expanded(
child: new ListView.builder(
itemBuilder: (BuildContext context, int index) {
doc_fidl.Document doc = model.documents[index];
return new ListItem(
doc: doc,
);
},
),
),
],
);
Run Code Online (Sandbox Code Playgroud)
而表格看起来像这样:
List<TableRow> rows = <TableRow>[
new TableRow(
children: <Widget>[
utils.createLabelText('Name'),
utils.createLabelText('Owner'),
utils.createLabelText('Last Modified'),
],
),
];
for (Document doc in documents) {
rows.add(
new TableRow(
doc: doc.widgetList,
),
);
}
return new SingleChildScrollView(child: new Table(children: rows));
Run Code Online (Sandbox Code Playgroud)
ListView.builder 似乎是最有效的,因为它按需构建子项。但是,表格似乎更适合此任务(因为它可以轻松地正确对齐 3 列,而不管每列的文本长度如何,尤其是在标题行和内容行之间)。
我最终使用 ListView.builder 只是因为我想确保每一行都是有效的。
我通过将每行的小部件放在 Expanded 中并给每个 Expanded 一个 flex 属性来解决每行的偶数单元宽度布局。
| 归档时间: |
|
| 查看次数: |
10293 次 |
| 最近记录: |