В моем проекте я обернул весь MaterialApp
в GestureDetector
, который должен отключать клавиатуру, когда пользователь нажимает на экран, используя этот фрагмент кода
FocusScope.of(context).unfocus()
После тестирования нескольких сценариев ios это не работало, поэтому я решил сделать это неправильно
FocusScope.of(context).requestFocus(FocusNode())
Но теперь у меня возникла другая проблема. Вот мой код для простого экрана, который создается конструктором MaterialApp
routes
.
import 'package:flutter/material.dart';
class TestScreen extends StatefulWidget {
@override
_TestScreenState createState() => _TestScreenState();
}
class _TestScreenState extends State<TestScreen> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Column(
children: <Widget>[
TextFormField(),
FlatButton(
onPressed: () => Navigator.push(context,
MaterialPageRoute(builder: (context) => TestScreen())),
child: Text('Test'))
],
),
);
}
}
Шаги для воспроизведения ошибки: 1-Начать редактирование TextField
. 2-Расфокусируйте TextField
, нажав где-нибудь на экране. 3-Нажмите кнопку, чтобы перейти на другой экран. Это результат:
введите описание изображения здесь
Этого не происходит, когда я пытаюсь расфокусировать TextField
нажатием кнопки «Готово» на клавиатуре. Согласно исходному коду при нажатии кнопки «Готово» TextField
вызывает clearComposing
на TextEditingController
. Я даже пробовал это, но безуспешно. Как я могу это исправить? Есть ли у кого-нибудь еще лучшее решение для обработки отклонения клавиатуры во Flutter?
Также вот мой результат flutter doctor
:
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, v1.17.5, on Mac OS X 10.15.5 19F101, locale en-US)
[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
[✓] Xcode - develop for iOS and macOS (Xcode 11.6)
[✓] Android Studio (version 4.0)
[✓] VS Code (version 1.47.3)
[✓] Connected device (2 available)
• No issues found!