現在のユーザーUIDに従ってFirebaseからフラッタープロジェクトに画像を読み込む方法はありますか
Firebaseストレージから画像を読み込みたい。{users uid} .pngという名前のユーザーのプロフィール写真などの画像をアップロードしました。そのため、ユーザープロファイル画面に移動するときに、現在のユーザーuidに応じてFirebaseからこれらの画像をアップロードしたいと思います。そのための最良の方法は何ですか?私のような私のユーザーのプロパティを設定し、非同期メソッドを持っているfinal loggegInUser
と私は、非同期メソッドを持っています
void getCurrentUser() async {
try {
final user = await _auth.currentUser();
if (user != null) {
loggedInUser = user;
print(loggedInUser.email);
print(uid);
}
} catch (e) {
print(e);
}
}
このメソッドはグローバルloggedInUserプロパティを設定し、Firebaseストレージからそのような画像をロードしたい
CircleAvatar(
backgroundColor: Colors.black,
backgroundImage: FirebaseImage(
'gs://homeparty-68792.appspot.com/user_profile_images/${loggedInUser.uid}.png')
,
radius: 100,
),
しかし、この画面をロードすると、
ERROR TYPE Exception has occurred. NoSuchMethodError (NoSuchMethodError: The getter 'uid' was called on null. Receiver: null Tried calling: uid)
エラー。getCurrentUser()メソッドは正しく機能し、電子メールとパスワードを出力しますが、ビルドウィジェットではnullを返します。なぜこれが起こっているのか私はいくつかの助けが必要ですか?
回答
あなたが呼び出している場合getCurrentUser()
にはinitState
、その後、問題があることをbuild()
ユーザーを取得する前に呼び出さなっています。したがって、最善の方法は、バージョンにアップグレードcloud_firestore
し0.14.0
て追加することfirebase_core : 0.5.0
です。
dependencies:
flutter:
sdk: flutter
firebase_core : ^0.5.0
firebase_auth : ^0.18.0
firebase_storage:^4.0.0
# cloud_firestore: ^0.14.0 not sure if you are using
次に、次の操作を実行できます。最初にFirebaseを初期化します。
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
runApp(MyApp());
}
と内部getCurrentUser()
:
void getCurrentUser() {
try {
final user = _auth.currentUser;
if (user != null) {
loggedInUser = user;
print(loggedInUser.email);
print(uid);
}
} catch (e) {
print(e);
}
}
新しいバージョンでcurrentUser
は、非同期ではないを取得する必要はありませんasync/await
。
いくつかの便利なリンク:
Firebaseアプリ '[DEFAULT]'が作成されていません-FlutterとFirebaseでFirebase.initializeApp()を呼び出します
未定義のクラス 'FirebaseUser'
cloud_firestore0.14.0データメソッドの使用方法
ゲッター「インスタンス」はタイプ「Firestore」に対して定義されていません