diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/service/toolbar_service.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/service/toolbar_service.dart index 143f899926..40914a70e9 100644 --- a/frontend/app_flowy/packages/appflowy_editor/lib/src/service/toolbar_service.dart +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/service/toolbar_service.dart @@ -39,27 +39,13 @@ class _FlowyToolbarState extends State void showInOffset(Offset offset, LayerLink layerLink) { hide(); - final items = defaultToolbarItems - .where((item) => item.validator(widget.editorState)) - .toList(growable: false) - ..sort((a, b) => a.type.compareTo(b.type)); - if (items.isEmpty) { - return; - } - final List dividedItems = [items.first]; - for (var i = 1; i < items.length; i++) { - if (items[i].type != items[i - 1].type) { - dividedItems.add(ToolbarItem.divider()); - } - dividedItems.add(items[i]); - } _toolbarOverlay = OverlayEntry( builder: (context) => ToolbarWidget( key: _toolbarWidgetKey, editorState: widget.editorState, layerLink: layerLink, offset: offset.translate(0, -37.0), - items: dividedItems, + items: _filterItems(defaultToolbarItems), ), ); Overlay.of(context)?.insert(_toolbarOverlay!); @@ -96,4 +82,24 @@ class _FlowyToolbarState extends State super.dispose(); } + + // Filter items that should not be displayed, sort according to type, + // and insert dividers between different types. + List _filterItems(List items) { + final filterItems = items + .where((item) => item.validator(widget.editorState)) + .toList(growable: false) + ..sort((a, b) => a.type.compareTo(b.type)); + if (items.isEmpty) { + return []; + } + final List dividedItems = [filterItems.first]; + for (var i = 1; i < filterItems.length; i++) { + if (filterItems[i].type != filterItems[i - 1].type) { + dividedItems.add(ToolbarItem.divider()); + } + dividedItems.add(filterItems[i]); + } + return dividedItems; + } }