首页 > 解决方案 > Flutter Authentication signOut - uid 被称为空错误

问题描述

我正在使用身份验证注销应用程序,但我仍然收到 uid null 错误

这是我的 signOut 方法

 Future<bool> signOut() async {
try {
  await _auth.signOut(); 
  _user = null;
  return true;
} catch (e) {
  return false;
}

}

这是我的小部件。我可以成功注销,但是当切换到下一页时,它会给出 uid 错误并切换

actions: <Widget>[
        PopupMenuButton<String>(
          onSelected: (value) async {
            switch (value) {
              case 'Çıkış Yap':
               //problem here
                var  provider =  Provider.of<AuthServices>(context, listen: false);
                await provider.signOut(); 
                 Navigator.pushReplacement(context,
                    MaterialPageRoute(builder: (context) => GirisEkrani()));
                break;
              case 'Profil Ayarları':
                Navigator.push(
                    context,
                    MaterialPageRoute(
                        builder: (context) => ProfilGuncellemeEkrani()));
                break;
            }
          },
          itemBuilder: (BuildContext context) {
            return {'Profil Ayarları', 'Çıkış Yap'}.map((String choice) {
              return PopupMenuItem<String>(
                value: choice,
                child: Text(choice),
              );
            }).toList();
          },
        ),
      ],

错误在 null 上调用了 getter 'uid'。接收方:null 尝试调用:uid

标签: firebaseflutterfirebase-authenticationflutter-provider

解决方案


看起来您正在使用小部件uid中的用户GirisEkrani

uid由于用户已经注销并且您已将_user提供程序中的变量设置为 null ,因此您应该删除对其中的任何引用。


推荐阅读