tableMenuItem top-level property
Implementation
SelectionMenuItem tableMenuItem = SelectionMenuItem(
getName: () => AppFlowyEditorL10n.current.table,
icon: (editorState, isSelected, style) => SelectionMenuIconWidget(
icon: Icons.table_view,
isSelected: isSelected,
style: style,
),
keywords: ['table'],
handler: (editorState, _, __) {
final selection = editorState.selection;
if (selection == null || !selection.isCollapsed) {
return;
}
final currentNode = editorState.getNodeAtPath(selection.end.path);
if (currentNode == null) {
return;
}
final tableNode = TableNode.fromList([
['', ''],
['', ''],
]);
final transaction = editorState.transaction;
final delta = currentNode.delta;
if (delta != null && delta.isEmpty) {
transaction
..insertNode(selection.end.path, tableNode.node)
..deleteNode(currentNode);
transaction.afterSelection = Selection.collapsed(
Position(
path: selection.end.path + [0, 0],
offset: 0,
),
);
} else {
transaction.insertNode(selection.end.path.next, tableNode.node);
transaction.afterSelection = Selection.collapsed(
Position(
path: selection.end.path.next + [0, 0],
offset: 0,
),
);
}
editorState.apply(transaction);
},
);