Files
plezy/lib/utils/focus_utils.dart
T

54 lines
1.4 KiB
Dart

import 'package:flutter/widgets.dart';
/// Utility class for common focus operations
class FocusUtils {
FocusUtils._();
/// Request focus on a FocusNode after the current frame completes.
/// Safely checks if the State is still mounted before requesting focus.
///
/// Usage:
/// ```dart
/// FocusUtils.requestFocusAfterBuild(this, _focusNode);
/// ```
static void requestFocusAfterBuild(State state, FocusNode focusNode) {
WidgetsBinding.instance.addPostFrameCallback((_) {
if (state.mounted) {
focusNode.requestFocus();
}
});
}
/// Execute a callback after the current frame completes, with mounted check.
/// The callback will only execute if the State is still mounted.
///
/// Usage:
/// ```dart
/// FocusUtils.afterBuildIfMounted(this, () {
/// // do something
/// });
/// ```
static void afterBuildIfMounted(State state, VoidCallback callback) {
WidgetsBinding.instance.addPostFrameCallback((_) {
if (state.mounted) {
callback();
}
});
}
/// Execute a callback after the current frame completes, without mounted check.
/// Use this when you don't need the mounted check or are managing it yourself.
///
/// Usage:
/// ```dart
/// FocusUtils.afterBuild(() {
/// // do something
/// });
/// ```
static void afterBuild(VoidCallback callback) {
WidgetsBinding.instance.addPostFrameCallback((_) {
callback();
});
}
}