【发布时间】:2020-08-31 04:21:17
【问题描述】:
我有一个名为 Database.dart 的文件,我在其中插入了“虚拟”数据并设置了与 Firebase 的连接。有了 Meals.dart,我想稍后在屏幕上显示数据。现在我想在我的调试控制台中显示这个虚拟数据。我试图更改 Meals.dart 中的“mealList”,但我没有弄清楚我的代码中的问题是什么。
这是我得到的错误代码。
════════ Exception caught by widgets library ═══════════════════════════════════
The following NoSuchMethodError was thrown building Meals(dirty, dependencies: [_InheritedProviderScope<List<MealsAndWhen>>], state: _MealsState#ed4e6):
The method 'forEach' was called on null.
Receiver: null
Tried calling: forEach(Closure: (MealsAndWhen) => Null)
The relevant error-causing widget was
Meals
lib/…/MealPlan/mealplan.dart:23
When the exception was thrown, this was the stack
#0 Object.noSuchMethod (dart:core-patch/object_patch.dart:53:5)
#1 _MealsState.build
package:mealapp/…/Widgets/meals.dart:17
#2 StatefulElement.build
package:flutter/…/widgets/framework.dart:4619
#3 ComponentElement.performRebuild
package:flutter/…/widgets/framework.dart:4502
#4 StatefulElement.performRebuild
package:flutter/…/widgets/framework.dart:4675
...
════════════════════════════════════════════════════════════════════════════════
flutter:
flutter:
我的 Database.dart 代码是
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:mealapp/models/Widgets/whenAndWhatToEat.dart';
class DatabaseService {
final String uid;
DatabaseService({ this.uid });
// collection reference
final CollectionReference mealCollection = Firestore.instance.collection('mealList');
Future updateUserData(String shopping, String name, String whatEat, String whenEat) async {
return await mealCollection.document(uid).setData({
'shopping': shopping,
'name': name,
'whatEat': whatEat,
'whenEat': whenEat,
});
}
//Meal List from Snapshot
List<MealsAndWhen> _mealAndWhenListFromSnapshot(QuerySnapshot snapshot){
return snapshot.documents.map((doc){
return MealsAndWhen(
whenEat: doc.data['When'] ?? '',
whatEat: doc.data['What'] ?? '',
);
}).toList();
}
//get shoppingList Stream
Stream<List<MealsAndWhen>> get mealList {
return mealCollection.snapshots()
.map(_mealAndWhenListFromSnapshot);
}
}
我的 Meals.dart 代码是
import 'package:flutter/material.dart';
import 'package:mealapp/models/Widgets/whenAndWhatToEat.dart';
import 'package:provider/provider.dart';
class Meals extends StatefulWidget {
@override
_MealsState createState() => _MealsState();
}
class _MealsState extends State<Meals> {
@override
Widget build(BuildContext context) {
final meals = Provider.of<List<MealsAndWhen>>(context);
meals.forEach((meals){
print(meals.whatEat);
print(meals.whenEat);
});
return Container(
);
}
}
【问题讨论】:
标签: database firebase flutter dart google-cloud-firestore