我正在开发一个 flutter auth 应用程序,同时尝试注销我收到一个错误,类型 null 不能分配给参数类型。
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';
import 'package:time_tracker_app/app/home_page.dart';
import 'package:time_tracker_app/app/sign_in/sign_in_page.dart';
class LandingPage extends StatefulWidget {
@override
_LandingPageState createState() => _LandingPageState();
}
class _LandingPageState extends State<LandingPage> {
FirebaseUser? _user;
void _updateUser(FirebaseUser user) {
setState(() {
_user = user;
});
}
@override
Widget build(BuildContext context) {
if (_user == null) {
return SignInPage(onSignIn: _updateUser);
}
return HomePage(
//error
onSignOut: () => _updateUser(null),
);
}
}
答案 0 :(得分:0)
遇到同样的问题,我尝试稍微改变逻辑,使用 user.uid 作为 String 而不是所有 User 类(我知道这不是最“性感”的解决方案,但它有效到底...)。 我是 Flutter 的新手,所以我相信会有更好的解决方案。希望能帮到你。
class LandingPage extends StatefulWidget {
LandingPage({Key? key}) : super(key: key);
@override
_LandingPageState createState() => _LandingPageState();
}
class _LandingPageState extends State<LandingPage> {
String? _userId = '';
void _updateUser(String userId) {
print('User id: $userId');
setState(() {
_userId = userId;
});
}
@override
Widget build(BuildContext context) {
if (_userId == '') {
return SignInPage(
onSignIn: (user) => _updateUser(user.uid),
);
} else {
return HomePage(
onSignOut: () => _updateUser(''),
);
}
}
}
答案 1 :(得分:0)
在 FirebaseAuth.instance.signOut() 之后获取具有 User(Firebase) 返回类型的当前用户并作为参数传递..
//示例代码
FirebaseAuth.instance.signOut;
FirebaseAuth.instance.currentUser;
onSignOut(FirebaseAuth.instance.currentUser);