Firebase flatter:NoSuchMethodError:getter';长度';被调用为空

Firebase flatter:NoSuchMethodError:getter';长度';被调用为空,firebase,flutter,httprequest,flutter-listview,flutter-http,Firebase,Flutter,Httprequest,Flutter Listview,Flutter Http,我正在尝试从firebase实时数据库获取一些数据。这是我的代码,用于通过http请求获取数据。我也收到了数据,可以在日志中看到 return http.get(placeUrl).then((value) { var _extractedData = jsonDecode(value.body) as Map<String, dynamic>; print("Data: $_extractedData"); _extractedData.forEac

我正在尝试从firebase实时数据库获取一些数据。这是我的代码,用于通过http请求获取数据。我也收到了数据,可以在日志中看到

return http.get(placeUrl).then((value) {
  var _extractedData = jsonDecode(value.body) as Map<String, dynamic>;
  print("Data: $_extractedData");
  _extractedData.forEach((_placeName, _details) {
    print("Details: $_details");
    var _events = _details['events'] as Map<String, dynamic>;
    List<EventModel> events = [];
    _events != null
        ? _events.forEach((_event, _eventDetail) {
            print("_eventdetail: $_eventDetail");
            List<PriceModel> prices = [];
            var _price = _eventDetail['price'] as Map<String, dynamic>;
            _price != null
                ? _price.forEach((_type, _typeDetail) {
                    print("_typeDetail: $_typeDetail");
                    List<TypeModel> typeModelList = [];
                    _typeDetail != null
                        ? _typeDetail.forEach((_typeName, _typeSubDetail) {
                            print("_typeSubDetail: $_typeSubDetail");
                            var typeModel = TypeModel(
                              typeName: _typeName.toString(),
                              description:
                                  _typeSubDetail['description'].toString(),
                              price: _typeSubDetail['price'].toString(),
                            );
                            typeModelList.add(typeModel);
                          })
                        : null;
                    var priceModel = PriceModel(
                      type: _type,
                      typeData: typeModelList,
                    );
                    prices.add(priceModel);
                  })
                : null;
            var _eventModel = EventModel(
              ageLimit: _eventDetail['agelimit'].toString(),
              date: _eventDetail['date'].toString(),
              description: _eventDetail['description'].toString(),
              dressCode: _eventDetail['dresscode'].toString(),
              eventName: _event,
              image: _eventDetail['image'].toString(),
              lineup: _eventDetail['lineup'] as List<dynamic>,
              prices: prices,
              stars: double.parse(_eventDetail['stars']),
              time: _eventDetail['time'].toString(),
            );
            events.add(_eventModel);
          })
        : null;
    var _placeModel = PlaceModel(
      description: _details['description'],
      event: events,
      images: _details['images'],
      location: _details['location'],
      menu: _details['menu'],
      placeName: _placeName,
      stars: double.parse("${_details['stars']}"),
      logo: _details['logo'],
    );
    _places.add(_placeModel);
  });
}).then((_) {
  print("This is final: ${places[0].images[0]}");
  notifyListeners();
}).catchError((e) {
  print(e);
});
我尝试的是: 我看到一些关于这方面的帖子,并试图通过初始化列表“[]”来删除对null对象的length方法调用。我还设置了if条件来检查它们是否确实为null,以便跳过该部分而不运行它(:null;)

我的firebase数据:


解决了这个问题。这是因为我在这里添加了“stars”,而数据库中没有“stars”键

var _placeModel = PlaceModel(
      description: _details['description'],
      event: events,
      images: _details['images'],
      location: _details['location'],
      menu: _details['menu'],
      placeName: _placeName,
      stars: double.parse("${_details['stars']}"),
      logo: _details['logo'],
    );