参数类型 'Object' 无法分配给参数类型 'Map<String, dynamic>'
The argument type 'Object' can't be assigned to the parameter type 'Map<String, dynamic>'
我无法在返回 userData
时消除此错误。它说--“参数类型 'Object' 不能分配给参数类型 'Map<String, dynamic>'”。
Future<User?> getUser({required String userId}) async {
log.i('userId:$userId');
if (userId.isNotEmpty) {
final userDoc = await usersCollection.doc(userId).get();
if (!userDoc.exists) {
log.v('We have no user with id $userId in our database');
return null;
}
final userData = userDoc.data();
log.v('User found. Data: $userData');
return User.fromJson(userData!); // This is where the error comes
} else {
throw FirestoreApiException(
message:
'Your userId passed in is empty. Please pass in a valid user if from your Firebase user.');
}
}
下面是我的用户模型,我在开发依赖项中使用 json_serializable: ^6.2.0
和 freeze: ^2.0.3+1
,也在 pubspec.yaml
文件的依赖项中使用 freezed_annotation: ^2.0.3
和 json_annotation: ^4.5.0
。我不知道哪里出了问题。有人,请帮我解决这个问题。
import 'package:freezed_annotation/freezed_annotation.dart';
part 'application_models.freezed.dart';
part 'application_models.g.dart';
@freezed
class User with _$User {
factory User({
required String id,
String? email,
}) = _User;
factory User.fromJson(Map<String, dynamic> json) => _$UserFromJson(json);
}
假设您使用的是 Firestore,您需要将从 userDoc.data()
返回的对象转换为 Map<String, dynamic>
:
final userData = userDoc.data() as Map<String, dynamic>;
这是文档中的示例:https://firebase.google.com/docs/firestore/query-data/get-data#get_a_document
我无法在返回 userData
时消除此错误。它说--“参数类型 'Object' 不能分配给参数类型 'Map<String, dynamic>'”。
Future<User?> getUser({required String userId}) async {
log.i('userId:$userId');
if (userId.isNotEmpty) {
final userDoc = await usersCollection.doc(userId).get();
if (!userDoc.exists) {
log.v('We have no user with id $userId in our database');
return null;
}
final userData = userDoc.data();
log.v('User found. Data: $userData');
return User.fromJson(userData!); // This is where the error comes
} else {
throw FirestoreApiException(
message:
'Your userId passed in is empty. Please pass in a valid user if from your Firebase user.');
}
}
下面是我的用户模型,我在开发依赖项中使用 json_serializable: ^6.2.0
和 freeze: ^2.0.3+1
,也在 pubspec.yaml
文件的依赖项中使用 freezed_annotation: ^2.0.3
和 json_annotation: ^4.5.0
。我不知道哪里出了问题。有人,请帮我解决这个问题。
import 'package:freezed_annotation/freezed_annotation.dart';
part 'application_models.freezed.dart';
part 'application_models.g.dart';
@freezed
class User with _$User {
factory User({
required String id,
String? email,
}) = _User;
factory User.fromJson(Map<String, dynamic> json) => _$UserFromJson(json);
}
假设您使用的是 Firestore,您需要将从 userDoc.data()
返回的对象转换为 Map<String, dynamic>
:
final userData = userDoc.data() as Map<String, dynamic>;
这是文档中的示例:https://firebase.google.com/docs/firestore/query-data/get-data#get_a_document