Как заставить флаттер показывать разные экраны в зависимости от того, существуют ли документы пожарного депо? - PullRequest
0 голосов
/ 07 апреля 2020

Я довольно новичок во флаттере и разрабатываю приложение, которое требует от пользователя входа в систему. После того, как пользователи зарегистрировали учетную запись, они должны будут заполнить некоторую информацию о пользователе, прежде чем перейти на домашний экран. Если пользователь регистрирует учетную запись, однако не вводит свои данные при следующем входе в систему, он должен быть возвращен на этот экран. В настоящее время существует поток, который отслеживает значение пользователя. Если это значение равно нулю, то оно показывает страницу входа в систему, в противном случае будет отображаться домашняя страница.

У меня проблемы с реализацией экрана информации о пользователе. Будет ли настройка потока, который просматривает документ пожарного хранилища и, если документ существует, возвращать домашнюю страницу, в противном случае показывать экран информации пользователя будет лучшим способом, и если да, то как мне go сделать это?

Вот мой код, который проверяет, вошел ли пользователь в систему:

Widget build(BuildContext context) {

     return StreamProvider<User>.value(
       value: AuthService().user,
       child: MaterialApp(
      home: SignedIn(),
     )
     );
  }

И код для виджета SignedIn ():

    Widget build(BuildContext context) {

    final user = Provider.of<User>(context);

     if (user == null) {
      return Authenticate();
    } else {
        return Home();
    }
  }

1 Ответ

0 голосов
/ 07 апреля 2020

Я бы, наверное, попробовал что-то подобное.

StreamSubscription _subscription;

_subscription = yourStream.listen((data) {
  // navigate to whatever screen depending on the data
  if(data.signedIn){
    Navigator.pushNamed(context, "whatever_route"); 
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...