【问题标题】:The getter 'uid' was called on null.Flutter在 null.Flutter 上调用了 getter 'uid'
【发布时间】:2020-05-31 20:40:41
【问题描述】:

我的应用流程是这样的:

包装器->验证->登录

但是当我运行应用程序时,它给了我红屏和这个异常:

    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(),
        ),
    );
  }
}

这里是 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();
       }
}

【问题讨论】:

    标签: firebase flutter dart firebase-authentication


    【解决方案1】:

    可能是因为现在您在测试 if user is == null 之前添加了 print(user.uid);

    把它放在else里面:

    //print(user.uid);
    
    if (user == null) {
      return Authenticate();
    } else {
      print(user.uid);
      return
        Home();
    }
    

    【讨论】:

    • 是的,你是对的,我删除了它并且它有效..谢谢你
    猜你喜欢
    • 2020-07-14
    • 1970-01-01
    • 2021-09-07
    • 2021-08-24
    • 2021-07-27
    • 2021-01-11
    • 2021-12-21
    • 2020-01-10
    • 2020-10-24
    相关资源
    最近更新 更多