【发布时间】:2022-01-07 23:36:00
【问题描述】:
我是飞镖和颤振的新手,我收到了这个错误:
错误:参数类型“字符串?”不能分配给参数类型“字符串”。
当我尝试从 firebase 获取用户对象的字段并将其传递给 User 构造函数时发生此错误。我尝试了另一篇文章的答案,即对返回的用户对象和 uid 进行空检查,但即使在 if 语句内部 dart 仍然给我这个错误。
这是发生错误的函数:
Future<UserSchema> signInWithEmailAndPassword(
String email, String password) async {
var authResult = await FirebaseAuth.instance
.signInWithEmailAndPassword(email: email, password: password);
return UserSchema(authResult.user.uid, authResult.user.email,
authResult.user.displayName, authResult.user.password);
}
这是用户类:
class UserSchema {
String uid;
String email;
String displayName;
String phoneNumber;
String password;
String city;
String province;
String postCode;
bool hasTransit;
String streetAddress;
UserSchema(this.uid, this.email,this.displayName,this.password,
{this.phoneNumber = '0000000000',
this.postCode = '000000',
this.streetAddress = '000 0000 0000',
this.city = '00',
this.province = '00',
this.hasTransit = false});
Map<String, dynamic> toJson() => {
'uid': uid.trim(),
'displayName': displayName.trim(),
'email': email.trim(),
'phoneNumber': phoneNumber.trim(),
'accountCreated':
DateFormat('dd/MM/yyyy').format(Timestamp.now().toDate()),
'shippingAddress': {
'streetAddress': streetAddress.trim(),
'city': city.trim(),
'PostCode': postCode.trim(),
'province': province.trim(),
},
'hasTransit': hasTransit,
};
非常感谢您提供更详细的答案,谢谢。
【问题讨论】:
-
"即使在
if语句中,dart 仍然给我这个错误。"您没有显示执行此操作的代码,但您几乎可以肯定检查了一个非局部变量。只有 local 变量可以进行类型提升。见stackoverflow.com/q/65035574
标签: flutter dart dart-null-safety