【发布时间】:2021-12-07 16:30:35
【问题描述】:
我正在尝试在this playlist 的帮助下创建一个用户系统。但是,它有点过时了,所以我试图跟上今天的步伐。我完全是初学者。我从 stackoverflow 中阅读了few things,但我跟不上。这是它给出的错误:
The argument type 'Stream<MyUser?>' can't be assigned to the parameter type 'Stream<MyUser?>?'.
这是 main.dart:(具体的错误就在“value: AuthService().user”行中。“AuthService().user”部分是红色下划线。)
import 'package:flutter/material.dart';
import 'package:unistuff_main/screens/wrapper.dart';
import 'package:provider/provider.dart';
import 'package:unistuff_main/services/auth.dart';
import 'package:unistuff_main/models/myuser.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return StreamProvider<MyUser?>.value(
initialData: null,
value: AuthService().user,
child: MaterialApp(
home: Wrapper(),
),
);
}
}
这是我的 myuser.dart 文件:
class MyUser {
final String? uid;
MyUser({this.uid});
}
这里是 auth.dart:(如果你注意到我还没有添加任何登录方法。这会导致问题吗?)
import 'package:firebase_auth/firebase_auth.dart';
import 'package:unistuff_main/models/MyUser.dart';
class AuthService {
final FirebaseAuth _auth = FirebaseAuth.instance; //private data member
//create MyUser object based on FirebaseUser
MyUser? _userfromFirebase(User user) {
return user != null ? MyUser(uid: user.uid) : null;
}
//auth change user stream
Stream<MyUser?> get user {
return _auth
.authStateChanges()
.map((User? user) => _userfromFirebase(user!));
}
//sign in with email & password
Future signInWithMail() async {
try {} catch (e) {}
}
//register with email & password
//sign out
}
感谢您的帮助..
【问题讨论】:
-
你好,AuthService().user 返回什么?
-
嗨,对不起。我在帖子中添加了 auth.dart 文件。
标签: firebase flutter dart firebase-authentication