Проблемы с оформлением заказа в магазине Fire Flutter - PullRequest
0 голосов
/ 31 декабря 2018

Я новичок во Флаттере, поэтому, пожалуйста, потерпите меня.Поэтому мне нужно получить объект User из Firestore немедленно, как только я попаду на домашнюю страницу.Проблема заключается в том, что в настоящее время я пытаюсь получить пользователя в функции initState (), и функция сборки (для которой требуется пользовательский объект) запускается до получения объекта пользователя, вызывая исключение.

Здесьмой пользователь выбирает код в initState ()

//get user object
StreamBuilder<DocumentSnapshot>(
  stream: Firestore.instance
      .collection("users")
      .document(widget.uid)
      .snapshots(),
  builder:
      (BuildContext context, AsyncSnapshot<DocumentSnapshot> snapshot) {
    setState(() {
      user = snapshot.data.data as User;
    });

  },
);

ТАКЖЕ, я только что понял, что этот код никогда не попадает в блок setState.Не знаю почему.Я знаю, что поток Firestore ref правильный.Любые рекомендации о том, как реорганизовать мой код?Спасибо!

1 Ответ

0 голосов
/ 31 декабря 2018

использовать построитель потоков в качестве виджета непосредственно внутри функции builds.

  StreamBuilder<DocumentSnapshot>(
      stream: Firestore.instance
          .collection("users")
          .document(widget.uid)
          .snapshots(),
      builder:
          (BuildContext context, AsyncSnapshot<DocumentSnapshot> snapshot) {
            return Text(snapshot.data.data.userName); // example
      },
    );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...