簡體   English   中英

在 null-Flutter/Firebase 上調用了 getter 'email'

[英]The getter 'email' was called on null-Flutter/Firebase

我是 flutter 的新手,需要一小段代碼的幫助。 雖然我的代碼有效,但它首先顯示錯誤/紅屏(毫秒)。 當我以這種方式獲得登錄用戶的 email 時: this._user?.email,它顯示:

必須向 Text 小部件提供非空字符串。 斷言失敗:“數據!= null”

當我以這種方式獲得 email 時: _user.email,它顯示:

在 null 上調用了 getter 'email'。

接收器:null

嘗試調用:email

請建議如何拋出和捕獲此異常或解決此問題。 任何形式的幫助都將受到高度贊賞,並歡迎提出意見。 我的完整代碼在這里:

class MyAccountSetting extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: AccountSetting(),
    );
  }
}

class AccountSetting extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    return new AccountSettings();
  }
}

class AccountSettings extends State<AccountSetting> {
  final FirebaseAuth _auth = FirebaseAuth.instance;
  FirebaseUser _user;

  @override
  void initState() {
    super.initState();
    initUser();
  }
  initUser() async {
    _user = await _auth.currentUser();
    setState(() {});
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: SingleChildScrollView(
        child: Column(
            crossAxisAlignment: CrossAxisAlignment.start,
            children: <Widget>[
              Container(
                margin: const EdgeInsets.only(top: 10.0),
              ),
              Row(
                mainAxisAlignment: MainAxisAlignment.start,
                children: <Widget>[
                  IconButton(
                    icon: Icon(Icons.mail),
                    iconSize: 30,
                    onPressed: () {},
                  ),
                  Text(
                    _user.email,
//                    this._user?.email,
                    style: TextStyle(fontSize: 18),
                  ),
                ],
              ),
            ]
        ),
      ),
    );
  }
}

在等待用戶被檢索時,您想顯示什么? 例如,如果您想顯示一個空字符串 ( '' ),您可以編寫如下內容:

_user == null ? '' : _user.email

甚至更短:

_user?.email ?? ''

這樣,如果_user是 null,您將顯示一個空字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM