Doctor summary (to see all details, run flutter doctor -v):
[v] Flutter (Channel dev, v1.2.0, on Microsoft Windows [Version 10.0.17763.253], locale ru-RU)
[v] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
[v] Android Studio (version 3.3)
[v] VS Code, 64-bit edition (version 1.30.2)
[v] Connected device (1 available)
• No issues found!
Привет!Я изучаю флаттер дома, чтобы создать свое приложение, и столкнулся с непонятностью флаттера - когда я создаю форму с полями в любом виджете на любом маршруте навигатора, я видел перестроение этого маршрута при нажатии на поле формы и при закрытии клавиатуры.Если я удаляю GlobalKey и удаляю GlobalKey - виджет перестраивается при нажатии и скрывается клавиатура до сих пор, и в этой ситуации это не вызывает дискомфорта, но если я хочу наделить форму и эти поля глобальными ключами - при любом взаимодействии с полями, я вижу, что форма разрушает истроить снова и снова.
import 'package:flutter/material.dart';
import 'package:flutter_mobx/flutter_mobx.dart';
import 'package:quich/controllers/user_controller.dart';
import 'package:quich/route/routes.dart';
import 'package:quich/screens/login_screen.dart';
import 'package:quich/screens/splash_screen.dart';
import 'package:quich/store/app_store.dart';
void main() async {
runApp(Quich());
await $store.storage.ready;
var uc = UserController();
var isValid = await uc.isTokenValid(token: 'token');
$store.isAuth = isValid;
$store.isLoading = false;
}
class Quich extends StatefulWidget {
@override
State createState() => _QuichState();
}
class _QuichState extends State {
final controller = TextEditingController();
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Регистрация',
theme: ThemeData(
primarySwatch: Colors.blue,
),
initialRoute: Routes.splash,
routes: {
Routes.splash: (context) => Observer(builder: (_) {
return SplashScreen();
}),
Routes.login: (context) {
print('SUPER PARENT BUILD');
return LoginScreen();
final formKey = GlobalKey();
final fieldKey = GlobalKey();
return Scaffold(
body: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Form(
child: Padding(
padding: const EdgeInsets.all(15.0),
child: TextFormField(
controller: controller,
key: fieldKey
),
),
key: formKey,
),
ButtonBar(
children: [
MaterialButton(
child: Text('Проверка', style: TextStyle(color: Colors.white)),
onPressed: () => Navigator.of(context).pushNamed(Routes.splash),
color: Colors.lightBlue,
)
],
)
],
),
);
}
},
);
}
}
Может ли кто-нибудь помочь мне создать форму с полями с глобальными ключами внутри Navigator - я искал примеры с формами и навигацией, но формы с глобальными ключами в навигаторах не найдены мной;
UPD: Кажется, что редактор кода StackOverflow "ест" определения типов некоторых частей кода.Я прилагаю изображение с кодом, и, пожалуйста, смотрите примеры видео:
Видео 1
Видео 2
Изображение с кодом
Ru-копия этой темы
PS Проблема решена, решение этой проблемы, если вам интересно - можете посмотреть на "PPS""Блок русскоязычной копии этого вопроса: Русская копия