flutter - 如何从ListView获取值列表

标签 flutter dart google-cloud-firestore

我正在从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/

相关文章:

flutter - 状态更改时如何强制立即重绘 FutureBuilder?

dart - 谷歌地图使用 google_maps_flutter 插件显示空白 map

dart - Flutter:横幅广告与主屏幕重叠

firebase - flutter firestore检索不同页面的不同数据

ios - 使用 Swift 在 Firebase 中进行 GeoHash 查询

flutter-web:通过 Location 插件在网络上获取位置

flutter - flutter中的Riverpode和Hooks,如何实现异步调用的StateNotifier?

Flutter, quadraticBezierTo 哪个是 x 和 y?

javascript - firebase Promise 使用节点 Firebase 函数在 foreach 中调用

javascript - Firebase 添加内部 for 循环