В моем приложении Flutter Firebase с поставщиком для управления состоянием у меня есть поток для реагирования на FirebaseAuth.instance.authStateChanges()
и отдельный поток для прослушивания метаданных, связанных с моим приложением, для вошедших в систему uid
, предоставленных FirebaseAuth
.
return MultiProvider(
providers: [
// This returns a stream of firebase user auth events so my app can react to
// login, force logout, etc.
StreamProvider<fireauth.User>.value(
value: FirebaseAuth.instance.authStateChanges(),
),
// conditional on non-null FirebaseAuth User, I would like to register a Firestore listener
// for the provided userId.
// For security purposes, if the authenticated uid changes, the listener should be dereigstered.
// After logout, if a different user is logged in, the this stream should listen to that uid's doc.
StreamProvider<MyUser>.value(
value: FirebaseFirestore.instance.collection('users')
.doc(/* use the userId from firebaseAuth here! */)
.snapshots()
.map((ds) => MyUser.fromJson(ds.data()))
),
],
);
Я думаю, что могу использовать ProxyProvider
, чтобы позволить потоку MyUser
получить зависимость от потока FirebaseAuth.User
, но как только поток MyUser
зарегистрирован для этого uid
, он кажется неизменным. Как я могу перезагрузить поток Firestore на основе результата FirebaseAuth.User
?