Firebaseと連携させてサインアップページを作ってるときに出たエラー。
onPressed: () {
if (_registerFormKey.currentState.validate()) {
FirebaseAuth.instance
.createUserWithEmailAndPassword(
email: emailInputController.text,
password: pwdInputController.text)
.then((currentUser) => Firestore.instance
.collection("users")
.document(currentUser.uid)
.setData({
"uid": currentUser.uid,
"name": nameInputController.text,
"email": emailInputController.text,
})
.then((result) => {
Navigator.pushAndRemoveUntil(
context,
MaterialPageRoute(
builder: (context) => HomePage(
uid: currentUser.uid,
)),
(_) => false),
nameInputController.clear(),
emailInputController.clear(),
pwdInputController.clear(),
})
.catchError((err) => print(err)))
.catchError((err) => print(err));
}
},
The getter ‘uid’ isn’t defined for the class ‘AuthResult’.
uid
がAuthResultクラスに定義されていないと。
これはAPIのバージョンの問題っぽいです。
そんでもって、今のサインインメソッドはFirebaseUserの代わりにAuthResultを返すので、uid
の前にuser
を置かないといけないらしいです。
currentUser.uid
を currentUser.user.uid
に変更します。
onPressed: () {
if (_registerFormKey.currentState.validate()) {
FirebaseAuth.instance
.createUserWithEmailAndPassword(
email: emailInputController.text,
password: pwdInputController.text)
.then((currentUser) => Firestore.instance
.collection("users")
.document(currentUser.user.uid)
.setData({
"uid": currentUser.user.uid,
"name": nameInputController.text,
"email": emailInputController.text,
})
.then((result) => {
Navigator.pushAndRemoveUntil(
context,
MaterialPageRoute(
builder: (context) => HomePage(
uid: currentUser.user.uid,
)),
(_) => false),
nameInputController.clear(),
emailInputController.clear(),
pwdInputController.clear(),
})
.catchError((err) => print(err)))
.catchError((err) => print(err));
}
},
これで解消されました。