Firebase 吸气剂';uid';被调用为空。颤振
我的应用程序流程如下所示: 包装器->身份验证->登录 但当我运行该应用程序时,它会给我一个红色屏幕和一个例外:Firebase 吸气剂';uid';被调用为空。颤振,firebase,flutter,dart,firebase-authentication,Firebase,Flutter,Dart,Firebase Authentication,我的应用程序流程如下所示: 包装器->身份验证->登录 但当我运行该应用程序时,它会给我一个红色屏幕和一个例外: The following NoSuchMethodError was thrown building Wrapper(dirty, dependencies: [InheritedProvider<User>], state: _WrapperState#fd39b): The getter 'uid' was called on null. Receiver:
The following NoSuchMethodError was thrown building Wrapper(dirty, dependencies: [InheritedProvider<User>], state: _WrapperState#fd39b):
The getter 'uid' was called on null.
Receiver: null
Tried calling: uid
生成包装时引发了以下NoSuchMethodError(脏,依赖项:[InheritedProvider],状态:_WrapperState#fd39b):
对null调用了getter“uid”。
收件人:空
已尝试呼叫:uid
我以前运行过它,它运行得很好,但我不知道为什么现在它会显示此异常:
The following NoSuchMethodError was thrown building Wrapper(dirty, dependencies: [InheritedProvider<User>], state: _WrapperState#fd39b):
The getter 'uid' was called on null.
Receiver: null
Tried calling: uid
主要内容如下:
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return StreamProvider<User>.value(
value: AuthService().user,
child: MaterialApp(
title: 'Sayarty',
debugShowCheckedModeBanner: false,
theme: ThemeData(
primarySwatch: Colors.green,
visualDensity: VisualDensity.adaptivePlatformDensity,
),
home: Wrapper(),
),
);
}
}
类MyApp扩展了无状态小部件{
//此小部件是应用程序的根。
@凌驾
小部件构建(构建上下文){
返回StreamProvider.value(
值:AuthService()。用户,
孩子:MaterialApp(
标题:“Sayarty”,
debugShowCheckedModeBanner:false,
主题:主题数据(
主样本:颜色。绿色,
视觉密度:视觉密度。自适应平台密度,
),
主:Wrapper(),
),
);
}
}
下面是包装器类:
class Wrapper extends StatefulWidget {
@override
_WrapperState createState() => _WrapperState();
}
class _WrapperState extends State<Wrapper> {
int _currentTab = 1;
final _page = [
Search(),
Home(),
Account(),
];
@override
Widget build(BuildContext context) {
final user = Provider.of<User>(context);
print(user.uid);
if (user == null) {
return Authenticate();
} else {
return
// Home();
}
}
类包装器扩展StatefulWidget{
@凌驾
_WrapperState createState()=>\u WrapperState();
}
类_包装器状态扩展状态{
int _currentTab=1;
最后一页=[
搜索(),
Home(),
帐户(),
];
@凌驾
小部件构建(构建上下文){
最终用户=提供者(上下文);
打印(user.uid);
if(user==null){
返回Authenticate();
}否则{
返回
//Home();
}
}
可能是因为现在您在测试之前添加了print(user.uid);
如果user=null
将其放在else中:
//print(user.uid);
if (user == null) {
return Authenticate();
} else {
print(user.uid);
return
Home();
}
是的,你是对的,我删除了它,它成功了。谢谢