1-) FLUTTER - keyboard visibility listener klavye açıkmı kapalımı otomatik kapatma automatic close hide kullanımı
01.09.2024
bool isKeyboardVisible = false; bool wasKeyboardVisible = false; @override void dispose() { WidgetsBinding.instance.removeObserver(this); super.dispose(); } @override void initState() { super.initState(); WidgetsBinding.instance.addObserver(this); } @override void didChangeMetrics() { super.didChangeMetrics(); final bottomInset = WidgetsBinding.instance.window.viewInsets.bottom; isKeyboardVisible = bottomInset > 0;
// Klavye açıldığında bir kez çalıştır if (isKeyboardVisible && !wasKeyboardVisible) { solidController.hide(); print(isKeyboardVisible.toString() + " klavye açıldı"); }
// Klavye kapandığında bir kez çalıştır if (!isKeyboardVisible && wasKeyboardVisible) { print(isKeyboardVisible.toString() + " klavye kapandı"); }
// Önceki klavye durumunu güncelle wasKeyboardVisible = isKeyboardVisible; } |
How To Dismiss The Keyboard [2021] On Tap, On Scroll
ios da klavyenin otomatik kapanması için kaynak : https://youtu.be/SftssVoNB5Y
klavyenin otomatik kapanması için herhangi bir olaydan sonra bu komutu tetikleyerek kapatabilirsin
FocusManager.instance.primaryFocus?.unfocus();
örnek :
InkWell(
onTap: (){
FocusManager.instance.primaryFocus?.unfocus();
},
Listview veya SingleChildScrollView için :
body: ListView(
keyboardDismissBehavior: ScrollViewKeyboardDismissBehavior.onDrag
***************DİĞER*******************
flutter pub add flutter_keyboard_visibility
1-) pubspec.yaml
flutter_keyboard_visibility: ^5.3.0
2-) kodlar
@override void initState() { // TODO: implement initState super.initState();
var keyboardVisibilityController = KeyboardVisibilityController(); keyboardSubscription = keyboardVisibilityController.onChange.listen((bool visible) { print('Keyboard visibility update. Is visible: $visible'); }); } late StreamSubscription<bool> keyboardSubscription; @override void dispose() { keyboardSubscription.cancel(); super.dispose(); }
|
kaynak : https://pub.dev/packages/flutter_keyboard_visibility
3-) diğer (klavye açıldığında scrolu en aşağı almak)
@override void initState() { // TODO: implement initState super.initState();
scrollController = new ScrollController();
var keyboardVisibilityController = KeyboardVisibilityController(); keyboardSubscription = keyboardVisibilityController.onChange.listen((bool visible) { if(visible){ timerSayac=0; toBottom(); }else{ timerSayac=5; } }); }
late StreamSubscription<bool> keyboardSubscription; @override void dispose() { keyboardSubscription.cancel(); super.dispose(); }
int timerSayac=0;
late ScrollController scrollController;
void toBottom() { final periodicTimer = Timer.periodic( const Duration(milliseconds: 200), // 200 (timer) { timerSayac++;
scrollController.animateTo( scrollController.position.maxScrollExtent, curve: Curves.easeOut, duration: const Duration(milliseconds: 500), // 500 );
if(timerSayac>=5){ timer.cancel(); } }, ); } // aşağıdaki gibi controller verebilirsin SingleChildScrollView( controller: scrollController, |