Flutter Error: StreamProvider requires initialData parameter after null-safety added. StreamProvider<UserModel> from firebase
Flutter Error: StreamProvider requires initialData parameter after null-safety added. StreamProvider<UserModel> from firebase
自从 Flutter 空安全更新后,我的旧代码被破坏了。我设法修复了大部分问题,但这一点仍未解决。
首先是代码:
class _MyAppState extends State<MyApp> {
@override
Widget build(BuildContext context) {
return StreamProvider<MyUser>.value( //initialData required here now
value: AuthService().user,
child: MaterialApp(
home: Wrapper(),
),
);
}
}
这段代码曾经有效,但现在它需要将 initialData 作为参数传递给 StreamProvider。我的“我的用户”class 如下:
// Create custom User Model to get only the uid
class MyUser {
final String uid;
MyUser({required this.uid});
}
我的问题只是我不确定在这种情况下我的 initialData 应该是什么。
我的 AuthService class 基本上是一个 class,具有“使用电子邮件和密码登录”、“使用电子邮件和密码注册”等功能,全部来自 Firebase。像这样:
// Create user object based on FirebaseUser
MyUser _userFromFirebaseUser(User? user) {
return MyUser(uid: user!.uid);
}
// Auth change user stream
Stream<MyUser> get user {
return _firebaseAuth.authStateChanges().map(_userFromFirebaseUser);
}
非常感谢您的帮助!
通过添加 ? 使其可为空在 MyUser 之后,然后您可以将 initialData 设置为 null
class _MyAppState extends State<MyApp> {
@override
Widget build(BuildContext context) {
return StreamProvider<MyUser?>.value(
initialData: null
value: AuthService().user,
child: MaterialApp(
home: Wrapper(),
),
);
}
}
自从 Flutter 空安全更新后,我的旧代码被破坏了。我设法修复了大部分问题,但这一点仍未解决。
首先是代码:
class _MyAppState extends State<MyApp> {
@override
Widget build(BuildContext context) {
return StreamProvider<MyUser>.value( //initialData required here now
value: AuthService().user,
child: MaterialApp(
home: Wrapper(),
),
);
}
}
这段代码曾经有效,但现在它需要将 initialData 作为参数传递给 StreamProvider。我的“我的用户”class 如下:
// Create custom User Model to get only the uid
class MyUser {
final String uid;
MyUser({required this.uid});
}
我的问题只是我不确定在这种情况下我的 initialData 应该是什么。 我的 AuthService class 基本上是一个 class,具有“使用电子邮件和密码登录”、“使用电子邮件和密码注册”等功能,全部来自 Firebase。像这样:
// Create user object based on FirebaseUser
MyUser _userFromFirebaseUser(User? user) {
return MyUser(uid: user!.uid);
}
// Auth change user stream
Stream<MyUser> get user {
return _firebaseAuth.authStateChanges().map(_userFromFirebaseUser);
}
非常感谢您的帮助!
通过添加 ? 使其可为空在 MyUser 之后,然后您可以将 initialData 设置为 null
class _MyAppState extends State<MyApp> {
@override
Widget build(BuildContext context) {
return StreamProvider<MyUser?>.value(
initialData: null
value: AuthService().user,
child: MaterialApp(
home: Wrapper(),
),
);
}
}