🙂 İNSANLARIN EN HAYIRLISI INSANLARA FAYDALI OLANDIR 🙂

Ramazan HABER / FLUTTER / keyboard visibility listener klavye açıkmı kapalımı otomatik kapatma automatic close hide kullanımı

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,

 

 

 

 

 2024 Eylül 01 Pazar
 610