Flutter 检索模型中的 firestore 数据

问题描述 投票:0回答:1

我一直在学习有关创建订餐应用程序的教程。 在教程中,有一个餐厅模型文件,其中包含菜单项。

` 最终列表_菜单 = [

Food(
  name: 'Classic Burger',
  description: 'A half pounder with all the fixins.',
  imagePath: 'lib/images/burgers/burger1.jpg',
  price: 10.99,
  category: FoodCategory.burgers,
  availableAddons: [
    Addon(name: 'Extra cheese', price: 0.69),
    Addon(name: 'Bacon', price: 1.09),
    Addon(name: 'Avocado', price: 2.25),
  ],
),`

那么吸气剂就是

List<Food> get menu => _menu;

我想从 firestore 获取这些数据。 我创建了一个名为“菜单”的集合

在此输入图片描述

我在同一个 dart 文件中创建了这个未来的方法。

Future getMenuData() 异步 { CollectionReference 菜单 = FirebaseFirestore.instance.collection('menu');

// Get docs from collection reference
// QuerySnapshot querySnapshot = menu.get() as QuerySnapshot<Object?>;
QuerySnapshot querySnapshot = await menu.get();

// Get data from docs and convert map to List
final allData = querySnapshot.docs.map((doc) => doc.data()).toList();

return allData as List<Food>;

}

然后我将吸气剂更新为

List<Food> get menu => getMenuData();

这会产生编译错误 无法从函数“menu”返回“Future”类型的值,因为它的返回类型为“List”。

那么如何从 firestore 加载菜单而不是在模型文件中硬编码呢?

flutter firebase
1个回答
0
投票

您需要循环遍历数据以将其设置为模型 Food。


// Get docs from collection reference
// QuerySnapshot querySnapshot = menu.get() as QuerySnapshot<Object?>;
QuerySnapshot querySnapshot = await menu.get();

// Get data from docs and convert map to List
final allData = querySnapshot.docs.map((doc) => doc.data()).toList();

return List<Food>.from(allData?.map((x) =>     Food(
     name: x[“name”],
    description: x[“description”],
    imagePath: x[“imagePath”],
    price: x[“price”],
    // The rest of your values
);
    ));
© www.soinside.com 2019 - 2024. All rights reserved.