|
@@ -103,11 +103,11 @@ class BlankCell extends StatelessWidget {
|
|
|
}
|
|
|
|
|
|
abstract class CellEditable {
|
|
|
- GridCellFocusListener get beginFocus;
|
|
|
+ RequestFocusListener get requestFocus;
|
|
|
|
|
|
ValueNotifier<bool> get onCellFocus;
|
|
|
|
|
|
- ValueNotifier<bool> get onCellEditing;
|
|
|
+ // ValueNotifier<bool> get onCellEditing;
|
|
|
}
|
|
|
|
|
|
typedef AccessoryBuilder = List<GridCellAccessoryBuilder> Function(
|
|
@@ -125,11 +125,7 @@ abstract class CellAccessory extends Widget {
|
|
|
|
|
|
abstract class GridCellWidget extends StatefulWidget
|
|
|
implements CellAccessory, CellEditable, CellShortcuts {
|
|
|
- GridCellWidget({Key? key}) : super(key: key) {
|
|
|
- onCellEditing.addListener(() {
|
|
|
- onCellFocus.value = onCellEditing.value;
|
|
|
- });
|
|
|
- }
|
|
|
+ GridCellWidget({super.key});
|
|
|
|
|
|
@override
|
|
|
final ValueNotifier<bool> onCellFocus = ValueNotifier<bool>(false);
|
|
@@ -138,8 +134,8 @@ abstract class GridCellWidget extends StatefulWidget
|
|
|
@override
|
|
|
ValueNotifier<bool> get onAccessoryHover => onCellFocus;
|
|
|
|
|
|
- @override
|
|
|
- final ValueNotifier<bool> onCellEditing = ValueNotifier<bool>(false);
|
|
|
+ // @override
|
|
|
+ // final ValueNotifier<bool> onCellEditing = ValueNotifier<bool>(false);
|
|
|
|
|
|
@override
|
|
|
List<GridCellAccessoryBuilder> Function(
|
|
@@ -147,7 +143,7 @@ abstract class GridCellWidget extends StatefulWidget
|
|
|
)? get accessoryBuilder => null;
|
|
|
|
|
|
@override
|
|
|
- final GridCellFocusListener beginFocus = GridCellFocusListener();
|
|
|
+ final RequestFocusListener requestFocus = RequestFocusListener();
|
|
|
|
|
|
@override
|
|
|
final Map<CellKeyboardKey, CellKeyboardAction> shortcutHandlers = {};
|
|
@@ -156,7 +152,7 @@ abstract class GridCellWidget extends StatefulWidget
|
|
|
abstract class GridCellState<T extends GridCellWidget> extends State<T> {
|
|
|
@override
|
|
|
void initState() {
|
|
|
- widget.beginFocus.setListener(() => requestBeginFocus());
|
|
|
+ widget.requestFocus.setListener(requestBeginFocus);
|
|
|
widget.shortcutHandlers[CellKeyboardKey.onCopy] = () => onCopy();
|
|
|
widget.shortcutHandlers[CellKeyboardKey.onInsert] = () {
|
|
|
Clipboard.getData("text/plain").then((data) {
|
|
@@ -172,17 +168,18 @@ abstract class GridCellState<T extends GridCellWidget> extends State<T> {
|
|
|
@override
|
|
|
void didUpdateWidget(covariant T oldWidget) {
|
|
|
if (oldWidget != this) {
|
|
|
- widget.beginFocus.setListener(() => requestBeginFocus());
|
|
|
+ widget.requestFocus.setListener(requestBeginFocus);
|
|
|
}
|
|
|
super.didUpdateWidget(oldWidget);
|
|
|
}
|
|
|
|
|
|
@override
|
|
|
void dispose() {
|
|
|
- widget.beginFocus.removeAllListener();
|
|
|
+ widget.requestFocus.removeAllListener();
|
|
|
super.dispose();
|
|
|
}
|
|
|
|
|
|
+ /// Subclass can override this method to request focus.
|
|
|
void requestBeginFocus();
|
|
|
|
|
|
String? onCopy() => null;
|
|
@@ -190,9 +187,9 @@ abstract class GridCellState<T extends GridCellWidget> extends State<T> {
|
|
|
void onInsert(String value) {}
|
|
|
}
|
|
|
|
|
|
-abstract class GridFocusNodeCellState<T extends GridCellWidget>
|
|
|
+abstract class GridEditableTextCell<T extends GridCellWidget>
|
|
|
extends GridCellState<T> {
|
|
|
- SingleListenerFocusNode focusNode = SingleListenerFocusNode();
|
|
|
+ SingleListenerFocusNode get focusNode;
|
|
|
|
|
|
@override
|
|
|
void initState() {
|
|
@@ -226,9 +223,9 @@ abstract class GridFocusNodeCellState<T extends GridCellWidget>
|
|
|
}
|
|
|
|
|
|
void _listenOnFocusNodeChanged() {
|
|
|
- widget.onCellEditing.value = focusNode.hasFocus;
|
|
|
+ widget.onCellFocus.value = focusNode.hasFocus;
|
|
|
focusNode.setListener(() {
|
|
|
- widget.onCellEditing.value = focusNode.hasFocus;
|
|
|
+ widget.onCellFocus.value = focusNode.hasFocus;
|
|
|
focusChanged();
|
|
|
});
|
|
|
}
|
|
@@ -236,7 +233,7 @@ abstract class GridFocusNodeCellState<T extends GridCellWidget>
|
|
|
Future<void> focusChanged() async {}
|
|
|
}
|
|
|
|
|
|
-class GridCellFocusListener extends ChangeNotifier {
|
|
|
+class RequestFocusListener extends ChangeNotifier {
|
|
|
VoidCallback? _listener;
|
|
|
|
|
|
void setListener(VoidCallback listener) {
|