MIF_E31222656/lib/utils/keyboard_utils.dart

31 lines
1.0 KiB
Dart

import 'package:flutter/material.dart';
/// Utility class untuk mengelola keyboard dengan lebih baik
class KeyboardUtils {
/// Meminta fokus ke field tertentu
static void requestFocus(BuildContext context, FocusNode focusNode) {
FocusScope.of(context).requestFocus(focusNode);
}
/// Menutup keyboard hanya jika sedang terbuka dan tidak ada field yang difokuskan
static void dismissKeyboardIfNeeded(BuildContext context) {
final currentFocus = FocusScope.of(context);
if (!currentFocus.hasPrimaryFocus && currentFocus.focusedChild != null) {
FocusManager.instance.primaryFocus?.unfocus();
}
}
/// Menutup keyboard dengan paksa
static void forceCloseKeyboard() {
FocusManager.instance.primaryFocus?.unfocus();
}
/// Menambahkan padding untuk menghindari keyboard
static EdgeInsets keyboardAvoidingPadding(BuildContext context) {
final keyboardHeight = MediaQuery.of(context).viewInsets.bottom;
return EdgeInsets.only(
bottom: keyboardHeight > 0 ? keyboardHeight + 20 : 0,
);
}
}