feat: refactor RecipesScreen and RecipesViewNotifier to support dynamic view modes and column selection
This commit is contained in:
@@ -4,6 +4,9 @@ import 'package:go_router/go_router.dart';
|
||||
|
||||
import '../../features/auth/data/auth_providers.dart';
|
||||
import '../../features/recipes/data/recipes_grid_provider.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
|
||||
const _adminDestination = _AppDestination(
|
||||
path: '/admin',
|
||||
@@ -102,18 +105,40 @@ class AppShell extends ConsumerWidget {
|
||||
appBar: AppBar(
|
||||
title: Text(selectedDestination.title),
|
||||
actions: [
|
||||
if (isRecipesRoute)
|
||||
PopupMenuButton<int>(
|
||||
icon: const Icon(Icons.grid_view),
|
||||
tooltip: 'Välj antal kolumner',
|
||||
onSelected: (columns) =>
|
||||
ref.read(recipesGridProvider.notifier).setColumns(columns),
|
||||
itemBuilder: (context) => const [
|
||||
PopupMenuItem(value: 2, child: Text('2 kolumner')),
|
||||
PopupMenuItem(value: 4, child: Text('4 kolumner')),
|
||||
PopupMenuItem(value: 6, child: Text('6 kolumner')),
|
||||
PopupMenuItem(value: 8, child: Text('8 kolumner')),
|
||||
],
|
||||
if (isRecipesRoute) ...existing code...
|
||||
Consumer(
|
||||
builder: (context, ref, child) {
|
||||
final view = ref.watch(recipesViewProvider).valueOrNull ??
|
||||
(mode: RecipesViewMode.grid, columns: 2);
|
||||
return Row(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
IconButton(
|
||||
tooltip: view.mode == RecipesViewMode.grid
|
||||
? 'Visa som lista'
|
||||
: 'Visa som grid',
|
||||
icon: Icon(view.mode == RecipesViewMode.grid
|
||||
? Icons.view_list
|
||||
: Icons.grid_view),
|
||||
onPressed: () =>
|
||||
ref.read(recipesViewProvider.notifier).toggleMode(),
|
||||
),
|
||||
if (view.mode == RecipesViewMode.grid)
|
||||
PopupMenuButton<int>(
|
||||
icon: const Icon(Icons.grid_view),
|
||||
tooltip: 'Välj antal kolumner',
|
||||
onSelected: (columns) =>
|
||||
ref.read(recipesViewProvider.notifier).setColumns(columns),
|
||||
itemBuilder: (context) => const [
|
||||
PopupMenuItem(value: 2, child: Text('2 kolumner')),
|
||||
PopupMenuItem(value: 4, child: Text('4 kolumner')),
|
||||
PopupMenuItem(value: 6, child: Text('6 kolumner')),
|
||||
PopupMenuItem(value: 8, child: Text('8 kolumner')),
|
||||
],
|
||||
),
|
||||
],
|
||||
);
|
||||
},
|
||||
),
|
||||
IconButton(
|
||||
tooltip: 'Logga ut',
|
||||
|
||||
Reference in New Issue
Block a user