Я пытаюсь получить электронную почту пользователя, сохранить в общих настройках и использовать в качестве имени коллекции в другом файле.
мой код для сохранения
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(() {});
}
выход
Я/флаттер ( 3274): a@a.com
где я использую в качестве параметра свои данные sharedPreferences:
query: FirebaseFirestore.instance
.collection("test")
.doc("$_email")
.collection("class 0"),
// to fetch real-time data
isLive: false,
Я ничего не вижу на экране, но если я удалю
_Эл. адрес
и набери "a@a.com" вручную все работает. В чем проблема?
Решение проблемы
Проблема в том, что initilaizeEmail
это async
метод, и вы не ждете его результата. Чтобы исправить это:
await initilaizeEmail();
Я также рекомендую исправить имя метода на initializeEmail
. Хотя это не изменит поведение, орфографические ошибки, как правило, отвлекают от других проблем.
Комментариев нет:
Отправить комментарий