Я настраиваю AccountKit на базовом шаблоне приложения, над которым я работаю. Пример, который я использовал, предоставлен плагином AccountKit для Flutter .
Теперь, это работает отлично до сих пор.
Что я делаю, так это использую OnTap на экране входа в систему, чтобы перевести пользователя в пример реализации плагина (account-kit.dart в моем файле).
onTap: () {
Navigator.of(context).push(
// MaterialPageRoute(builder: (context) => MessagesScreen()),
MaterialPageRoute(builder: (context) => AccountKit()),
);
},
Затем на странице account-kit.dart генерируется виджет, в котором есть кнопка, которую необходимо нажать, чтобы выполнить метод Future<void> login() async{...}
.
Это создает проблему, из-за которой мои пользователи теперь видят ненужный экран между переходом от моего логина к флаттеру. Это так:
- Мой экран входа в систему
- Пример экрана входа в приложение
- AccountKit Логин (обязательно)
- Вернуться к примеру экрана входа приложения
- Навигация на экран сообщений ()
Это немного неуклюже, поэтому я с нетерпением жду полного избавления от шага 2 и шага 4.
Так что это будет означать, что я нажму кнопку login
на LoginScreen()
. Затем перейдите к методу loginkit.dart в методе login (), и он будет выполнен, и он напрямую приведет меня к MessagesScreen()
.
Но, если я ничего не верну на Widget build(BuildContext context) {}
и только выполню login()
внутри, я столкнусь с ошибками.
Итак, как лучше всего избавиться от этих ненужных элементов на этом экране?
@override
Widget build(BuildContext context) {
return new MaterialApp(
home: new Scaffold(
body: new Center(
child: RaisedButton(
padding: EdgeInsets.all(0.0),
color: _state == 2 ? Colors.green : Colors.blue,
elevation: 2.0,
splashColor: Colors.blueGrey,
child: buildButtonChild(),
onPressed: _isInitialized ? this.login : null,
),
),
),
);
}
Widget buildButtonChild() {
if (_state == 0) {
return Text(
'Login',
style: TextStyle(color: Colors.white, fontSize: 16.0),
);
} else if (_state == 1) {
return SizedBox(
height: 24.0,
width: 24.0,
child: CircularProgressIndicator(
value: null,
valueColor: AlwaysStoppedAnimation<Color>(Colors.white),
));
} else {
return Icon(Icons.check, color: Colors.white);
}
}
Вы можете найти полный код соответствующих трех страниц вниз по адресу ЭТО GIT GIST .
На изображении ниже показаны ненужные загружаемые экраны. Я просто хочу, чтобы они не появлялись (2-й и 3-й экран с дополнительной кнопкой входа в систему).