【发布时间】:2020-09-29 07:04:13
【问题描述】:
我有两个流,我需要在应用方面使用它们的数据。
我的主要障碍是其中一个流需要另一个流的数据,因此,我不能调用MultiProvider。
我当前的实现如下所示,但我不喜欢它:我认为返回多个 MaterialApp 是不行的。实际上,当从一个 MaterialApp 更改为另一个时,我的应用会变黑一段时间。
这是我当前的实现:
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return StreamProvider<User>.value( //First, listen to the User Stream here
value: AuthService().user,
child: MyMaterialApp(),
);
}
}
class MyMaterialApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
final user = Provider.of<User>(context); //To get the user data here, and use it bellow
if (user == null){ //If I don't have the User yet, return Loading()
return MaterialApp(
debugShowCheckedModeBanner: false,
title: "myApp",
theme: myTheme(),
home: Loading(),
);
} else {
return StreamProvider<UserData>.value(
value: DatabaseService(uid: user.uid).userData, //Once I have it, use it to build the UserData Stream
child: MaterialApp(
debugShowCheckedModeBanner: false,
title: "myApp",
theme: myTheme(),
home: Wrapper(),
initialRoute: '/',
routes: {
'/home': (context) => Wrapper(),
//...
}
),
);
}
}
}
非常感谢!
【问题讨论】:
标签: firebase flutter dart stream