gridview - Flutter:如何将 Future 数据从 firebase 加载到 GridView?

标签 gridview firebase-realtime-database dart flutter

大家好(喜欢 Flutter 的人),

这很简单(但我不知道怎么做)。

我在 Firebase 数据库中有动态菜单选项。我需要在 GridView 中向最终用户展示它。

我有一个 Future 列表(假设是 Future>),它从 Firebase 数据中返回一个列表:

static Future<List<Menu>> list() async {
    List<Menu> _list = new List();
    await drMenues.onValue.listen((event) {
      Menu _menu = new Menu();
      _menu.desdeData(event.snapshot);
      _list.add(_menu);
    });
    return _list;
  }

现在,我需要用这些菜单选项填充我的 GridView。

final datosMenues = list();
...
new GridView.count(
  crossAxisCount: (orientation == Orientation.portrait) ? 3 : 4,
  childAspectRatio: (orientation == Orientation.portrait) ? 1.0 : 1.3,
      children: datosMenues.then
...

我需要一点帮助来完成它。我知道我需要一个“then”,因为它是一个 Future 列表。

请给点建议?

最佳答案

如果您需要更多帮助,这里有一个完整的示例。

这就是我的数据在 Firebase 中的组织方式:

this is how my data is organized in Firebase

return StreamBuilder(
    stream: FirebaseDatabase.instance
        .reference()
        .child("Communities")
        .onValue,
    builder: (BuildContext context, AsyncSnapshot<Event> snapshot) {
      if (snapshot.hasData) {
        Map<dynamic, dynamic> map = snapshot.data.snapshot.value;
        map.forEach((dynamic, v) => print(v["pic"]));

        return GridView.builder(
          gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
              crossAxisCount: 3),
          itemCount: map.values.toList().length,
          padding: EdgeInsets.all(2.0),
          itemBuilder: (BuildContext context, int index) {
            return Container(
              child: Image.network(
                map.values.toList()[index]["pic"],
                fit: BoxFit.cover,
              ),
              padding: EdgeInsets.all(2.0),
            );
          },
        );
      } else {
        return CircularProgressIndicator();
      }
    });

void initState() {
  final FirebaseDatabase database = FirebaseDatabase(app: widget.app);
  database.setPersistenceEnabled(true);
  database.setPersistenceCacheSizeBytes(10000000);
  super.initState();
}

关于gridview - Flutter:如何将 Future 数据从 firebase 加载到 GridView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47784829/

相关文章:

XAML/C# : What event fires after reordering a gridview?

java - 在 gridview 中缩放 imageview 时的空白

c# - 如何动态地重新排序 gridview 中的列

android - 无法从 Firebase 数据库检索数据

flutter - 我收到类似无效值的范围错误:不在范围16..17,包括范围:19错误:RangeError(结束):

dart - Dart中的异步可迭代映射

c# - 在 GridView 的 EditTemplates 中使用 DropDownList

javascript - 我无法将数据从 firebase 显示到我的 Node js 客户端

java - Android/Java Firebase 向键/引用添加意外值

json - 如何使用Dart从json字符串中获得对象的强类型列表?