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
我正在尝试获取用户电子邮件,保存到共享首选项并在另一个文件中用作集合名称。
我要保存的代码
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