Комментарии 8
Так MediaQuery.of(context)
все равно ж вызовет build, если значение изменится. Проще тогда создать виджет-обертку, который будет прокидывать это значение. При желании, можно и в стрим завернуть.
Но главное не это, делать выводы об открытой/закрытой клавиатуре на основании viewInsets
– очень плохая идея. Во-первых, viewInsets
определяет "the parts of the display that are completely obscured by system UI, typically by the device's keyboard", т.е. это может быть и не клавиатура в общем случае – получаем ложно-положительное срабатывание. Может быть и ложно-отрицательное – попробуйте в iOS сделать floating keyboard, клавиатура будет на экране, а viewInsets.bottom
будет 0.
Вопросы не по теме, но раз вы работаете с этим, может ответите:
Собирает ли google данные телеметрии с приложений которые работают на flutter?
hello world на flutter по прежнем занимает 5Mb?
Появилась ли возможность собрать desktop приложение?
Есть ли проблемы с тормозами при срабатывании garbage collector?
Вопрос не очень понятен. Что именно они собирать могут?
«hello world на flutter по прежнем занимает 5Mb?»
Давно не смотрел, но точно не меньше.
«Появилась ли возможность собрать desktop приложение?»
Да, пока далеко не в стабильном канале, но есть.
«Есть ли проблемы с тормозами при срабатывании garbage collector?»
Нет.
У меня в проекте тоже плотно используется keyboard_visibility. Почему то работает :)
• Flutter version 1.22.4 at /Users/macbook/development/flutter
• Framework revision 1aafb3a8b9 (7 days ago), 2020-11-13 09:59:28 -0800
• Engine revision 2c956a31c0
• Dart version 2.10.4
[!] Android toolchain — develop for Android devices (Android SDK version 30.0.2)
• Android SDK at /Users/macbook/Library/Android/sdk
• Platform android-30, build-tools 30.0.2
• Java binary at: /Applications/Android Studio 4.2 Preview.app/Contents/jre/jdk/Contents/Home/bin/java
• Java version OpenJDK Runtime Environment (build 11.0.8+10-b944.6842174)
✗ Android license status unknown.
Run `flutter doctor --android-licenses` to accept the SDK licenses.
See flutter.dev/docs/get-started/install/macos#android-setup for more details.
[✓] Xcode — develop for iOS and macOS (Xcode 12.1)
• Xcode at /Applications/Xcode.app/Contents/Developer
• Xcode 12.1, Build version 12A7403
• CocoaPods version 1.9.3
В статье и в репозитории
void removeAtChangeListener(String id) {
_removeAtListener(_changeListeners, id);
}
void removeAtShowListener(String id) {
_removeAtListener(_changeListeners, id);
}
void removeAtHideListener(String id) {
_removeAtListener(_changeListeners, id);
}
Flutter. Слушатель клавиатуры без платформенного кода