【发布时间】:2021-10-18 17:23:02
【问题描述】:
我正在将我的颤振应用程序转换为使用 GetX 而不是提供程序,并且在转换过程中我遇到了一些我不知道如何纠正的错误。
第一个错误:
在我的数据模型 AgentsModel 中,AgentsModel.fromSnapshot() 方法出现错误。该错误是一个空安全错误。我试过放一个“?”在传入的参数的声明中,但它没有帮助。
错误信息:
方法'[]'不能被无条件调用,因为receiver可以是'null'
Agents.dart 数据模型文件
class AgentsModel {
final String? agentId;
final String? fName;
final String? lName;
final String? agency;
final String? agencyId;
final String? address1;
final String? address2;
final String? city;
final String? state;
final int? zipcode;
final String? cellPhone;
final String? officePhone;
final String? email;
final String? mls;
final String? mlsId;
AgentsModel(
{this.cellPhone,
this.address1,
this.address2,
this.fName,
this.lName,
this.email});
Map<String, dynamic> toMap() {
return {
'cellPhone': cellPhone,
'address1': address1,
'address2': address2,
'fName': fName,
'lName': lName,
'email': email
};
}
AgentsModel.fromSnapshot(DocumentSnapshot snapshot)
: cellPhone = snapshot.data()['cellPhone'] ?? null,
address1 = snapshot.data()['address1'] ?? null,
address2 = snapshot.data()['address2'] ?? null,
fName = snapshot.data()['fName'] ?? null,
lName = snapshot.data()['lName'] ?? null,
email = snapshot.data()['email'] ?? null;
}
错误 2(与错误 1 相关):
在我的 auth_controller.dart 文件中,我在声明我的 agentsModel 变量时遇到错误。这是错误:
A value of type 'Rx<AgentsModel>' can't be assigned to a variable of type 'Rxn<AgentsModel>'
这是抛出错误的代码行:
Rxn<AgentsModel> agentsModel = AgentsModel().obs;
错误 3(与前 2 个错误有关)
当我尝试从 auth_controller.dart 文件中调用 fromSnapshot() 时,我得到了调用错误,agentModel.fromSnapshot(doc));,说明
没有为类型“Rxn”定义方法“fromSnapshot”。
_initializeUserModel(String userId) async {
agentsModel.value =
await _db.collection(agentsCollection)
.doc(userId)
.get()
.then((doc) => agentsModel.fromSnapshot(doc));
}
这是上面的定义:
AgentsModel.fromSnapshot(DocumentSnapshot snapshot)
: cellPhone = snapshot.data()['cellPhone'] ?? null,
address1 = snapshot.data()['address1'] ?? null,
address2 = snapshot.data()['address2'] ?? null,
fName = snapshot.data()['fName'] ?? null,
lName = snapshot.data()['lName'] ?? null,
email = snapshot.data()['email'] ?? null;
}
奖励错误(与上述错误无关) 我在声明 firebaseUser 变量时遇到错误。
import 'package:firebase_auth/firebase_auth.dart';
下一行的错误是“用户”类没有默认构造函数。
User firebaseUser = User().obs;
以下行的错误是“Rx”类型的值无法分配给“用户”类型的变量。
firebaseUser = Rx<User>(auth.currentUser);
下面一行的错误是他没有为“用户”类型定义方法“bindStream”。
firebaseUser.bindStream(auth.userChanges());
由于其中一些错误与空安全性有关,因此我添加了“?”和 ”!”但没有变化。我是新手,正在学习,所以我能得到的任何帮助都将不胜感激。
【问题讨论】:
标签: flutter dart-null-safety flutter-getx