diff --git a/flutter/lib/core/ui/app_shell.dart b/flutter/lib/core/ui/app_shell.dart index 9475b726..264f4cc5 100644 --- a/flutter/lib/core/ui/app_shell.dart +++ b/flutter/lib/core/ui/app_shell.dart @@ -105,11 +105,13 @@ class AppShell extends ConsumerWidget { appBar: AppBar( title: Text(selectedDestination.title), actions: [ - if (isRecipesRoute) ...existing code... + if (isRecipesRoute) Consumer( builder: (context, ref, child) { - final view = ref.watch(recipesViewProvider).valueOrNull ?? - (mode: RecipesViewMode.grid, columns: 2); + final view = ref.watch(recipesViewProvider).maybeWhen( + data: (v) => v, + orElse: () => (mode: RecipesViewMode.grid, columns: 2), + ); return Row( mainAxisSize: MainAxisSize.min, children: [ diff --git a/flutter/lib/features/recipes/data/recipes_grid_provider.dart b/flutter/lib/features/recipes/data/recipes_grid_provider.dart index ebb9a5f4..7d5f2eea 100644 --- a/flutter/lib/features/recipes/data/recipes_grid_provider.dart +++ b/flutter/lib/features/recipes/data/recipes_grid_provider.dart @@ -17,7 +17,10 @@ class RecipesViewNotifier extends AsyncNotifier<({RecipesViewMode mode, int colu Future toggleMode() async { final prefs = await SharedPreferences.getInstance(); - final current = state.valueOrNull ?? (mode: RecipesViewMode.grid, columns: 2); + final current = state.maybeWhen( + data: (v) => v, + orElse: () => (mode: RecipesViewMode.grid, columns: 2), + ); final newMode = current.mode == RecipesViewMode.grid ? RecipesViewMode.list : RecipesViewMode.grid; await prefs.setInt(_modeKey, newMode.index); state = AsyncData((mode: newMode, columns: current.columns)); @@ -25,7 +28,10 @@ class RecipesViewNotifier extends AsyncNotifier<({RecipesViewMode mode, int colu Future setColumns(int columns) async { final prefs = await SharedPreferences.getInstance(); - final current = state.valueOrNull ?? (mode: RecipesViewMode.grid, columns: 2); + final current = state.maybeWhen( + data: (v) => v, + orElse: () => (mode: RecipesViewMode.grid, columns: 2), + ); await prefs.setInt(_columnsKey, columns); state = AsyncData((mode: current.mode, columns: columns)); } diff --git a/flutter/lib/features/recipes/presentation/recipes_screen.dart b/flutter/lib/features/recipes/presentation/recipes_screen.dart index 9ab0fdcc..779d8335 100644 --- a/flutter/lib/features/recipes/presentation/recipes_screen.dart +++ b/flutter/lib/features/recipes/presentation/recipes_screen.dart @@ -13,8 +13,10 @@ class RecipesScreen extends ConsumerWidget { @override Widget build(BuildContext context, WidgetRef ref) { final recipesAsync = ref.watch(recipesProvider); - final view = ref.watch(recipesViewProvider).valueOrNull ?? - (mode: RecipesViewMode.grid, columns: 2); + final view = ref.watch(recipesViewProvider).maybeWhen( + data: (v) => v, + orElse: () => (mode: RecipesViewMode.grid, columns: 2), + ); return Stack( children: [ @@ -75,7 +77,7 @@ class RecipesScreen extends ConsumerWidget { backgroundImage: NetworkImage(recipe.imageUrl!), ) : const CircleAvatar(child: Icon(Icons.restaurant)), - title: Text(recipe.name), + title: Text(recipe.title), subtitle: Text(recipe.description ?? ''), onTap: () => context.push('/recipes/${recipe.id}'), );