Флэттерное отвержение клавиатуры автоматически при нажатии на текстовое полеAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Флэттерное отвержение клавиатуры автоматически при нажатии на текстовое поле

Сообщение Anonymous »

Я новичок в том, чтобы трепетать и столкнуться с очень странной проблемой:
У меня есть простой виджет без сохранности с пользовательской панелью приложений, затем кнопка Textformfield и кнопка в столбце . Я использую GO_ROUTER для навигации. Утилит экрана для размеров Dimen. Проблема в том, что я запустил свои маршруты с экрана Splash, затем входите в систему экрана с Textfield. Встречается на всех устройствах, включая эмулятор Android и физические устройства
На экране Textfield on Login, если он нажимает пользователь в 100 мс к 200 мс , клавиатура появляется, а затем скрывается самого самого.

Код: Выделить всё

@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:
TextFormField(
controller: model.myController,
autofocus: true,
)
),
Я стараюсь с простой текстовой формой и автофокусом: 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 раз. Я добавляю задержку в качестве обходного пути, чтобы, если пользователь быстро нажимает, клавиатура не должна скрываться. Сам.
Я попробовал со всеми полями ввода, такими как Cupertinotextfield 
, редактируемый текст и т. Д. /> Кроме того, я попробовал свой 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
Ответить

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

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

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

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

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