flutter - Flutter-如何在lisviw生成器中获取ID列表

标签 flutter dart google-cloud-firestore

我如何从listview.builder获取一个值和该开关的持有者的ID,我想进行一个Firebase集合,该值将被存储,并使该工作有效,我制作了一个容纳名称和switch的容器,一个listview.builder列出所有文档,因此当我按Submit button时,它将提交所有开关值及其ID
这是listview.builder

Column(
        children: [
          Expanded(
                      child: ListView.builder(
                        itemCount: posts.length,
                        itemBuilder: (context, index) {
                          return Padding(
                            padding: const EdgeInsets.all(8.0),
                            child: Container(
                              child: Padding(
                                padding: const EdgeInsets.fromLTRB(6, 3, 8, 3),
                                child: Row(
                                  crossAxisAlignment: CrossAxisAlignment.center,
                                  children: [
                                    Switch(value: null, onChanged: null),
                                    Text(posts[index].data()["fname"])),
                                  ],
                                ),
                              ),
                            ),
                          );
                        },
                      ),
            ),
            RaisedButton.icon(
              label: Text('Submit', style: TextStyle(color: Colors.white),),
              onPressed: () {},
                            ),
                        ],
                      ),

最佳答案

您可以使用映射来跟踪build方法之外的开关的当前状态。使用post.data()[“fname”]作为键

var switchStates = {};
  @override
  void initState() {
    super.initState();
    for (var post in posts) {
      switchStates[post.data()["fname"]] = false;
    }
  }

  void onSwitchChanged(var key, var newValue)
  {
    switchStates[key] = newValue;
  }
然后在listView上
 Switch(value: null, onChanged: (value) => onSwitchChanged(posts[index].data()["fname"], value);)
最后,您可以使用switchStates映射访问ID和值。
var keys = switchStates.keys;
var values = switchStates.values; //Use them in onPressed

关于flutter - Flutter-如何在lisviw生成器中获取ID列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64561922/

相关文章:

android - 使用 Retrofit 时,Firestore 时间戳为(秒 : 0, 纳秒:0)

flutter - pushReplacementNamed在Flutter中不起作用

flutter - 如何通过 Firebase ML 套件文本识别扫描七段显示器?

firebase - flutter :CircularProgressIndicator()

list - 如何在 typeahead flutter 中进行 suggestCallback?

dart - 在 Flutter 中的容器内制作可滚动的文本

android - 我应该使用本地数据库并在应用内购买后切换到 Firestore 吗?

Javascript 函数乱序完成——异步

android - 单击通知时,Android 上的 Flutter 应用程序不会打开应用程序

Flutter 定位包无法在后台运行