firebase - 将数据从 Firebase 加载到 Flutter 中的 DropdownButton 中

标签 firebase flutter dropdown

我是使用 Firebase 的 Flutter 新手,我正在尝试将 Firebase 中存储的一些数组加载到 DropdownButton 中。

当我从按钮调用这段代码时,它会起作用。它返回我可以在屏幕上打印的饮料列表:

Future<List<String>> get drinks async {
    QuerySnapshot docs = await _constantes.getDocuments();
    List<String> res = List();
    List<Map<String, dynamic>> datos = List();

    for (var d in docs.documents) {
      datos.add(d.data);
    }

    for (var d in datos[0]['drinks'].toList()) {
      res.add(d.toString());
    }

    return res;
  }

但我的问题是,我想将此列表加载到 DropdownButton 中,以便用户在应用程序向他显示表单时可以选择其中一种饮料:

DropdownButtonFormField(
            hint: Text('Choose a drink'),
            value: _currentDrink ?? 'Water',
            items: _db.drinks.then((drinks) {
              List<DropdownMenuItem> datos = List();

              for (var d in drinks) {
                datos.add(DropdownMenuItem(
                  value: d,
                  child: Text(d),
                ));
              }
              return datos;
            }),
            onChanged: (val) => setState(() => _currentDrink = val),
          ),

但是它不起作用,因为结果是一个 Future。

我该如何解决这个问题?

谢谢。

最佳答案

将其包装在StreamBuilder中。假设 _constantes 是您的 Firebase 集合,而不是使用 _constantes.getDocuments() 进行查询,而是从 _constantes.snapshots() 返回流:

StreamBuilder<List<DocumentSnapshot>>(
  stream: _drinkStream,
  builder: (context, snapshot) {
    return snapshot.hasData
        ? DropdownButton(
            onChanged: (value) {},
            items: [
              for (var child in snapshot.data)
                DropdownMenuItem(
                  child: Text(
                    child.data['name'],
                  ),
                  value: child,
                ),
            ],
          )
        : Container();
  },
)

关于firebase - 将数据从 Firebase 加载到 Flutter 中的 DropdownButton 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60956942/

相关文章:

android - flutter build apk导致错误:找不到用于签名配置 'release'的 keystore 文件

firebase - 无法在 Flutter 应用程序中通过用户 ID 获取特定用户文档

JQuery 根据下拉列表中的选定选项从图库中选择图像

javascript - 未捕获的类型错误 : Cannot read property 'setAttribute' of undefined at Object. onLoad

firebase - 了解 Firebase 数据库中的带宽使用情况来自何处

firebase - 创建新的 Firebase 项目 : "There was an unknown error while creating the project"

swift - 无法将类型 '[NSObject : AnyObject]' 的值分配给类型 '[String : AnyObject]!' 的值

flutter - flutter 中 Navigator.pushReplacement 和 Navigator.pushAndRemoveUntil 有什么区别?

javascript - 了解 Firebase 存储 token

html - 仅 CSS 和 HTML 下拉菜单剧透