ドキュメントとしてユーザーIDをフィールドとして割り当て、ユーザー関連データをFirestoreに保存したいのですが。
Firebase AuthからユーザーIDを取得する方法
またはユーザーデータをFirestoreに保存するためのより良い方法はありますか?
この方法でFirebase AuthからユーザーIDを取得できませんでした(Text(_userId)は_userId == nullエラーを返します):
String _userId;
...
@override
Widget build(BuildContext context) {
FirebaseAuth.instance.currentUser().then((user) {
_userId = user.uid;
});
return new Scaffold(
appBar: new AppBar(
title: new Text("App bar"),
),
body: new Text(_userId),
);
}
FirebaseAuth.instance.currentUser()
から返されたFutureが完了する前にウィジェットが構築されているため、__userId
_はnullです。それが完了すると、それは遅すぎ、ウィジェットは更新されません。これを処理する1つの方法は、 FutureBuilder
を次のように使用することです。
_Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("App bar"),
),
body: FutureBuilder(
future: FirebaseAuth.instance.currentUser(),
builder: (context, AsyncSnapshot<FirebaseUser> snapshot) {
if (snapshot.hasData) {
return Text(snapshot.data.uid);
}
else {
return Text('Loading...');
}
},
),
);
}
_