mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2024-08-30 18:12:39 +00:00
feat: filter the toolbar item should not be displayed
This commit is contained in:
parent
70ea80878a
commit
44b4ef4ad7
@ -39,27 +39,13 @@ class _FlowyToolbarState extends State<FlowyToolbar>
|
||||
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<ToolbarItem> 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<FlowyToolbar>
|
||||
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
// Filter items that should not be displayed, sort according to type,
|
||||
// and insert dividers between different types.
|
||||
List<ToolbarItem> _filterItems(List<ToolbarItem> 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<ToolbarItem> 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;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user