【问题标题】:flutter - how do you convert a Map<dynamic.dynamic> to List<String>颤振-如何将 Map<dynamic.dynamic> 转换为 List<String>
【发布时间】:2020-09-03 15:39:32
【问题描述】:

我正在未来的构建器中运行 Firebase 查询并检索子级。

快照恢复正常,但我想将数据添加到列表中

我想做以下事情:

litems.clear();

                                    Map<dynamic, String> values = snapshot.data.value;
                                    values.forEach((key, values) {
                                      litems.add(values);
                                    });

litems 是我想在下拉列表中使用的列表。

在我的下拉列表中:

items: litems.map((String value) {
                              return new DropdownMenuItem<String>(
                                value: value,
                                child: new Text(value),
                              );
                            }).toList(),

我在第一部分中遇到的错误是地图无法分配给列表

请帮忙!

【问题讨论】:

    标签: flutter firebase-realtime-database dart future


    【解决方案1】:

    您似乎试图将所有值添加为单个条目而不是特定值。

    Map<dynamic, String> values = snapshot.data.value;
    values.forEach((key, values) {
        litems.add(values);
    });
    

    你可以试试

    Map<dynamic, String> values = snapshot.data.value;
    values.forEach((value) {
        litems.add(value);
    });
    

    values.forEach((key, values) {
        litems.add(values[key]);
    });
    

    【讨论】:

    • 我仍然在 Futurebuilder 中得到一个错误,它说 List 不是 Map 的子类型。在我的 Firebase 快照中,我将其作为 DocumentSnapshot 并使用属性 .once() 这是正确的吗?
    • 并且在尝试执行 litems.add(values[key]) 时,它希望我输入一个整数
    • 你必须向我们展示你是如何定义 litems 的,因为你没有在问题中添加它。
    【解决方案2】:

    我看不出问题出在哪里,但在列表声明中使用 for 循环更简洁,可能会解决它:

    item : [
        for(var value in litems.values)
            DropdownMenuItem<String>(
                value: value,
                child: Text(value),
            );
    ]
    

    您需要 pubspec.yaml 中的最低 SDK 版本 >=2.6.0

    【讨论】:

    • 问题不在 grt 下拉列表中,当我尝试使用来自 firebase 的快照填充项目时出现错误。我被告知类型不匹配。快照是 Map 而列表是 List。即使我用静态项目替换下拉列表
    • 那么不妨试试snapshot.valuelitems.add(values.value);。您必须匹配数据库的结构方式。您还可以在调试模式下运行并在检索快照后设置一个断点以查看它的确切外观。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-21
    • 2021-02-28
    • 1970-01-01
    • 2021-12-21
    相关资源
    最近更新 更多