我正在使用带有flutter和dart的提供程序包,我有一个身份验证提供程序和一个提供用户模型的流提供程序。提供用户模型的流提供程序取决于身份验证提供程序。如何获取我的用户ID到流提供商?
这是我的多提供商
MultiProvider(
providers: [
Provider<AuthenticationProvider>(builder: (context) => AuthenticationProvider(),),
StreamProvider<UserModel>.value(value: userStream(//here we call the async method in the Authentication provider to get the user id),
),
]
这是身份验证提供程序内部的方法返回包含用户ID的身份验证模型
Future<UserAuthenticationCertificate> userAuthenticationCertificate() async
{
FirebaseUser authenticatedUser = await _authentication.currentUser();
if(authenticatedUser != null)
return UserAuthenticationCertificate.fromFirebaseAuthentication(authenticatedUser);
return null;
}
这是身份验证证书
import 'package:firebase_auth/firebase_auth.dart';
class UserAuthenticationCertificate
{
String _userID;
String get userID{
return _userID;
}
UserAuthenticationCertificate(this._userID);
UserAuthenticationCertificate._internal(this._userID);
factory UserAuthenticationCertificate.fromFirebase(FirebaseUser firebaseUser)
{
return UserAuthenticationCertificate._internal(
firebaseUser.uid
);
}
}
修改
这是我目前拥有的
Provider<AuthenticationProvider>(create: (_) => AuthenticationProvider(),),
Provider<UserProvider>(
create: (_) => UserProvider(),
),
StreamProvider(create: (context) {
return Provider.of<UserProvider>(context).userStream(Provider.of<AuthenticationProvider>(context).userAuthenticationCertificate());
}),
那么现在我在流提供程序中提供用户提供程序?我想提供userModel作为流,我该怎么做?
答案 0 :(得分:1)
您可以使用传递给context
供应商的create
参数来读取其他供应商:
Provider(create: (_) => Auth()),
StreamProvider(create: (context) {
return Provider.of<Auth>(context).something;
});