Я новичок в том, чтобы трепетать и столкнуться с очень странной проблемой: < /p>
У меня есть простой виджет без сохранности, с пользовательской панелью приложений, затем текстовой формы и кнопки внутри столбца. Я использую GO_ROUTER для навигации. Утилит экрана для размеров Dimen. Проблема в том, что я запустил свои маршруты с экрана Splash, затем входите в систему экрана с Textfield. Происходя на всех устройствах, включая эмулятор Android и физические устройства < /p>
На экране Textfield on Login, если нажал пользователь на 100 мс до 200 мс, появляется клавиатура, а затем скрывается самого себя. < /P>
Я пробую минимальный код, чтобы проверить: < /p>
Я пробую минимальный код: < /p>
< /p>
Я пробую минимальный код: < /p>
@TypedGoRoute(path: '/complaintScreenRoute')
class ComplaintScreenRoute extends GoRouteData {
final String complaintType;
const ComplaintScreenRoute({required this.complaintType});
@override
Widget build(BuildContext context, GoRouterState state) => injector().getComplaintScreenWidget(complaintType);
}
< /code>
это то, как я создаю свой GO_ROUTER. Я предполагаю, что этот экран после того, как вход в систему был выполнен пользователем. Затем приземляется на этом экране: < /p>
Метод сборки содержит: < /p>
Container(color: Colors.yellow,height: 200,width: 200,child:
// FocusDebugOverlay(
// child: TextFormField(
// // focusNode:model. myFocusNode,
// controller: model.myController,
// autofocus: true,
// // onTap: () {
// // Future.delayed(Duration(milliseconds: 100), () {
// // FocusScope.of(context).requestFocus(model.myFocusNode);
// // });
// // },
// ),
// ),
// AutoFocusFixTextField(
// controller: model.myController,
// decoration: const InputDecoration(
// labelText: 'Enter your name',
// ),
// )
TextFormField(
controller: model.myController,
autofocus: true,
)
),
< /code>
Я стараюсь с простым текстовым формированием и автофокусом: True даже автоматически скрываю клавиатуру при загрузке экрана. Поэтому, если пользователь слишком быстро нажимает по поле, или автофокус является верным, шкуры клавиатуры.class BulletproofTextFieldGreat extends StatefulWidget {
final TextEditingController controller;
final bool autofocus;
final FocusNode? focusNode;
final String? hintText;
const BulletproofTextFieldGreat({
super.key,
required this.controller,
this.autofocus = false,
this.focusNode,
this.hintText,
});
@override
State createState() => _BulletproofTextFieldGreatState();
}
class _BulletproofTextFieldGreatState extends State {
late FocusNode _internalFocusNode;
FocusNode get _focusNode => widget.focusNode ?? _internalFocusNode;
@override
void initState() {
super.initState();
_internalFocusNode = FocusNode();
if (widget.autofocus) {
// Delay autofocus until the screen is stable after navigation
WidgetsBinding.instance.addPostFrameCallback((_) {
Future.delayed(const Duration(milliseconds: 300), () {
if (mounted && !_focusNode.hasFocus) {
FocusScope.of(context).requestFocus(_focusNode);
}
});
});
}
}
@override
void dispose() {
if (widget.focusNode == null) {
_internalFocusNode.dispose();
}
super.dispose();
}
@override
Widget build(BuildContext context) {
return TextField(
controller: widget.controller,
focusNode: _focusNode,
decoration: InputDecoration(hintText: widget.hintText),
);
}
}
< /code>
Так что я пытаюсь преодолеть автофокус по умолчанию. Я откладываю поле, чтобы сосредоточиться, если оно сосредоточится на сборке. Но я также проверил, есть ли мой виджет восстанавливается в течение нескольких раз, добавив метод сборки в журнале внедорожника, который показывает только 1 раз. Я добавляю задержку в качестве обходного пути, чтобы, если пользователь нажимает быстро, клавиатура не должна скрываться. /> Я попробовал со всеми полями ввода, такими как Cupertino Textfield, редактируемый текст и т. Д. Flutter SDK обновлен до 3,29,2
с тех пор, как я получил эту проблему на 3.24.0, а затем обновлен до 3,27,4, а затем 3,29,2, но все еще получает проблему. < /p>
flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 3.29.2, on macOS 15.3.2 24D81 darwin-x64, locale en-US)
[✓] Android toolchain - develop for Android devices (Android SDK version 36.0.0)
[✓] Xcode - develop for iOS and macOS (Xcode 16.2)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2023.1)
[✓] Connected device (3 available)
[✓] Network resources
• No issues found!
< /code>
Любой подсказка или решение будут высоко оценены.
заранее < /p>
Подробнее здесь: https://stackoverflow.com/questions/795 ... -textfield
Флэттерное отвержение клавиатуры автоматически при нажатии на текстовое поле ⇐ Android
Форум для тех, кто программирует под Android
1744570311
Anonymous
Я новичок в том, чтобы трепетать и столкнуться с очень странной проблемой: < /p>
У меня есть простой виджет без сохранности, с пользовательской панелью приложений, затем текстовой формы и кнопки внутри столбца. Я использую GO_ROUTER для навигации. Утилит экрана для размеров Dimen. Проблема в том, что я запустил свои маршруты с экрана Splash, затем входите в систему экрана с Textfield. Происходя на всех устройствах, включая эмулятор Android и физические устройства < /p>
На экране Textfield on Login, если нажал пользователь на 100 мс до 200 мс, появляется клавиатура, а затем скрывается самого себя. < /P>
Я пробую минимальный код, чтобы проверить: < /p>
Я пробую минимальный код: < /p>
< /p>
Я пробую минимальный код: < /p>
@TypedGoRoute(path: '/complaintScreenRoute')
class ComplaintScreenRoute extends GoRouteData {
final String complaintType;
const ComplaintScreenRoute({required this.complaintType});
@override
Widget build(BuildContext context, GoRouterState state) => injector().getComplaintScreenWidget(complaintType);
}
< /code>
это то, как я создаю свой GO_ROUTER. Я предполагаю, что этот экран после того, как вход в систему был выполнен пользователем. Затем приземляется на этом экране: < /p>
Метод сборки содержит: < /p>
Container(color: Colors.yellow,height: 200,width: 200,child:
// FocusDebugOverlay(
// child: TextFormField(
// // focusNode:model. myFocusNode,
// controller: model.myController,
// autofocus: true,
// // onTap: () {
// // Future.delayed(Duration(milliseconds: 100), () {
// // FocusScope.of(context).requestFocus(model.myFocusNode);
// // });
// // },
// ),
// ),
// AutoFocusFixTextField(
// controller: model.myController,
// decoration: const InputDecoration(
// labelText: 'Enter your name',
// ),
// )
TextFormField(
controller: model.myController,
autofocus: true,
)
),
< /code>
Я стараюсь с простым текстовым формированием и автофокусом: True даже автоматически скрываю клавиатуру при загрузке экрана. Поэтому, если пользователь слишком быстро нажимает по поле, или автофокус является верным, шкуры клавиатуры.class BulletproofTextFieldGreat extends StatefulWidget {
final TextEditingController controller;
final bool autofocus;
final FocusNode? focusNode;
final String? hintText;
const BulletproofTextFieldGreat({
super.key,
required this.controller,
this.autofocus = false,
this.focusNode,
this.hintText,
});
@override
State createState() => _BulletproofTextFieldGreatState();
}
class _BulletproofTextFieldGreatState extends State {
late FocusNode _internalFocusNode;
FocusNode get _focusNode => widget.focusNode ?? _internalFocusNode;
@override
void initState() {
super.initState();
_internalFocusNode = FocusNode();
if (widget.autofocus) {
// Delay autofocus until the screen is stable after navigation
WidgetsBinding.instance.addPostFrameCallback((_) {
Future.delayed(const Duration(milliseconds: 300), () {
if (mounted && !_focusNode.hasFocus) {
FocusScope.of(context).requestFocus(_focusNode);
}
});
});
}
}
@override
void dispose() {
if (widget.focusNode == null) {
_internalFocusNode.dispose();
}
super.dispose();
}
@override
Widget build(BuildContext context) {
return TextField(
controller: widget.controller,
focusNode: _focusNode,
decoration: InputDecoration(hintText: widget.hintText),
);
}
}
< /code>
Так что я пытаюсь преодолеть автофокус по умолчанию. Я откладываю поле, чтобы сосредоточиться, если оно сосредоточится на сборке. Но я также проверил, есть ли мой виджет восстанавливается в течение нескольких раз, добавив метод сборки в журнале внедорожника, который показывает только 1 раз. Я добавляю задержку в качестве обходного пути, чтобы, если пользователь нажимает быстро, клавиатура не должна скрываться. /> Я попробовал со всеми полями ввода, такими как Cupertino Textfield, редактируемый текст и т. Д. Flutter SDK обновлен до 3,29,2
с тех пор, как я получил эту проблему на 3.24.0, а затем обновлен до 3,27,4, а затем 3,29,2, но все еще получает проблему. < /p>
flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 3.29.2, on macOS 15.3.2 24D81 darwin-x64, locale en-US)
[✓] Android toolchain - develop for Android devices (Android SDK version 36.0.0)
[✓] Xcode - develop for iOS and macOS (Xcode 16.2)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2023.1)
[✓] Connected device (3 available)
[✓] Network resources
• No issues found!
< /code>
Любой подсказка или решение будут высоко оценены.
заранее < /p>
Подробнее здесь: [url]https://stackoverflow.com/questions/79571915/flutter-dismissing-the-keyboard-automatically-when-clicking-the-textfield[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия