feat: enhance navigation by adding recipe links in inventory and pantry screens
This commit is contained in:
@@ -83,7 +83,7 @@ class _RecipeImportTabState extends ConsumerState<RecipeImportTab> {
|
||||
context.push('/recipes/create', extra: <String, dynamic>{
|
||||
'markdown': result.markdown,
|
||||
'imageUrl': result.imageUrl,
|
||||
});
|
||||
}).then((_) => context.go('/recipes'));
|
||||
} catch (e) {
|
||||
if (!mounted) return;
|
||||
setState(() => _error = mapErrorToUserMessage(e, context));
|
||||
|
||||
@@ -47,7 +47,7 @@ class _ConsumeInventoryScreenState
|
||||
);
|
||||
ref.invalidate(inventoryDetailProvider(widget.itemId));
|
||||
ref.invalidate(inventoryProvider);
|
||||
if (mounted) context.pop();
|
||||
if (mounted) context.go('/inventory');
|
||||
} catch (e) {
|
||||
if (mounted) {
|
||||
ScaffoldMessenger.of(context)
|
||||
|
||||
@@ -119,10 +119,21 @@ class InventoryScreen extends ConsumerWidget {
|
||||
Positioned(
|
||||
right: 16,
|
||||
bottom: 16,
|
||||
child: FloatingActionButton.extended(
|
||||
onPressed: () => context.push('/inventory/create'),
|
||||
icon: const Icon(Icons.add),
|
||||
label: const Text('Lägg till'),
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
FloatingActionButton.extended(
|
||||
onPressed: () => context.push('/inventory/create'),
|
||||
icon: const Icon(Icons.add),
|
||||
label: const Text('Lägg till'),
|
||||
),
|
||||
const SizedBox(height: 8),
|
||||
FloatingActionButton.extended(
|
||||
onPressed: () => context.go('/recipes'),
|
||||
icon: const Icon(Icons.restaurant_menu),
|
||||
label: const Text('Recept'),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
|
||||
@@ -129,6 +129,11 @@ class _MealPlanScreenState extends ConsumerState<MealPlanScreen> {
|
||||
onPressed: () => ref.read(mealPlanWeekOffsetProvider.notifier).reset(),
|
||||
child: Text(l10n.mealPlanWeekCurrent),
|
||||
),
|
||||
IconButton(
|
||||
tooltip: 'Gå till recept',
|
||||
icon: const Icon(Icons.restaurant_menu),
|
||||
onPressed: () => context.go('/recipes'),
|
||||
),
|
||||
],
|
||||
),
|
||||
const SizedBox(height: 12),
|
||||
|
||||
@@ -284,9 +284,19 @@ class _PantryScreenState extends ConsumerState<PantryScreen> {
|
||||
return ListView(
|
||||
padding: const EdgeInsets.all(16),
|
||||
children: [
|
||||
Text(
|
||||
'Produkter du alltid räknar med att ha hemma.',
|
||||
style: Theme.of(context).textTheme.bodyMedium,
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Text(
|
||||
'Produkter du alltid räknar med att ha hemma.',
|
||||
style: Theme.of(context).textTheme.bodyMedium,
|
||||
),
|
||||
IconButton(
|
||||
tooltip: 'Gå till recept',
|
||||
icon: const Icon(Icons.restaurant_menu),
|
||||
onPressed: () => context.go('/recipes'),
|
||||
),
|
||||
],
|
||||
),
|
||||
const SizedBox(height: 12),
|
||||
Row(
|
||||
|
||||
@@ -36,6 +36,11 @@ class RecipeDetailScreen extends ConsumerWidget {
|
||||
onPressed: () =>
|
||||
context.push('/recipes/$recipeId/edit'),
|
||||
),
|
||||
IconButton(
|
||||
tooltip: 'Gå till inventarie',
|
||||
icon: const Icon(Icons.inventory_2_outlined),
|
||||
onPressed: () => context.go('/inventory'),
|
||||
),
|
||||
_DeleteButton(recipe: recipeAsync.value!),
|
||||
],
|
||||
),
|
||||
@@ -46,6 +51,7 @@ class RecipeDetailScreen extends ConsumerWidget {
|
||||
onRetry: () => ref.invalidate(recipeDetailProvider(recipeId)),
|
||||
),
|
||||
data: (recipe) => CustomScrollView(
|
||||
physics: const BouncingScrollPhysics(),
|
||||
slivers: [
|
||||
SliverAppBar(
|
||||
expandedHeight: MediaQuery.of(context).size.height * 2 / 3,
|
||||
|
||||
@@ -218,7 +218,7 @@ class _RecipeEditScreenState extends ConsumerState<RecipeEditScreen> {
|
||||
);
|
||||
ref.invalidate(recipeDetailProvider(widget.recipeId));
|
||||
ref.invalidate(recipesProvider);
|
||||
if (mounted) context.pop();
|
||||
if (mounted) context.go('/recipes/${widget.recipeId}');
|
||||
} on ApiException catch (e) {
|
||||
if (e.type == ApiErrorType.unauthorized) {
|
||||
await ref.read(authStateProvider.notifier).logout();
|
||||
|
||||
Reference in New Issue
Block a user