未检索到特定集合 Firebase 的数据

Posted

技术标签:

【中文标题】未检索到特定集合 Firebase 的数据【英文标题】:No data retrieved for specific collection Firebase 【发布时间】:2021-05-09 23:18:39 【问题描述】:

我是 Flutter 的新手,我正在尝试构建一个送餐应用。 我设法使用提供商从 Firebase 加载类别,但完全相同的代码不适用于我的餐厅。 基本上,检索到的餐馆列表为空。它没有给我任何错误,仅此而已。

这是餐厅模型



class RestaurantModel
  static const NAME = "name";
  static const ID = "id";
  static const AVG_PRICE = "avgPrice";
  static const RATING = "rating";
  static const RATES = "rates";
  static const IMAGE = "image";
  static const POPULAR = "popular";

  int _id;
  String _name;
  double _avgPrice;
  double _rating;
  String _image;
  bool _popular;
  int _rates;

  //GETTERS

  int get id => _id;
  String get name => _name;
  double get avgPrice => _avgPrice;
  double get rating => _rating;
  String get image => _image;
  bool get popular => _popular;
  int get rates => _rates;

  RestaurantModel.fromSnapshot(DocumentSnapshot snapshot)
    _id = snapshot.data()[ID];
    _name = snapshot.data()[NAME];
    _avgPrice = snapshot.data()[AVG_PRICE];
    _rating = snapshot.data()[RATING];
    _image = snapshot.data()[IMAGE];
    _popular = snapshot.data()[POPULAR];
    _rates = snapshot.data()[RATES];

  


餐厅服务

    class RestaurantServices 

  String collection = "restaurants";
  FirebaseFirestore _firestore = FirebaseFirestore.instance;

  Future<List<RestaurantModel>> getRestaurants() async => _firestore.collection(collection).get().then((result)
    List<RestaurantModel> restaurants = [];
    for (DocumentSnapshot restaurant in result.docs) 
      restaurants.add(RestaurantModel.fromSnapshot(restaurant));
    

    return restaurants;
  );




和餐厅供应商

class RestaurantProvider with ChangeNotifier

  RestaurantServices _restaurantServices = RestaurantServices();
  List<RestaurantModel> restaurants = [];

  RestaurantProvider.initialize()
    _loadRestaurants();
  

  _loadRestaurants() async 

    restaurants = await _restaurantServices.getRestaurants();
    notifyListeners();

  


【问题讨论】:

【参考方案1】:

Future 只返回 FutureOr,所以我们只需要等待并从下面的异步函数中获取值

 await _restaurantServices.getRestaurants().then((value)
      restaurants = value;
      notifyListeners();
    );

希望它能帮助您实现您的要求。

【讨论】:

不,同样的问题,问题是,我在此之前阅读了另一个类别的集合,你认为这是问题吗? 您能否在调用 notifyListeners 之前放置 print(restaurants) 并共享输出。这将有助于我更清楚地理解

以上是关于未检索到特定集合 Firebase 的数据的主要内容,如果未能解决你的问题,请参考以下文章

如何从firebase数据中检索数据短片

在特定日期时间从 Oracle 数据库中检索数据,然后在 php 中将它们发布到 firebase

Firebase 数据更改状态但不呈现组件

从 Fire Storage 检索图像,但是如果图像不存在,则应用程序崩溃

如何从 Firebase 实时数据库中检索特定数据?

未检索到 Firebase 用户的显示名称和照片网址