作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在从Firestore填充ListView
,并且需要按一下按钮以获取显示在ListView
中的所有文档ID的列表。这是一个简化的例子
class MaterialScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
List<Map<String, dynamic>> list = [
{'id': 1, 'name': 'name1'},
{'id': 2, 'name': 'name2'}
];
return Scaffold(
body: Column(
children: <Widget>[
Expanded(
child: ListView.builder(
itemCount: list.length,
itemBuilder: (BuildContext context, int index) => ListTile(
title: Text(list[index]['name']),
),
),
),
FlatButton(
child: Text('Print all ids'),
onPressed: () {print();}, //<-- how to get all list ids displayed in ListView
)
],
),
);
}
}
最佳答案
您可以在构建listview时创建一个新的list变量并在列表中添加id。
除此之外,在构建方法之外创建变量总是好的,因为每次构建方法重建时都会创建新变量。我的意思是setState被调用。
以下代码可帮助您进一步理解。
List<Map<String, dynamic>> list = [
{'id': 1, 'name': 'name1'},
{'id': 2, 'name': 'name2'}
];
List<int> _ids = [];
@override
Widget build(BuildContext context) {
_ids.clear();
return Scaffold(
body: Column(
children: <Widget>[
Expanded(
child: ListView.builder(
itemCount: list.length,
itemBuilder: (BuildContext context, int index) {
_ids.add(list[index]['id']);
return ListTile(
title: Text(list[index]['name']),
);
}),
),
FlatButton(
child: Text('Print all ids'),
onPressed: () {
print(_ids.toString());
},
)
],
),
);
}
关于flutter - 如何从ListView获取值列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61174151/
我是一名优秀的程序员,十分优秀!