Firebase Flutter 无法将我的字符串识别为参数

Firebase Flutter Does Not Recognize My String as Parameter

我正在尝试获取用户电子邮件,保存到共享首选项并在另一个文件中用作集合名称。

我要保存的代码

Future<void> saveEmail() async {
var sharedPreferences = await SharedPreferences.getInstance();
sharedPreferences.setString("email", _emailKontroller.text);}

这里没问题,我可以将数据保存到 sharedPreferences 并从另一个文件读取数据。

我要阅读的代码

  @override
void initState() {
// TODO: implement initState
void initilaizeEmail() async {
  var sharedPreferences = await SharedPreferences.getInstance();
  _email = sharedPreferences.getString("email");
  print(_email);
}

initilaizeEmail();
setState(() {});

}

输出

I/flutter ( 3274): a@a.com

我将 sharedPreferences 数据用作参数的地方:

 query: FirebaseFirestore.instance
        .collection("test")
        .doc("$_email")
        .collection("class 0"),
    // to fetch real-time data
    isLive: false,

我在屏幕上看不到任何东西,但是,如果我删除

_email

然后手动输入“a@a.com”一切works.What是问题吗?

问题是 initilaizeEmail 是一个 async 方法,您没有等待它的结果。要解决此问题:

await initilaizeEmail();

我还建议将方法的名称固定为 initializeEmail。虽然它不会改变行为,但拼写错误往往会分散其他问题的注意力。

我使用

解决了我的问题

Future Builder