【发布时间】:2021-03-09 16:54:57
【问题描述】:
我正在尝试从 Firebase 获取 uid 并将其放入一个变量中,以便在另一个类中使用它,但到目前为止我所做的最大值是将主页中的值显示为文本。当我尝试在主页中创建final String riderId = snapshot.data.uid; 时,它会打印错误:
在 null 上调用了 getter 'uid'。 接收方:空 尝试调用:uid
我已经在 youtube 上的 stackoverflow 和教程中看到了其他问题,但没有一个对我有用!
我的主页:
class HomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
// print(riderId);
return StreamBuilder(
stream: AuthenticationService().authStateChanges,
builder: (BuildContext context, AsyncSnapshot<User> snapshot) {
// final String riderId = snapshot.data.uid;
if (snapshot.hasData) {
return Center(
child: Text(snapshot.data.uid),
);
} else {
return Text('Loading...');
},},);}}
我的登录按钮
RaisedButton(
onPressed: () {
context.read<AuthenticationService>().signIn(
email: emailController.text.trim(),
password: passwordController.text.trim(),
);
},
child: Text("Sign in"),
),
我的 main.dart
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MultiProvider(
providers: [
Provider<AuthenticationService>(
create: (_) => AuthenticationService(),
),
StreamProvider(
create: (context) =>
context.read<AuthenticationService>().authStateChanges,
)
],
child: MaterialApp(...
我的认证服务页面
class AuthenticationService {
final FirebaseAuth _firebaseAuth = FirebaseAuth.instance;
Stream<User> get authStateChanges => _firebaseAuth.idTokenChanges();
Future<UserModel> signIn({String email, String password}) async {
var result = await _firebaseAuth.signInWithEmailAndPassword(
email: email, password: password);
return UserModel(result.user.uid);
}
}
【问题讨论】:
标签: firebase flutter dart firebase-authentication uid