Firebase 在null(颤振)上调用了Future函数
因此,我正在编写一个测验应用程序,我需要从firestore中获得一定数量的问题。因此,我创建了两个文件数据提供程序文件和存储库文件,它们的外观如下: 数据提供程序Firebase 在null(颤振)上调用了Future函数,firebase,flutter,dart,Firebase,Flutter,Dart,因此,我正在编写一个测验应用程序,我需要从firestore中获得一定数量的问题。因此,我创建了两个文件数据提供程序文件和存储库文件,它们的外观如下: 数据提供程序 class TestProvider { FirebaseFirestore _firestore = FirebaseFirestore.instance; Future<Map> getQuestionFromFirebase(String documentId) async { Map mappe
class TestProvider {
FirebaseFirestore _firestore = FirebaseFirestore.instance;
Future<Map> getQuestionFromFirebase(String documentId) async {
Map mappedQuestion;
await _firestore
.collection('questions')
.doc(documentId)
.get()
.then((DocumentSnapshot snapshot) => mappedQuestion = snapshot.data());
return mappedQuestion;
}
}
有趣的是,当我从提供者那里调用函数时,并没有得到错误。当我在repo类中使用它时,问题就开始了。知道怎么修吗?我不想在任何时候在widget中使用FutureBuilder。我想将快照转换为我的问题模型。在您的
测试库中
代码不清楚您在哪里实例化TestProvider\u TestProvider代码>成员
错误消息很清楚方法“getQuestionFromFirebase”在null上被调用。因此没有TestProvider
类的实例,并且\u TestProvider
是一个空指针
GrantTestProvider\u TestProvider=TestProvider()正如@ikerfah所说,在代码中添加code>,您的代码将不会出现任何问题。可能您缺少启动测试提供程序的功能<代码>TestProvider_TestProvider=TestProvider()代码>非常感谢,工作正常:)
class TestRepository {
final int amountOfQuestions;
TestRepository({
@required this.amountOfQuestions,
});
TestProvider _testProvider;
Future listOfQuestions() async {
List<int> range = numberInRange(amountOfQuestions);
List<Question> listOfQuestions;
for (int i = 1; i <= amountOfQuestions; i++) {
listOfQuestions.add(Question.fromMap(
await _testProvider.getQuestionFromFirebase(range[i].toString())));
}
return listOfQuestions;
}
}
E/flutter ( 5186): [ERROR:flutter/lib/ui/ui_dart_state.cc(177)] Unhandled Exception: NoSuchMethodError: The method 'getQuestionFromFirebase' was called on null.
E/flutter ( 5186): Receiver: null
E/flutter ( 5186): Tried calling: getQuestionFromFirebase("3")