参数类型 'Object?' 无法分配给参数类型 'Map<dynamic, dynamic>
The argument type 'Object?' can't be assigned to the parameter type 'Map<dynamic, dynamic>
我想从 Firebase Firestore 获取类别部分,所以我使用了这个 class
class CategoryModel {
late String name, image;
CategoryModel({
required this.name,
required this.image,
});
CategoryModel.fromJson(Map<dynamic, dynamic> map) {
if (map == null) {
return;
}
name = map['name'];
image = map['image'];
}
toJson() {
return {
'name': name,
'image': image,
};
}
}
然后我用 gets
创建了这个
class HomeViewModel extends GetxController {
ValueNotifier<bool> get loading => _loading;
ValueNotifier<bool> _loading = ValueNotifier(false);
List<CategoryModel> get categoryModel => _categoryModel;
List<CategoryModel> _categoryModel = [];
HomeViewModel() {
getCategory();
}
getCategory() async {
_loading.value = true;
await HomeService().getCategory().then((value) {
for (int i = 0; i < value.length; i++) {
_categoryModel.add(
CategoryModel.fromJson(
value[i].data(),
),
);
_loading.value = false;
}
update();
});
}
}
但是当我尝试使用函数 getCategory() 从 Firestore 获取类别时出现此错误
Error in vs code
Error in Problems scetion
这样试一下,有没有问题告诉我。
CategoryModel.fromJson(
value[i].data() as Map<String,dynamic>,
),
您可以阅读有关 Cloud Firestore 2.0 here 的更多信息。
基本思想是,无论您尝试从 DocumentSnapshot 中读取数据,都需要强制转换对象?到 Map.
您可以通过几种方式做到这一点。
- 投射对象?在你的 toJson 方法中映射
CategoryModel.fromJson(
value[i].data() as Map<String,dynamic>,
),
- 在构造函数中指定类型
DocumentReference<Map<String, dynamic>> documentReference;
- 在 StreamBuilder 中指定类型
StreamBuilder<QuerySnapshot<Map<String, dynamic>>>(
stream: model.testSnap,
builder: (context, snapshot) {
return Container();
},
)
我想从 Firebase Firestore 获取类别部分,所以我使用了这个 class
class CategoryModel {
late String name, image;
CategoryModel({
required this.name,
required this.image,
});
CategoryModel.fromJson(Map<dynamic, dynamic> map) {
if (map == null) {
return;
}
name = map['name'];
image = map['image'];
}
toJson() {
return {
'name': name,
'image': image,
};
}
}
然后我用 gets
创建了这个class HomeViewModel extends GetxController {
ValueNotifier<bool> get loading => _loading;
ValueNotifier<bool> _loading = ValueNotifier(false);
List<CategoryModel> get categoryModel => _categoryModel;
List<CategoryModel> _categoryModel = [];
HomeViewModel() {
getCategory();
}
getCategory() async {
_loading.value = true;
await HomeService().getCategory().then((value) {
for (int i = 0; i < value.length; i++) {
_categoryModel.add(
CategoryModel.fromJson(
value[i].data(),
),
);
_loading.value = false;
}
update();
});
}
}
但是当我尝试使用函数 getCategory() 从 Firestore 获取类别时出现此错误
Error in vs code
Error in Problems scetion
这样试一下,有没有问题告诉我。
CategoryModel.fromJson(
value[i].data() as Map<String,dynamic>,
),
您可以阅读有关 Cloud Firestore 2.0 here 的更多信息。
基本思想是,无论您尝试从 DocumentSnapshot 中读取数据,都需要强制转换对象?到 Map
您可以通过几种方式做到这一点。
- 投射对象?在你的 toJson 方法中映射
CategoryModel.fromJson(
value[i].data() as Map<String,dynamic>,
),
- 在构造函数中指定类型
DocumentReference<Map<String, dynamic>> documentReference;
- 在 StreamBuilder 中指定类型
StreamBuilder<QuerySnapshot<Map<String, dynamic>>>(
stream: model.testSnap,
builder: (context, snapshot) {
return Container();
},
)