提问人:Rafo 提问时间:11/17/2023 最后编辑:Frank van PuffelenRafo 更新时间:11/17/2023 访问量:45
type 'RxList<Map<String, String>>' 不是'function result' 的 'RxList<Faq>' 类型的子类型
type 'RxList<Map<String, String>>' is not a subtype of type 'RxList<Faq>' of 'function result'
问:
我想从firestore获取数据,但出现此错误:
type 'RxList<Map<String, String>>' 不是 'function result' 的 'RxList' 类型的子类型
我试图解决,但我一无所获 因此,请使用 GetX 作为我的管理状态 这是我的控制器代码
import 'package:get/get.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
class Faqs {
final String quetions;
final String answers;
Faqs({required this.quetions, required this.answers});
}
class FaqController extends GetxController {
var faqList = <Faqs>[].obs;
FirebaseFirestore firestore = FirebaseFirestore.instance;
@override
void onInit() {
super.onInit();
fetchFaqList();
}
Future<void> fetchFaqList() async {
CollectionReference faqs = firestore.collection('faqs');
QuerySnapshot querySnapshot = await faqs.get();
List<Faqs> fetchedFaqList = querySnapshot.docs.map((doc) {
Map<String, dynamic> data = doc.data()! as Map<String, dynamic>;
return Faqs(
quetions: data['quetions'],
answers: data['answer'],
);
}).toList();
faqList.assignAll(fetchedFaqList);
}
}
答:
0赞
Dhanusha Dilshan
11/17/2023
#1
您的 Faqs
类定义了两个字段:和 .但是,您遇到的错误表明从 Firestore 获取的类型与您的 Faqs 类预期的类型不匹配。questions
answers
将类想象成一个蓝图,用于定义预期接收的数据的结构。在您的例子中,类需要 和 ,两者都是字符串。Faqs
Faqs
questions
answers
例如,如果 Firestore 包含字段名称为字段名称(问题拼写错误)和答案的数据,则需要将这些数据与类的结构保持一致。确保 Firestore 中的字段名称与您尝试在 Faqs 类中使用的字段名称匹配。quetions
Faqs
所以解决这个问题,
1.检查 Firestore 数据:确保 Firestore 中的字段名称与您在 Faqs 类(问题和答案)中定义的结构匹配。
2.更新数据映射:更正方法中的映射,以匹配 Firestore 中的实际字段名称。fetchFaqList()
让我们看看下面更新的代码段,
class Faqs {
final String questions;
final String answers;
Faqs({required this.questions, required this.answers});
}
然后 yu 应该更新方法,参见下面的代码,fetchFaqList()
Future<void> fetchFaqList() async {
CollectionReference faqs = firestore.collection('faqs');
QuerySnapshot querySnapshot = await faqs.get();
List<Faqs> fetchedFaqList = querySnapshot.docs.map((doc) {
Map<String, dynamic> data = doc.data()! as Map<String, dynamic>;
return Faqs(
questions: data['quetions'], // Correct to 'questions'
answers: data['answer'], // Correct to 'answers'
);
}).toList();
faqList.assignAll(fetchedFaqList);
}
确保方法内部映射中的字段名称(问题到问题和答案到答案)与 Firestore 数据库中的实际字段名称一致。fetchFaqList()
评论