最初它在工作,但是只是停止了,所以我不能弄清楚问题出在哪里。
我正在使用提供程序包中的flutter项目处理流。从服务文件中发出流,并且在小部件文件上进行监听。 Firebase onAuthStateChanged流正在运行,但我的却无法运行。
我的文件中有很多代码,所以不打算在这里发布所有内容。
我对AuthStatus流有问题我尝试在小部件类上订阅流,但似乎没有流被发出]
MyApp(){
auth.authStateStream.listen((d){print("$d is data");});
}
这是如何从服务文件中使用Firebase流的方法
Stream<UserModel> get onAuthStateChanged{
return _firebaseAuth.onAuthStateChanged.map(_userFromFirebase);
}
我对AuthStatus流有问题。最初是在工作这就是从服务文件中发射AuthStatus流的方式
//Services file
final StreamController<AuthStatus> _currentAuthStateController =
StreamController<AuthStatus>.broadcast();
Stream<AuthStatus> get authStateStream{
return _currentAuthStateController.stream;
}
void testStremas() {
//Stoast.setMessage("Test Message");
_currentAuthStateController.add(AuthStatus.ACTIVE);
}
这是提供者如何作为MaterialAPP小部件的父项来简化流的方法>>
class MyApp extends StatelessWidget { //I was trying if i my widget could subscribe to the stream MyApp (){ auth.authStateStream.listen((d){print("$d is data");}); } final ToastHelper toast = ToastHelper(); final ThemeHelper theme = ThemeHelper(); final AuthService auth = AuthService(); @override Widget build(BuildContext context) { return MultiProvider( providers: [ StreamProvider<UserModel>.value(value: auth.onAuthStateChanged), StreamProvider<ToastMessage>.value(value: toast.onNewMessage), StreamProvider<AuthStatus>.value( value: auth.authStateStream, initialData: AuthStatus.NONE), ], child: MaterialApp( title: Strings.appName, theme: theme.darkThemeData(), home: Loader(), routes: { 'home': (context) => Home(), }, debugShowCheckedModeBanner: false, ), ); } }
这是通过单击按钮在小部件上调用上述方法的方式
//Widgets file onTap: () => auth.testStremas(),
预期结果应该是AuthStatus从服务文件更改时,应通过提供程序包通知窗口小部件。在此先感谢
Widget _body(BuildContext context) {
final AuthStatus _authStatus = Provider.of<AuthStatus>(context);
return Center(
child: Container(
constraints: BoxConstraints(maxWidth: 300),
child: SingleChildScrollView(
child: Center(
child: _authStatus == AuthStatus.ACTIVE
? Padding(
padding: const EdgeInsets.all(8.0),
child:CircularProgressIndicator(strokeWidth: 2,)
)
: _buildScreen(context),
)),
),
);
}
这最初是在工作,但只是停止了,我无法弄清楚问题出在哪里。我正在提供程序包中的flutter项目上使用流。流从...
我不确定-尝试更改