В основном мне нужно сохранить в списке поля коллекции в базе данных firestore.
Это виджет, который заботится о подключении к базе данных:
Future<DocumentSnapshot> MissionRetriever1() async{
return await FirebaseFirestore.instance
.collection("quest")
.doc("1")
.get();
}
И это виджет, содержащийся в другом файле, который заботится о сохранении различных данных в списке:
Future<void> getMission1() async{
DocumentSnapshot snap = await widget.mservice.MissionRetriever1();
Map<String,dynamic> data = snap.data();
setState(() {
MissionData1.add(data['Q_Category']);
MissionData1.add(data['Q_Name']);
MissionData1.add(data['Q_Description']);
MissionData1.add(data['Q_Score']);
MissionData1.add(data['Q_Target']);
});
}
Но когда я пытаюсь отобразить значение внутри списка в текстовом виджете следующим образом:
Text(MissionData1.isEmpty ? "Loading..." : MissionData1[1],
style: TextStyle(
fontWeight: FontWeight.bold,
fontFamily: 'Roboto',
color: const Color(0xFF3A404C),
fontSize: 14.0.sp),),
Он всегда остается в: Загрузка... и возвращает эту ошибку:
E/flutter ( 3639): [ERROR:flutter/lib/ui/ui_dart_state.cc(177)] Unhandled Exception: NoSuchMethodError: The method 'MissionRetriever1' was called on null.
E/flutter ( 3639): Receiver: null
E/flutter ( 3639): Tried calling: MissionRetriever1()
Это коллекция Firestore:
Это метод инициализации:
@override
void initState() {
super.initState();
asyncMethod();
}
void asyncMethod() async {
**await getMission1();**
await widget.auth.retrieveScore();
**await widget.mservice.MissionRetriever1();**
await widget.mservice.NumberGenerator();
}
И это инициализация списка: **List<String> MissionData1 = [];**
P.S. Глядя на журналы Firestore, в соединении не было отказано.
mservice
- этоnull
. Это должно быть первое, что вам нужно проверить. - person João Soares   schedule 22.01.2021