Как перейти на другую страницу во FlutterAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как перейти на другую страницу во Flutter

Сообщение Anonymous »


Я пытаюсь создать приложение во Flutter на Android. У меня есть код LoginPage, но я не знаю, как перейти на домашнюю страницу...

Я попробовал: Navigator.of(context).push(MaterialPageRoute(builder: (context) => HomePage())); но я получил сообщение об ошибке "тип 'Future' не является подтипом типа '(() => динамический)?'"

Можете ли вы посоветовать, как это правильно сделать?

Код выглядит следующим образом:

класс LoginPage расширяет StatelessWidget { LoginPage({super.key}); окончательный emailController = TextEditingController(); окончательный парольКонтроллер = TextEditingController(); void SignUserIn() асинхронный { пытаться{ Ответ ответ = ожидайте сообщения( Uri.parse('https://www.somepage.com/login.php'), тело: { 'электронная почта': emailController.text, 'пароль': парольController.text } ); если (response.statusCode == 200) { var data = jsonDecode(response.body.toString()); если (данные ['успех'] == 1) { печать (данные ['сообщение']); SharedPreferences prefs = ждут SharedPreferences.getInstance(); prefs.setString('электронная почта', emailController.text); prefs.setString('токен', данные['токен']); // ---> здесь я хотел бы перейти на домашнюю страницу } еще { печать (данные ['статус']); печать (данные ['сообщение']); } }еще { print('Не удалось войти в систему...'); печать(response.statusCode); } }поймать(е){ печать(e.toString()); } } @переопределить Сборка виджета (контекст BuildContext) { вернуть эшафот( Цвет фона: Colors.grey[300], тело: SafeArea( ребенок: Центр( дочерний элемент: SingleChildScrollView( ребенок: Столбец( mainAxisAlignment: MainAxisAlignment.center, дети: [ const SizedBox (высота: 25), константный значок( Иконки.блокировка, размер: 100, ), const SizedBox (высота: 25), Текст( 'Витами поноуни!', стиль: TextStyle( цвет: Colors.grey[700], Размер шрифта: 16, ), ), const SizedBox (высота: 25), Моетекстовое поле( контроллер: emailController, подсказка: 'Электронная почта', неясныйтекст: ложь, ), const SizedBox (высота: 10), Моетекстовое поле( контроллер: парольконтроллер, подсказкаТекст: 'Хасло', obscureText: правда, ), const SizedBox (высота: 10), константное дополнение( отступ: EdgeInsets.symmetric(по горизонтали: 25,0), ребенок: Строка( mainAxisAlignment: MainAxisAlignment.end, дети: [ Текст( 'Nie pamiętasz hasła?', стиль: TextStyle (цвет: Colors.blue, fontWeight: FontWeight.bold), ), ], ), ), const SizedBox (высота: 20), МояКнопка( onTap: SignUserIn, ), const SizedBox (высота: 30), Заполнение( отступ: const EdgeInsets.symmetric(по горизонтали: 25,0), ребенок: Строка( дети: [ Расширенный( дочерний: Разделитель( толщина: 0,5, цвет: Colors.grey[400], ), ), Заполнение( отступ: const EdgeInsets.symmetric(по горизонтали: 25,0), ребенок: Текст( 'Albo kontynuuj z', стиль: TextStyle(цвет: Colors.grey[700]), ), ), Расширенный( дочерний: Разделитель( толщина: 0,5, цвет: Colors.grey[400], ), ), ], ), ), const SizedBox (высота: 30), константная строка( mainAxisAlignment: MainAxisAlignment.center, дети: [ SquareTile(imagePath: 'lib/images/google.png'), SizedBox(ширина: 10), SquareTile(imagePath: 'lib/images/apple.png') ], ), const SizedBox (высота: 30), Ряд( mainAxisAlignment: MainAxisAlignment.center, дети: [ Текст( 'Nie maz konta?', стиль: TextStyle(цвет: Colors.grey[700]), ), const SizedBox (ширина: 4), константный текст( 'Зарееструй сень', стиль: TextStyle (цвет: Colors.blue, fontWeight: FontWeight.bold), ), ], ) ], ), ), ), ), ); } } и код домашней страницы (никакой логики, пока только для тестирования):
класс HomePage расширяет StatelessWidget { Домашняя страница({супер.ключ}); void SignUserOut() асинхронный { SharedPreferences prefs = ждут SharedPreferences.getInstance(); prefs.remove('электронная почта'); prefs.remove('токен'); } @переопределить Сборка виджета (контекст BuildContext) { вернуть эшафот( Цвет фона: Colors.grey[300], AppBar: AppBar( Цвет фона: Colors.grey[900], действия: [ ЗначокКнопка( onPressed: SignUserOut, значок: Значок (Icons.logout), ) ], ), тело: Центр( ребенок: Текст( "ТЕСТ", стиль: TextStyle (fontSize: 20), )), ); } }
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»