Как перейти на другую страницу при загрузке во флаттере - PullRequest
0 голосов
/ 27 ноября 2018

Я хочу перейти на страницу входа, если нет зарегистрированного пользователя, в противном случае отобразить домашнюю страницу.Я думал об условном вызове Navigator.of(context).push() внутри метода сборки, но это вызывает исключение.Есть ли какой-то метод, который мне не хватает, который я могу переопределить?

Обновление для добавления виджета на главную страницу

class HomePage extends StatelessWidget {
final AppUser user;

const HomePage({Key key, this.user}) : super(key: key);

@override
Widget build(BuildContext context) {
return Scaffold(
    appBar: AppBar(
      title: Text('Rera Farm'),
      actions: <Widget>[
        PopupMenuButton(
          itemBuilder: (BuildContext context) {
            return <PopupMenuEntry>[
              PopupMenuItem(
                child: ListTile(
                  title: Text('Settings'),
                  onTap: () {
                    Navigator.pop(context);
                    Navigator.push(context,
                        MaterialPageRoute(builder: (BuildContext context) 
                      => SettingsPage()
                    ));
                  },
                ),
              ),
            ];
          },
        )
      ],
    ),
    body: _buildBody(context));
}

и контейнера

class HomePageContainer extends StatelessWidget {
@override
Widget build(BuildContext context) {
 return new StoreConnector<AppState, _ViewModel>(
   converter: _ViewModel.fromStore,
   builder: (BuildContext context, _ViewModel vm) {
     return HomePage(
      user: vm.user,
     );
   },
 );
 }
}

1 Ответ

0 голосов
/ 27 ноября 2018

Вам нужно либо использовать троицу в onTap, если вы используете кнопку настроек, либо, если вы хотите, чтобы она автоматически отправляла пользователя на нужную страницу при запуске приложения, вы можете поместить троицу в MyApp.метод построения.

Если вы используете кнопку настроек и просто хотите, чтобы она вернулась на предыдущую страницу, если человек не вошел в систему, то вы можете изменить NotLoggedIn () на всплывающее.

По какой-то странной причине SO отказывается публиковать код, когда он правильно отформатирован с четырьмя пробелами, именно так, как он просит, поэтому я просто собираюсь сделать суть.

https://gist.github.com/ScottS2017/3288c7e7e9a014430e56dd6be4c259ab

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...