mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2024-08-30 18:12:39 +00:00
fix: make sure the state is implemnt selectable, otherwise return.
This commit is contained in:
parent
6c811aef72
commit
e16444f88e
@ -110,21 +110,22 @@ class _FlowySelectionWidgetState extends State<FlowySelectionWidget>
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (final node in nodes) {
|
for (final node in nodes) {
|
||||||
final selectable = node.key?.currentState as Selectable?;
|
if (node.key?.currentState is! Selectable) {
|
||||||
if (selectable != null) {
|
continue;
|
||||||
final selectionRects = selectable.getSelectionRectsInSelection(
|
}
|
||||||
panStartOffset!, panEndOffset!);
|
final selectable = node.key?.currentState as Selectable;
|
||||||
for (final rect in selectionRects) {
|
final selectionRects = selectable.getSelectionRectsInSelection(
|
||||||
final overlay = OverlayEntry(
|
panStartOffset!, panEndOffset!);
|
||||||
builder: ((context) => Positioned.fromRect(
|
for (final rect in selectionRects) {
|
||||||
rect: rect,
|
final overlay = OverlayEntry(
|
||||||
child: Container(
|
builder: ((context) => Positioned.fromRect(
|
||||||
color: Colors.yellow.withAlpha(100),
|
rect: rect,
|
||||||
),
|
child: Container(
|
||||||
)),
|
color: Colors.yellow.withAlpha(100),
|
||||||
);
|
),
|
||||||
selectionOverlays.add(overlay);
|
)),
|
||||||
}
|
);
|
||||||
|
selectionOverlays.add(overlay);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Overlay.of(context)?.insertAll(selectionOverlays);
|
Overlay.of(context)?.insertAll(selectionOverlays);
|
||||||
@ -146,19 +147,20 @@ class _FlowySelectionWidgetState extends State<FlowySelectionWidget>
|
|||||||
}
|
}
|
||||||
|
|
||||||
final selectedNode = nodes.first;
|
final selectedNode = nodes.first;
|
||||||
final selectable = selectedNode.key?.currentState as Selectable?;
|
if (selectedNode.key?.currentState is! Selectable) {
|
||||||
if (selectable != null) {
|
return;
|
||||||
final rect = selectable.getCursorRect(tapOffset!);
|
|
||||||
final cursor = OverlayEntry(
|
|
||||||
builder: ((context) => Positioned.fromRect(
|
|
||||||
rect: rect,
|
|
||||||
child: Container(
|
|
||||||
color: Colors.blue,
|
|
||||||
),
|
|
||||||
)),
|
|
||||||
);
|
|
||||||
selectionOverlays.add(cursor);
|
|
||||||
}
|
}
|
||||||
|
final selectable = selectedNode.key?.currentState as Selectable;
|
||||||
|
final rect = selectable.getCursorRect(tapOffset!);
|
||||||
|
final cursor = OverlayEntry(
|
||||||
|
builder: ((context) => Positioned.fromRect(
|
||||||
|
rect: rect,
|
||||||
|
child: Container(
|
||||||
|
color: Colors.blue,
|
||||||
|
),
|
||||||
|
)),
|
||||||
|
);
|
||||||
|
selectionOverlays.add(cursor);
|
||||||
Overlay.of(context)?.insertAll(selectionOverlays);
|
Overlay.of(context)?.insertAll(selectionOverlays);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -183,12 +185,6 @@ class _FlowySelectionWidgetState extends State<FlowySelectionWidget>
|
|||||||
final tapOffset = this.tapOffset;
|
final tapOffset = this.tapOffset;
|
||||||
if (tapOffset != null) {}
|
if (tapOffset != null) {}
|
||||||
|
|
||||||
if (node.parent != null && node.key != null) {
|
|
||||||
if (isNodeInOffset(node, offset)) {
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (final child in node.children) {
|
for (final child in node.children) {
|
||||||
final result = computeSelectedNodeByTap(child, offset);
|
final result = computeSelectedNodeByTap(child, offset);
|
||||||
if (result != null) {
|
if (result != null) {
|
||||||
@ -196,6 +192,12 @@ class _FlowySelectionWidgetState extends State<FlowySelectionWidget>
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (node.parent != null && node.key != null) {
|
||||||
|
if (isNodeInOffset(node, offset)) {
|
||||||
|
return node;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user