[英]Can we listen to stream value before material app Flutter?
我正在尝试在应用程序启动之前加载启动画面。
当用户点击应用程序时,将加载启动画面。
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
runApp(MyApp());
}
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return StreamBuilder<Users>(
stream: AuthService().user,
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return MaterialApp(home: Splash());
} else {
// Loading is done, return the app:
return MaterialApp(
home: Scaffold(body: Wrapper()),
);
}
},
);
}
}
这是包装器。dart
class Wrapper extends StatelessWidget {
@override
Widget build(BuildContext context) {
final user = Provider.of<Users>(context);
print(user);
//Return either home or authenticate widget
return user == null ? Authenticate() : Home();
}
}
这是飞溅。dart
class Splash extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Container(
width: double.infinity,
height: double.infinity,
color: Colors.black,
child: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
Icon(
Icons.movie,
color: Colors.white,
size: 30,
),
Text(
'Loading App',
style: TextStyle(color: Colors.white, fontSize: 30),
),
],
)),
)),
);
}
}
这是来自 firebase 的 stream:
class AuthService{
final FirebaseAuth _auth = FirebaseAuth.instance;
//Create User object based on FireBase
Users _userFromFirebaseUser(User user) {
return user != null ? Users(uid: user.uid) : null;
}
//auth change user stream
Stream<Users> get user {
return _auth.authStateChanges().map(_userFromFirebaseUser);
}
}
错误:在此 Wrapper Widget 上方找不到正确的Provider<Users>
。 但我在 MyApp class 的 warpper 上方提供了一个 Stream 用户。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.