|
@@ -36,7 +36,8 @@ class _GridTextCellState extends State<GridTextCell> {
|
|
|
late TextCellBloc _cellBloc;
|
|
|
late TextEditingController _controller;
|
|
|
late FocusNode _focusNode;
|
|
|
- VoidCallback? _focusListener;
|
|
|
+
|
|
|
+ VoidCallback? _focusNodeListener;
|
|
|
Timer? _delayOperation;
|
|
|
|
|
|
@override
|
|
@@ -87,32 +88,29 @@ class _GridTextCellState extends State<GridTextCell> {
|
|
|
);
|
|
|
}
|
|
|
|
|
|
- void _listenCellRequestFocus(BuildContext context) {
|
|
|
- if (_focusListener != null) {
|
|
|
- widget.requestFocus.removeListener(_focusListener!);
|
|
|
- }
|
|
|
-
|
|
|
- focusListener() {
|
|
|
- if (_focusNode.hasFocus == false && _focusNode.canRequestFocus) {
|
|
|
- FocusScope.of(context).requestFocus(_focusNode);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- _focusListener = focusListener;
|
|
|
- widget.requestFocus.addListener(focusListener);
|
|
|
- }
|
|
|
-
|
|
|
@override
|
|
|
Future<void> dispose() async {
|
|
|
- if (_focusListener != null) {
|
|
|
- widget.requestFocus.removeListener(_focusListener!);
|
|
|
- }
|
|
|
+ widget.requestFocus.removeAllListener();
|
|
|
_delayOperation?.cancel();
|
|
|
_cellBloc.close();
|
|
|
_focusNode.dispose();
|
|
|
super.dispose();
|
|
|
}
|
|
|
|
|
|
+ @override
|
|
|
+ void didUpdateWidget(covariant GridTextCell oldWidget) {
|
|
|
+ // TODO: implement didUpdateWidget
|
|
|
+ super.didUpdateWidget(oldWidget);
|
|
|
+ }
|
|
|
+
|
|
|
+ void _listenCellRequestFocus(BuildContext context) {
|
|
|
+ widget.requestFocus.addListener(() {
|
|
|
+ if (_focusNode.hasFocus == false && _focusNode.canRequestFocus) {
|
|
|
+ FocusScope.of(context).requestFocus(_focusNode);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
Future<void> focusChanged() async {
|
|
|
if (mounted) {
|
|
|
_delayOperation?.cancel();
|