我正在嘗試驗證注冊頁面的唯一用戶名。
這是我的 TextFormField 代碼:
TextFormField(
onSaved: (deger) => _username = deger!,
textInputAction: TextInputAction.done,
keyboardType: TextInputType.name,
controller: usernameController,
decoration: const InputDecoration(
suffixIcon: Icon(Icons.person),
label: Text("username"),
),
),
這是我的按鈕:
ElevatedButton(
onPressed: () async {
final valid = await _checkUserName(
usernameController.text);
if (valid!) {
Get.snackbar(
"hata", "username exist");
} else if (formKey.currentState!.validate()) {
formKey.currentState!.save();
//myAuthController codes here it doesnt metter.
} else {
debugPrint("error");
}
},
child: const Text("SIGNUP"),
),
我在 Firestore 中驗證現有用戶名的功能:
Future<bool?> _checkKullaniciAdi(String username) async {
final result = await FirebaseFirestore.instance
.collection("customer")
.where('username', isEqualTo: username)
.get();
return result.docs.isEmpty;
}
此代碼總是回傳
Get.snackbar("hata", "username exist");
我能做什么 ?
uj5u.com熱心網友回復:
if (valid!) {
Get.snackbar("hata", "username exist");
}
如果用戶名有效,則顯示
hata username exists
這就是上面的代碼所說的。這更有可能是您想要的:
if (!valid!) {
Get.snackbar("hata", "username exist");
}
第一個!表示不是,所以如果是not valid,第二個!表示valid不能為空,如果有效為空,則會拋出錯誤。
最后,我們必須添加第二個!的原因是因為您的_checkKullaniciAdi方法回傳bool?所以它可以回傳 true,false或null。但它沒有回傳null,您將其標記為可能,但它從未發生過,您可以將回傳型別更改為Future<bool>,這樣您就可以洗掉第二個!
Future<bool> _checkKullaniciAdi(String username) {
}
if (!valid) {
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/388283.html
標籤:火力基地 扑 谷歌云firestore
