diff --git a/assets/icon-only.png b/assets/icon-only.png index 101e7b5..f484e72 100644 Binary files a/assets/icon-only.png and b/assets/icon-only.png differ diff --git a/lib/features/converter/presentation/pages/converter_page.dart b/lib/features/converter/presentation/pages/converter_page.dart index ea8fd82..d599b1f 100644 --- a/lib/features/converter/presentation/pages/converter_page.dart +++ b/lib/features/converter/presentation/pages/converter_page.dart @@ -89,7 +89,6 @@ class _ConverterPageState extends State { : null, ), onChanged: (v) { - setState(() {}); context.read().search(v); }, ), diff --git a/lib/features/shopping_list/presentation/pages/shopping_list_page.dart b/lib/features/shopping_list/presentation/pages/shopping_list_page.dart index eed501b..c39819d 100644 --- a/lib/features/shopping_list/presentation/pages/shopping_list_page.dart +++ b/lib/features/shopping_list/presentation/pages/shopping_list_page.dart @@ -57,6 +57,8 @@ class _ShoppingListPageState extends State { Widget build(BuildContext context) { final theme = Theme.of(context); final provider = context.watch(); + final pending = provider.pendingItems; + final checked = provider.checkedItems; return Column( crossAxisAlignment: CrossAxisAlignment.stretch, @@ -73,8 +75,8 @@ class _ShoppingListPageState extends State { ), if (provider.items.isNotEmpty) Text( - '${provider.checkedItems.length} / ${provider.items.length} ' - 'completat${provider.checkedItems.length == 1 ? 'o' : 'i'}', + '${checked.length} / ${provider.items.length} ' + 'completat${checked.length == 1 ? 'o' : 'i'}', style: theme.textTheme.bodyMedium?.copyWith( color: theme.colorScheme.onSurface.withValues(alpha: 0.6), ), @@ -124,25 +126,23 @@ class _ShoppingListPageState extends State { padding: const EdgeInsets.fromLTRB(16, 0, 16, 16), children: [ // Pending items - if (provider.pendingItems.isNotEmpty) + if (pending.isNotEmpty) Card( margin: EdgeInsets.zero, child: Column( children: [ - for (int i = 0; - i < provider.pendingItems.length; - i++) ...[ + for (int i = 0; i < pending.length; i++) ...[ if (i > 0) const Divider( height: 1, indent: 16, endIndent: 16), ShoppingItemTile( - item: provider.pendingItems[i], + item: pending[i], onToggle: () => context .read() - .toggle(provider.pendingItems[i].id), + .toggle(pending[i].id), onRemove: () => context .read() - .remove(provider.pendingItems[i].id), + .remove(pending[i].id), ), ], ], @@ -150,13 +150,13 @@ class _ShoppingListPageState extends State { ), // Checked section - if (provider.checkedItems.isNotEmpty) ...[ + if (checked.isNotEmpty) ...[ Padding( padding: const EdgeInsets.symmetric(vertical: 12), child: Row( children: [ Text( - 'COMPLETATI (${provider.checkedItems.length})', + 'COMPLETATI (${checked.length})', style: theme.textTheme.labelSmall?.copyWith( fontWeight: FontWeight.w700, letterSpacing: 0.8, @@ -178,20 +178,18 @@ class _ShoppingListPageState extends State { margin: EdgeInsets.zero, child: Column( children: [ - for (int i = 0; - i < provider.checkedItems.length; - i++) ...[ + for (int i = 0; i < checked.length; i++) ...[ if (i > 0) const Divider( height: 1, indent: 16, endIndent: 16), ShoppingItemTile( - item: provider.checkedItems[i], + item: checked[i], onToggle: () => context .read() - .toggle(provider.checkedItems[i].id), + .toggle(checked[i].id), onRemove: () => context .read() - .remove(provider.checkedItems[i].id), + .remove(checked[i].id), ), ], ],