From 2117d0c6d8514b20b8f1e0a09f8855094d0dd6e1 Mon Sep 17 00:00:00 2001 From: Feichtmeier Date: Thu, 6 Oct 2022 14:39:30 +0200 Subject: [PATCH 1/5] YaruPageItem: add more flexibility Fixes #229 --- example/lib/example_page_items.dart | 30 +++++++++-------- example/lib/main.dart | 33 +++---------------- .../pages/layouts/yaru_compact_layout.dart | 9 ++--- lib/src/pages/layouts/yaru_page_item.dart | 12 +++---- .../layouts/yaru_page_item_list_view.dart | 16 ++++----- 5 files changed, 32 insertions(+), 68 deletions(-) diff --git a/example/lib/example_page_items.dart b/example/lib/example_page_items.dart index 4d0e3ad53..7f2e6d004 100644 --- a/example/lib/example_page_items.dart +++ b/example/lib/example_page_items.dart @@ -18,16 +18,18 @@ const _lorem = final examplePageItems = [ YaruPageItem( titleBuilder: (context) => YaruPageItemTitle.text('YaruTile'), - iconData: YaruIcons.format_unordered_list, builder: (_) => const YaruPage(children: [TileList()]), - itemWidget: const SizedBox( + icon: const Icon(YaruIcons.format_unordered_list), + selectedIcon: const SizedBox( height: 20, - child: YaruCircularProgressIndicator(strokeWidth: 2), + child: YaruCircularProgressIndicator( + strokeWidth: 2, + ), ), ), YaruPageItem( titleBuilder: (context) => YaruPageItemTitle.text('YaruProgressIndicator'), - iconData: YaruIcons.download, + icon: const Icon(YaruIcons.download), builder: (_) => const YaruPage( children: [ Padding( @@ -56,37 +58,37 @@ final examplePageItems = [ YaruPageItem( titleBuilder: (context) => YaruPageItemTitle.text('YaruSelectableContainer'), - iconData: YaruIcons.selection, + icon: const Icon(YaruIcons.selection), builder: (_) => const SelectableContainerPage(), ), YaruPageItem( titleBuilder: (context) => YaruPageItemTitle.text('YaruOptionButton'), - iconData: YaruIcons.settings, + icon: const Icon(YaruIcons.settings), builder: (_) => const YaruPage(children: [OptionButtonPage()]), ), YaruPageItem( titleBuilder: (context) => YaruPageItemTitle.text('YaruSection'), - iconData: YaruIcons.window, + icon: const Icon(YaruIcons.window), builder: (_) => const SectionPage(), ), YaruPageItem( titleBuilder: (context) => YaruPageItemTitle.text('YaruTabbedPage'), builder: (_) => const TabbedPagePage(), - iconData: YaruIcons.tab_new, + icon: const Icon(YaruIcons.tab_new), ), YaruPageItem( titleBuilder: (context) => YaruPageItemTitle.text('YaruCarousel'), builder: (_) => const CarouselPage(), - iconData: YaruIcons.refresh, + icon: const Icon(YaruIcons.refresh), ), YaruPageItem( titleBuilder: (context) => YaruPageItemTitle.text('YaruColorDisk'), builder: (context) => const ColorDiskPage(), - iconData: YaruIcons.color_select, + icon: const Icon(YaruIcons.color_select), ), YaruPageItem( titleBuilder: (context) => YaruPageItemTitle.text('YaruExpandable'), - iconData: YaruIcons.pan_down, + icon: const Icon(YaruIcons.pan_down), builder: (_) => const YaruPage( children: [ YaruExpandable( @@ -117,16 +119,16 @@ final examplePageItems = [ YaruPageItem( titleBuilder: (context) => YaruPageItemTitle.text('YaruRoundToggleButton'), builder: (context) => const RoundToggleButtonPage(), - iconData: YaruIcons.app_grid, + icon: const Icon(YaruIcons.app_grid), ), YaruPageItem( titleBuilder: (context) => YaruPageItemTitle.text('YaruDraggable'), builder: (context) => const DraggablePage(), - iconData: YaruIcons.drag_handle, + icon: const Icon(YaruIcons.drag_handle), ), YaruPageItem( titleBuilder: (context) => YaruPageItemTitle.text('YaruBanner'), builder: (context) => const BannerPage(), - iconData: YaruIcons.image, + icon: const Icon(YaruIcons.image), ) ]; diff --git a/example/lib/main.dart b/example/lib/main.dart index 6bd2b2fa9..afce631a5 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -29,7 +29,6 @@ class Home extends StatefulWidget { class _HomeState extends State { final _filteredItems = []; bool _compactMode = false; - int _amount = 3; @override Widget build(BuildContext context) { @@ -44,31 +43,9 @@ class _HomeState extends State { onChanged: (v) => setState(() => _compactMode = v), ), ), - if (_compactMode) - YaruTile( - title: const Text('YaruPageItem amount'), - trailing: Row( - children: [ - TextButton( - onPressed: () { - if (_amount >= examplePageItems.length) return; - setState(() => _amount++); - }, - child: const Icon(YaruIcons.plus), - ), - TextButton( - onPressed: () { - if (_amount <= 2) return; - setState(() => _amount--); - }, - child: const Icon(YaruIcons.minus), - ), - ], - ), - ) ], ), - iconData: YaruIcons.settings, + icon: const Icon(YaruIcons.settings), ); return MaterialApp( @@ -78,7 +55,7 @@ class _HomeState extends State { theme: context.watch().value, darkTheme: context.watch().value, home: _compactMode - ? _CompactPage(configItem: configItem, amount: _amount) + ? _CompactPage(configItem: configItem) : YaruMasterDetailPage( leftPaneWidth: 280, previousIconData: YaruIcons.go_previous, @@ -96,11 +73,9 @@ class _HomeState extends State { class _CompactPage extends StatelessWidget { const _CompactPage({ required this.configItem, - required int amount, - }) : _amount = amount; + }); final YaruPageItem configItem; - final int _amount; @override Widget build(BuildContext context) { @@ -108,7 +83,7 @@ class _CompactPage extends StatelessWidget { return YaruCompactLayout( extendNavigationRail: width > 1000, - pageItems: [configItem] + examplePageItems.take(_amount).toList(), + pageItems: [configItem] + examplePageItems, backgroundColor: Theme.of(context).brightness == Brightness.light ? Colors.white : Theme.of(context).colorScheme.onSurface.withOpacity(0.03), diff --git a/lib/src/pages/layouts/yaru_compact_layout.dart b/lib/src/pages/layouts/yaru_compact_layout.dart index d56b96467..75ee87d5d 100644 --- a/lib/src/pages/layouts/yaru_compact_layout.dart +++ b/lib/src/pages/layouts/yaru_compact_layout.dart @@ -122,13 +122,8 @@ class _YaruCompactLayoutState extends State { destinations: widget.pageItems .map( (pageItem) => NavigationRailDestination( - icon: pageItem.itemWidget ?? - Icon(pageItem.iconData), - selectedIcon: pageItem.selectedItemWidget ?? - pageItem.itemWidget ?? - (pageItem.selectedIconData != null - ? Icon(pageItem.selectedIconData) - : Icon(pageItem.iconData)), + icon: pageItem.icon, + selectedIcon: pageItem.selectedIcon, label: pageItem.titleBuilder(context), ), ) diff --git a/lib/src/pages/layouts/yaru_page_item.dart b/lib/src/pages/layouts/yaru_page_item.dart index 64dcc6902..1b789b5fb 100644 --- a/lib/src/pages/layouts/yaru_page_item.dart +++ b/lib/src/pages/layouts/yaru_page_item.dart @@ -4,11 +4,9 @@ class YaruPageItem { const YaruPageItem({ required this.titleBuilder, required this.builder, - required this.iconData, - this.selectedIconData, this.searchMatches, - this.itemWidget, - this.selectedItemWidget, + required this.icon, + this.selectedIcon, this.onTap, }); @@ -16,10 +14,8 @@ class YaruPageItem { final WidgetBuilder titleBuilder; final WidgetBuilder builder; - final IconData iconData; - final Widget? itemWidget; - final Widget? selectedItemWidget; - final IconData? selectedIconData; + final Widget icon; + final Widget? selectedIcon; final bool Function(String value, BuildContext context)? searchMatches; final void Function(BuildContext context)? onTap; } diff --git a/lib/src/pages/layouts/yaru_page_item_list_view.dart b/lib/src/pages/layouts/yaru_page_item_list_view.dart index 6650ee91c..013bf4fd9 100644 --- a/lib/src/pages/layouts/yaru_page_item_list_view.dart +++ b/lib/src/pages/layouts/yaru_page_item_list_view.dart @@ -39,13 +39,13 @@ class YaruPageItemListView extends StatelessWidget { visualDensity: const VisualDensity(horizontal: -4, vertical: -4), selected: index == selectedIndex, title: pages[index].titleBuilder(context), - leading: Icon(pages[index].iconData), + leading: pages[index].icon, onTap: () => onTap(index), ) : _YaruListTile( selected: index == selectedIndex, title: pages[index].titleBuilder(context), - iconData: pages[index].iconData, + icon: pages[index].icon, onTap: () => onTap(index), ), ); @@ -69,13 +69,13 @@ class YaruPageItemListView extends StatelessWidget { class _YaruListTile extends StatelessWidget { const _YaruListTile({ required this.selected, - this.iconData, + this.icon, required this.onTap, required this.title, }); final bool selected; - final IconData? iconData; + final Widget? icon; final Function() onTap; final Widget? title; @@ -92,16 +92,12 @@ class _YaruListTile extends StatelessWidget { child: ListTile( textColor: Theme.of(context).colorScheme.onSurface, selectedColor: Theme.of(context).colorScheme.onSurface, + iconColor: Theme.of(context).colorScheme.onSurface.withOpacity(0.8), visualDensity: const VisualDensity(horizontal: -4, vertical: -4), shape: const RoundedRectangleBorder( borderRadius: BorderRadius.all(Radius.circular(kDefaultButtonRadius)), ), - leading: iconData != null - ? Icon( - iconData, - color: Theme.of(context).colorScheme.onSurface.withOpacity(0.8), - ) - : null, + leading: icon, title: title, selected: selected, onTap: onTap, From 2d5a9b68745c6acdb861731bb9d000f9e4999aca Mon Sep 17 00:00:00 2001 From: Feichtmeier Date: Thu, 6 Oct 2022 15:12:36 +0200 Subject: [PATCH 2/5] Use builder for icon --- example/lib/example_page_items.dart | 33 ++++++++++--------- example/lib/main.dart | 2 +- .../pages/layouts/yaru_compact_layout.dart | 20 +++++++---- lib/src/pages/layouts/yaru_page_item.dart | 4 +-- .../layouts/yaru_page_item_list_view.dart | 4 +-- 5 files changed, 34 insertions(+), 29 deletions(-) diff --git a/example/lib/example_page_items.dart b/example/lib/example_page_items.dart index c7910ac4b..42cedbc06 100644 --- a/example/lib/example_page_items.dart +++ b/example/lib/example_page_items.dart @@ -18,66 +18,67 @@ final examplePageItems = [ YaruPageItem( titleBuilder: (context) => YaruPageItemTitle.text('YaruBanner'), builder: (context) => const BannerPage(), - icon: const Icon(YaruIcons.image), + icon: (context, selected) => const Icon(YaruIcons.image), ), YaruPageItem( titleBuilder: (context) => YaruPageItemTitle.text('YaruCarousel'), builder: (_) => const CarouselPage(), - icon: const Icon(YaruIcons.refresh), + icon: (context, selected) => const Icon(YaruIcons.refresh), ), YaruPageItem( titleBuilder: (context) => YaruPageItemTitle.text('YaruColorDisk'), builder: (context) => const ColorDiskPage(), - icon: const Icon(YaruIcons.color_select), + icon: (context, selected) => const Icon(YaruIcons.color_select), ), YaruPageItem( titleBuilder: (context) => YaruPageItemTitle.text('YaruDraggable'), builder: (context) => const DraggablePage(), - icon: const Icon(YaruIcons.drag_handle), + icon: (context, selected) => const Icon(YaruIcons.drag_handle), ), YaruPageItem( titleBuilder: (context) => YaruPageItemTitle.text('YaruExpandable'), - icon: const Icon(YaruIcons.pan_down), + icon: (context, selected) => const Icon(YaruIcons.pan_down), builder: (_) => const ExpandablePage(), ), YaruPageItem( titleBuilder: (context) => YaruPageItemTitle.text('YaruProgressIndicator'), - icon: const Icon(YaruIcons.download), + icon: (context, selected) => const Icon(YaruIcons.download), builder: (_) => const ProgressIndicatorPage(), ), YaruPageItem( titleBuilder: (context) => YaruPageItemTitle.text('YaruOptionButton'), - icon: const Icon(YaruIcons.settings), + icon: (context, selected) => const Icon(YaruIcons.settings), builder: (_) => const YaruPage(children: [OptionButtonPage()]), ), YaruPageItem( titleBuilder: (context) => YaruPageItemTitle.text('YaruRoundToggleButton'), builder: (context) => const RoundToggleButtonPage(), - icon: const Icon(YaruIcons.app_grid), + icon: (context, selected) => const Icon(YaruIcons.app_grid), ), YaruPageItem( titleBuilder: (context) => YaruPageItemTitle.text('YaruSection'), - icon: const Icon(YaruIcons.window), + icon: (context, selected) => const Icon(YaruIcons.window), builder: (_) => const SectionPage(), ), YaruPageItem( titleBuilder: (context) => YaruPageItemTitle.text('YaruSelectableContainer'), - icon: const Icon(YaruIcons.selection), + icon: (context, selected) => const Icon(YaruIcons.selection), builder: (_) => const SelectableContainerPage(), ), YaruPageItem( titleBuilder: (context) => YaruPageItemTitle.text('YaruTabbedPage'), builder: (_) => const TabbedPagePage(), - icon: const Icon(YaruIcons.tab_new), + icon: (context, selected) => const Icon(YaruIcons.tab_new), ), YaruPageItem( titleBuilder: (context) => YaruPageItemTitle.text('YaruTile'), - icon: const Icon(YaruIcons.format_unordered_list), + icon: (context, selected) => selected + ? const SizedBox( + height: 20, + child: YaruCircularProgressIndicator(strokeWidth: 2), + ) + : const Icon(YaruIcons.format_unordered_list), builder: (_) => const TilePage(), - selectedIcon: const SizedBox( - height: 20, - child: YaruCircularProgressIndicator(strokeWidth: 2), - ), ), ]; diff --git a/example/lib/main.dart b/example/lib/main.dart index afce631a5..9f21f41b2 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -45,7 +45,7 @@ class _HomeState extends State { ), ], ), - icon: const Icon(YaruIcons.settings), + icon: (context, selected) => const Icon(YaruIcons.settings), ); return MaterialApp( diff --git a/lib/src/pages/layouts/yaru_compact_layout.dart b/lib/src/pages/layouts/yaru_compact_layout.dart index 75ee87d5d..d8b5f3762 100644 --- a/lib/src/pages/layouts/yaru_compact_layout.dart +++ b/lib/src/pages/layouts/yaru_compact_layout.dart @@ -119,15 +119,21 @@ class _YaruCompactLayoutState extends State { }); }, labelType: widget.labelType, - destinations: widget.pageItems - .map( - (pageItem) => NavigationRailDestination( - icon: pageItem.icon, - selectedIcon: pageItem.selectedIcon, - label: pageItem.titleBuilder(context), + destinations: [ + for (int i = 0; i < widget.pageItems.length; i++) + NavigationRailDestination( + icon: widget.pageItems[i].icon( + context, + i == _index, ), + selectedIcon: widget.pageItems[i].icon( + context, + i == _index, + ), + label: + widget.pageItems[i].titleBuilder(context), ) - .toList(), + ], ), ), ), diff --git a/lib/src/pages/layouts/yaru_page_item.dart b/lib/src/pages/layouts/yaru_page_item.dart index 1b789b5fb..051422744 100644 --- a/lib/src/pages/layouts/yaru_page_item.dart +++ b/lib/src/pages/layouts/yaru_page_item.dart @@ -6,7 +6,6 @@ class YaruPageItem { required this.builder, this.searchMatches, required this.icon, - this.selectedIcon, this.onTap, }); @@ -14,8 +13,7 @@ class YaruPageItem { final WidgetBuilder titleBuilder; final WidgetBuilder builder; - final Widget icon; - final Widget? selectedIcon; + final Widget Function(BuildContext context, bool selected) icon; final bool Function(String value, BuildContext context)? searchMatches; final void Function(BuildContext context)? onTap; } diff --git a/lib/src/pages/layouts/yaru_page_item_list_view.dart b/lib/src/pages/layouts/yaru_page_item_list_view.dart index 013bf4fd9..e7bb898f1 100644 --- a/lib/src/pages/layouts/yaru_page_item_list_view.dart +++ b/lib/src/pages/layouts/yaru_page_item_list_view.dart @@ -39,13 +39,13 @@ class YaruPageItemListView extends StatelessWidget { visualDensity: const VisualDensity(horizontal: -4, vertical: -4), selected: index == selectedIndex, title: pages[index].titleBuilder(context), - leading: pages[index].icon, + leading: pages[index].icon(context, index == selectedIndex), onTap: () => onTap(index), ) : _YaruListTile( selected: index == selectedIndex, title: pages[index].titleBuilder(context), - icon: pages[index].icon, + icon: pages[index].icon(context, index == selectedIndex), onTap: () => onTap(index), ), ); From fbbc3a825e2806a31d0b6d232c6e9981c33a93be Mon Sep 17 00:00:00 2001 From: Feichtmeier Date: Thu, 6 Oct 2022 15:15:42 +0200 Subject: [PATCH 3/5] use filled icon for selected banner --- example/lib/example_page_items.dart | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/example/lib/example_page_items.dart b/example/lib/example_page_items.dart index 42cedbc06..87bb7aa8c 100644 --- a/example/lib/example_page_items.dart +++ b/example/lib/example_page_items.dart @@ -18,7 +18,9 @@ final examplePageItems = [ YaruPageItem( titleBuilder: (context) => YaruPageItemTitle.text('YaruBanner'), builder: (context) => const BannerPage(), - icon: (context, selected) => const Icon(YaruIcons.image), + icon: (context, selected) => selected + ? const Icon(YaruIcons.image_filled) + : const Icon(YaruIcons.image), ), YaruPageItem( titleBuilder: (context) => YaruPageItemTitle.text('YaruCarousel'), @@ -73,12 +75,7 @@ final examplePageItems = [ ), YaruPageItem( titleBuilder: (context) => YaruPageItemTitle.text('YaruTile'), - icon: (context, selected) => selected - ? const SizedBox( - height: 20, - child: YaruCircularProgressIndicator(strokeWidth: 2), - ) - : const Icon(YaruIcons.format_unordered_list), + icon: (context, selected) => const Icon(YaruIcons.format_unordered_list), builder: (_) => const TilePage(), ), ]; From ba971cb56325608e0e5b5a4f330518b3e80b3fc1 Mon Sep 17 00:00:00 2001 From: Feichtmeier Date: Thu, 6 Oct 2022 15:29:20 +0200 Subject: [PATCH 4/5] Rename icon to iconBuilder --- example/lib/example_page_items.dart | 25 ++++++++++--------- example/lib/main.dart | 2 +- .../pages/layouts/yaru_compact_layout.dart | 4 +-- lib/src/pages/layouts/yaru_page_item.dart | 4 +-- .../layouts/yaru_page_item_list_view.dart | 5 ++-- 5 files changed, 21 insertions(+), 19 deletions(-) diff --git a/example/lib/example_page_items.dart b/example/lib/example_page_items.dart index 87bb7aa8c..3fdd0e0c7 100644 --- a/example/lib/example_page_items.dart +++ b/example/lib/example_page_items.dart @@ -18,64 +18,65 @@ final examplePageItems = [ YaruPageItem( titleBuilder: (context) => YaruPageItemTitle.text('YaruBanner'), builder: (context) => const BannerPage(), - icon: (context, selected) => selected + iconBuilder: (context, selected) => selected ? const Icon(YaruIcons.image_filled) : const Icon(YaruIcons.image), ), YaruPageItem( titleBuilder: (context) => YaruPageItemTitle.text('YaruCarousel'), builder: (_) => const CarouselPage(), - icon: (context, selected) => const Icon(YaruIcons.refresh), + iconBuilder: (context, selected) => const Icon(YaruIcons.refresh), ), YaruPageItem( titleBuilder: (context) => YaruPageItemTitle.text('YaruColorDisk'), builder: (context) => const ColorDiskPage(), - icon: (context, selected) => const Icon(YaruIcons.color_select), + iconBuilder: (context, selected) => const Icon(YaruIcons.color_select), ), YaruPageItem( titleBuilder: (context) => YaruPageItemTitle.text('YaruDraggable'), builder: (context) => const DraggablePage(), - icon: (context, selected) => const Icon(YaruIcons.drag_handle), + iconBuilder: (context, selected) => const Icon(YaruIcons.drag_handle), ), YaruPageItem( titleBuilder: (context) => YaruPageItemTitle.text('YaruExpandable'), - icon: (context, selected) => const Icon(YaruIcons.pan_down), + iconBuilder: (context, selected) => const Icon(YaruIcons.pan_down), builder: (_) => const ExpandablePage(), ), YaruPageItem( titleBuilder: (context) => YaruPageItemTitle.text('YaruProgressIndicator'), - icon: (context, selected) => const Icon(YaruIcons.download), + iconBuilder: (context, selected) => const Icon(YaruIcons.download), builder: (_) => const ProgressIndicatorPage(), ), YaruPageItem( titleBuilder: (context) => YaruPageItemTitle.text('YaruOptionButton'), - icon: (context, selected) => const Icon(YaruIcons.settings), + iconBuilder: (context, selected) => const Icon(YaruIcons.settings), builder: (_) => const YaruPage(children: [OptionButtonPage()]), ), YaruPageItem( titleBuilder: (context) => YaruPageItemTitle.text('YaruRoundToggleButton'), builder: (context) => const RoundToggleButtonPage(), - icon: (context, selected) => const Icon(YaruIcons.app_grid), + iconBuilder: (context, selected) => const Icon(YaruIcons.app_grid), ), YaruPageItem( titleBuilder: (context) => YaruPageItemTitle.text('YaruSection'), - icon: (context, selected) => const Icon(YaruIcons.window), + iconBuilder: (context, selected) => const Icon(YaruIcons.window), builder: (_) => const SectionPage(), ), YaruPageItem( titleBuilder: (context) => YaruPageItemTitle.text('YaruSelectableContainer'), - icon: (context, selected) => const Icon(YaruIcons.selection), + iconBuilder: (context, selected) => const Icon(YaruIcons.selection), builder: (_) => const SelectableContainerPage(), ), YaruPageItem( titleBuilder: (context) => YaruPageItemTitle.text('YaruTabbedPage'), builder: (_) => const TabbedPagePage(), - icon: (context, selected) => const Icon(YaruIcons.tab_new), + iconBuilder: (context, selected) => const Icon(YaruIcons.tab_new), ), YaruPageItem( titleBuilder: (context) => YaruPageItemTitle.text('YaruTile'), - icon: (context, selected) => const Icon(YaruIcons.format_unordered_list), + iconBuilder: (context, selected) => + const Icon(YaruIcons.format_unordered_list), builder: (_) => const TilePage(), ), ]; diff --git a/example/lib/main.dart b/example/lib/main.dart index 9f21f41b2..02c977617 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -45,7 +45,7 @@ class _HomeState extends State { ), ], ), - icon: (context, selected) => const Icon(YaruIcons.settings), + iconBuilder: (context, selected) => const Icon(YaruIcons.settings), ); return MaterialApp( diff --git a/lib/src/pages/layouts/yaru_compact_layout.dart b/lib/src/pages/layouts/yaru_compact_layout.dart index d8b5f3762..44b80db25 100644 --- a/lib/src/pages/layouts/yaru_compact_layout.dart +++ b/lib/src/pages/layouts/yaru_compact_layout.dart @@ -122,11 +122,11 @@ class _YaruCompactLayoutState extends State { destinations: [ for (int i = 0; i < widget.pageItems.length; i++) NavigationRailDestination( - icon: widget.pageItems[i].icon( + icon: widget.pageItems[i].iconBuilder( context, i == _index, ), - selectedIcon: widget.pageItems[i].icon( + selectedIcon: widget.pageItems[i].iconBuilder( context, i == _index, ), diff --git a/lib/src/pages/layouts/yaru_page_item.dart b/lib/src/pages/layouts/yaru_page_item.dart index 051422744..68b44cea9 100644 --- a/lib/src/pages/layouts/yaru_page_item.dart +++ b/lib/src/pages/layouts/yaru_page_item.dart @@ -5,7 +5,7 @@ class YaruPageItem { required this.titleBuilder, required this.builder, this.searchMatches, - required this.icon, + required this.iconBuilder, this.onTap, }); @@ -13,7 +13,7 @@ class YaruPageItem { final WidgetBuilder titleBuilder; final WidgetBuilder builder; - final Widget Function(BuildContext context, bool selected) icon; + final Widget Function(BuildContext context, bool selected) iconBuilder; final bool Function(String value, BuildContext context)? searchMatches; final void Function(BuildContext context)? onTap; } diff --git a/lib/src/pages/layouts/yaru_page_item_list_view.dart b/lib/src/pages/layouts/yaru_page_item_list_view.dart index e7bb898f1..66d004002 100644 --- a/lib/src/pages/layouts/yaru_page_item_list_view.dart +++ b/lib/src/pages/layouts/yaru_page_item_list_view.dart @@ -39,13 +39,14 @@ class YaruPageItemListView extends StatelessWidget { visualDensity: const VisualDensity(horizontal: -4, vertical: -4), selected: index == selectedIndex, title: pages[index].titleBuilder(context), - leading: pages[index].icon(context, index == selectedIndex), + leading: + pages[index].iconBuilder(context, index == selectedIndex), onTap: () => onTap(index), ) : _YaruListTile( selected: index == selectedIndex, title: pages[index].titleBuilder(context), - icon: pages[index].icon(context, index == selectedIndex), + icon: pages[index].iconBuilder(context, index == selectedIndex), onTap: () => onTap(index), ), ); From 983279c29e0b8e4241ea15fc1ed703ce04297498 Mon Sep 17 00:00:00 2001 From: Feichtmeier Date: Thu, 6 Oct 2022 15:32:21 +0200 Subject: [PATCH 5/5] Remove searchMatches callback --- lib/src/pages/layouts/yaru_page_item.dart | 2 -- 1 file changed, 2 deletions(-) diff --git a/lib/src/pages/layouts/yaru_page_item.dart b/lib/src/pages/layouts/yaru_page_item.dart index 68b44cea9..0ed865af2 100644 --- a/lib/src/pages/layouts/yaru_page_item.dart +++ b/lib/src/pages/layouts/yaru_page_item.dart @@ -4,7 +4,6 @@ class YaruPageItem { const YaruPageItem({ required this.titleBuilder, required this.builder, - this.searchMatches, required this.iconBuilder, this.onTap, }); @@ -14,6 +13,5 @@ class YaruPageItem { final WidgetBuilder builder; final Widget Function(BuildContext context, bool selected) iconBuilder; - final bool Function(String value, BuildContext context)? searchMatches; final void Function(BuildContext context)? onTap; }