|
@@ -22,7 +22,7 @@ class NumberCell extends StatefulWidget with GridCellWidget {
|
|
class _NumberCellState extends State<NumberCell> {
|
|
class _NumberCellState extends State<NumberCell> {
|
|
late NumberCellBloc _cellBloc;
|
|
late NumberCellBloc _cellBloc;
|
|
late TextEditingController _controller;
|
|
late TextEditingController _controller;
|
|
- late CellSingleFocusNode _focusNode;
|
|
|
|
|
|
+ late SingleListenrFocusNode _focusNode;
|
|
Timer? _delayOperation;
|
|
Timer? _delayOperation;
|
|
|
|
|
|
@override
|
|
@override
|
|
@@ -30,14 +30,14 @@ class _NumberCellState extends State<NumberCell> {
|
|
final cellContext = widget.cellContextBuilder.build();
|
|
final cellContext = widget.cellContextBuilder.build();
|
|
_cellBloc = getIt<NumberCellBloc>(param1: cellContext)..add(const NumberCellEvent.initial());
|
|
_cellBloc = getIt<NumberCellBloc>(param1: cellContext)..add(const NumberCellEvent.initial());
|
|
_controller = TextEditingController(text: contentFromState(_cellBloc.state));
|
|
_controller = TextEditingController(text: contentFromState(_cellBloc.state));
|
|
- _focusNode = CellSingleFocusNode();
|
|
|
|
- _listenFocusNode();
|
|
|
|
|
|
+ _focusNode = SingleListenrFocusNode();
|
|
|
|
+ _listenOnFocusNodeChanged();
|
|
super.initState();
|
|
super.initState();
|
|
}
|
|
}
|
|
|
|
|
|
@override
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
Widget build(BuildContext context) {
|
|
- _listenCellRequestFocus(context);
|
|
|
|
|
|
+ _handleCellRequestFocus(context);
|
|
return BlocProvider.value(
|
|
return BlocProvider.value(
|
|
value: _cellBloc,
|
|
value: _cellBloc,
|
|
child: MultiBlocListener(
|
|
child: MultiBlocListener(
|
|
@@ -65,19 +65,17 @@ class _NumberCellState extends State<NumberCell> {
|
|
|
|
|
|
@override
|
|
@override
|
|
Future<void> dispose() async {
|
|
Future<void> dispose() async {
|
|
- widget.requestFocus.removeAllListener();
|
|
|
|
|
|
+ widget.beginFocus.removeAllListener();
|
|
_delayOperation?.cancel();
|
|
_delayOperation?.cancel();
|
|
_cellBloc.close();
|
|
_cellBloc.close();
|
|
- _focusNode.removeSingleListener();
|
|
|
|
|
|
+ _focusNode.removeAllListener();
|
|
_focusNode.dispose();
|
|
_focusNode.dispose();
|
|
super.dispose();
|
|
super.dispose();
|
|
}
|
|
}
|
|
|
|
|
|
@override
|
|
@override
|
|
void didUpdateWidget(covariant NumberCell oldWidget) {
|
|
void didUpdateWidget(covariant NumberCell oldWidget) {
|
|
- if (oldWidget != widget) {
|
|
|
|
- _listenFocusNode();
|
|
|
|
- }
|
|
|
|
|
|
+ _listenOnFocusNodeChanged();
|
|
super.didUpdateWidget(oldWidget);
|
|
super.didUpdateWidget(oldWidget);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -92,16 +90,16 @@ class _NumberCellState extends State<NumberCell> {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- void _listenFocusNode() {
|
|
|
|
|
|
+ void _listenOnFocusNodeChanged() {
|
|
widget.onFocus.value = _focusNode.hasFocus;
|
|
widget.onFocus.value = _focusNode.hasFocus;
|
|
- _focusNode.setSingleListener(() {
|
|
|
|
|
|
+ _focusNode.setListener(() {
|
|
widget.onFocus.value = _focusNode.hasFocus;
|
|
widget.onFocus.value = _focusNode.hasFocus;
|
|
focusChanged();
|
|
focusChanged();
|
|
});
|
|
});
|
|
}
|
|
}
|
|
|
|
|
|
- void _listenCellRequestFocus(BuildContext context) {
|
|
|
|
- widget.requestFocus.addListener(() {
|
|
|
|
|
|
+ void _handleCellRequestFocus(BuildContext context) {
|
|
|
|
+ widget.beginFocus.setListener(() {
|
|
if (_focusNode.hasFocus == false && _focusNode.canRequestFocus) {
|
|
if (_focusNode.hasFocus == false && _focusNode.canRequestFocus) {
|
|
FocusScope.of(context).requestFocus(_focusNode);
|
|
FocusScope.of(context).requestFocus(_focusNode);
|
|
}
|
|
}
|