Страница изменения навигатора при нажатии кнопки asyn c - PullRequest
0 голосов
/ 27 февраля 2020

Очень плохо знакомы с Флаттером. Как бы я выбрал sh новый маршрут, основанный на условии, вызванном нажатием кнопки? (асинхронный вход в вызов).

Такие вещи: если signIn (asyn c) = успех -> Navigator.pu sh

Приветствия

Widget buildButtons() {
    return new Container(
      child: new Column(
        children: <Widget>[
          new MaterialButton(
            minWidth: MediaQuery.of(context).size.width - 30, //FULL WIDTH - 30
            color: Style.palette3,
            padding: EdgeInsets.all(Style.padding1),
            child: new Text('Sign in',
                style: Style.signInBtn
            ),
            onPressed: () {
              if (LoginControl.signIn()) Navigator.push(context, MaterialPageRoute(builder: (context) => ArmDisarm()));
            },
          ),
          new FlatButton(
            child: Padding(
              padding: Style.paddingCreateAcc,
              child: new Text(
                  'Create an account',
                  style: Style.fontSize1
              ),
            ),
          ),
        ],
      ),
    );
  }

1 Ответ

1 голос
/ 27 февраля 2020

Лучше показать нам код LoginControl.signIn().

В любом случае, если signIn() - это Future, тогда вы должны использовать async await

...
onPressed: () async {
  if (await LoginControl.signIn()) {
    Navigator.push(context, MaterialPageRoute(builder: (context) => ArmDisarm()));
  }
},
...

Убедитесь, что signIn() метод возвращает true, если пользователь успешно вошел в систему.

...