LoginButton(
onPressed: () {
signUp();
final user = Profiles(
id: id.v1(),
email: email.text.trim(),
gender: selectedGender == 1 ? 'Erkek' : 'Kadın',
name: name.text.trim(),
username: username.text.trim(),
);
createUser(user);
}, // signUp,
),
我正在尝试在按下按钮时使用 signUp() 函数在 Firebase 身份验证中注册用户,并使用 createUser() 函数在 Firestore 中注册信息。
Future signUp() async {
showDialog(
barrierDismissible: false,
context: context,
builder: (context) => const Center(
child: CircularProgressIndicator(),
),
);
try {
await FirebaseAuth.instance.createUserWithEmailAndPassword(
email: email.text.trim(),
password: password.text.trim(),
);
} on FirebaseAuthException catch (e) {
print(e);
}
navigatorKey.currentState!.popUntil((route) => route.isFirst);
}
Future createUser(Profiles profile) async {
final docUser = FirebaseFirestore.instance.collection('profiles').doc();
profile.id = docUser.id;
final json = profile.toJson();
await docUser.set(json);
}
我创建的 Profiles 类。
class Profiles {
String id;
final String name;
final String username;
final String gender;
final String email;
Profiles(
{required this.id,
required this.email,
required this.gender,
required this.name,
required this.username});
Map<String, dynamic> toJson() => {
'id': id,
'name': name,
'gender': gender,
'email': email,
'username': username,
};
static Profiles fromJson(Map<String, dynamic> json) => Profiles(
id: json['id'],
email: json['email'],
gender: json['gender'],
name: json['name'],
username: json['username']);
}
错误:给定的字符串为空或为空
我已经在 textFormFields 中定义了我所有的 textEditingControls。几个小时前,我没有收到此代码的任何错误,也没有对代码进行任何更改。但是现在我收到了这个错误。
根据你的代码和错误(空或空字符串),你可以试试这个,
onPressed: () {
if (name.text.trim().isEmpty || username.text.trim().isEmpty || email.text.trim().isEmpty) {
print("One or more fields are empty");
return;
}
signUp();
final user = Profiles(
id: id.v1(),
email: email.text.trim(),
gender: selectedGender == 1 ? 'Erkek' : 'Kadın',
name: name.text.trim(),
username: username.text.trim(),
);
createUser(user);
},
另外,注册是一个异步函数,所以你应该像这样更新你的代码,
LoginButton(
onPressed: () async {
await signUp();
final user = Profiles(
id: id.v1(),
email: email.text.trim(),
gender: selectedGender == 1 ? 'Erkek' : 'Kadın',
name: name.text.trim(),
username: username.text.trim(),
);
await createUser(user);
},
),