feat: remove unused methods and improve widget styling in various screens
Test Suite / test (24.15.0) (push) Has been cancelled
Test Suite / test (24.15.0) (push) Has been cancelled
This commit is contained in:
@@ -111,13 +111,6 @@ class AppShell extends ConsumerWidget {
|
||||
!location.startsWith('/recipes/');
|
||||
final isImportRoute = location == '/import';
|
||||
|
||||
Future<void> logout() async {
|
||||
await ref.read(authStateProvider.notifier).logout();
|
||||
if (context.mounted) {
|
||||
context.go('/login');
|
||||
}
|
||||
}
|
||||
|
||||
Widget shell = Scaffold(
|
||||
appBar: AppBar(
|
||||
title: Text(selectedDestination.title),
|
||||
|
||||
@@ -35,14 +35,6 @@ class CategoryThenProductPicker {
|
||||
}
|
||||
return ids;
|
||||
}
|
||||
|
||||
/// Hittar en nod med givet id djupet i trädet.
|
||||
static AdminCategoryNode? _findNode(List<AdminCategoryNode> nodes, int id) {
|
||||
for (final node in nodes) {
|
||||
if (node.id == id) return node;
|
||||
final found = _findNode(node.children, id);
|
||||
if (found != null) return found;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@@ -105,7 +105,8 @@ class ProductPickerField extends StatelessWidget {
|
||||
onChanged?.call(null);
|
||||
return;
|
||||
}
|
||||
if (result is int) onChanged?.call(result);
|
||||
if (result is! int) return;
|
||||
onChanged?.call(result);
|
||||
}
|
||||
|
||||
/// Öppnar produktväljarens bottenark utan att binda den till en specifik widget-instans.
|
||||
|
||||
@@ -231,7 +231,7 @@ class _AdminAliasesPanelState extends ConsumerState<AdminAliasesPanel> {
|
||||
const SizedBox(width: 8),
|
||||
Expanded(
|
||||
child: DropdownButtonFormField<int>(
|
||||
value: _selectedProductId,
|
||||
initialValue: _selectedProductId,
|
||||
decoration: const InputDecoration(
|
||||
labelText: 'Produkt',
|
||||
border: OutlineInputBorder(),
|
||||
|
||||
@@ -667,7 +667,7 @@ class _ReceiptImportTabState extends ConsumerState<ReceiptImportTab> {
|
||||
decoration: BoxDecoration(
|
||||
color: bg,
|
||||
borderRadius: BorderRadius.circular(999),
|
||||
border: Border.all(color: fg.withOpacity(0.3)),
|
||||
border: Border.all(color: fg.withValues(alpha: 0.3)),
|
||||
),
|
||||
child: Text(
|
||||
label,
|
||||
@@ -987,7 +987,7 @@ class _ReceiptImportResultRow extends ConsumerWidget {
|
||||
Icon(Icons.kitchen_outlined, size: 12, color: Colors.blue.shade700),
|
||||
const SizedBox(width: 3),
|
||||
Text(
|
||||
'I lager: ${existingInv.quantity} ${existingInv.unit} → blir ${(existingInv.quantity + (convertedPreviewQty ?? 0)).toStringAsFixed(existingInv.quantity % 1 == 0 ? 0 : 2)} ${existingInv.unit}',
|
||||
'I lager: ${existingInv.quantity} ${existingInv.unit} → blir ${(existingInv.quantity + convertedPreviewQty!).toStringAsFixed(existingInv.quantity % 1 == 0 ? 0 : 2)} ${existingInv.unit}',
|
||||
style: theme.textTheme.bodySmall?.copyWith(color: Colors.blue.shade700),
|
||||
),
|
||||
]),
|
||||
|
||||
@@ -286,7 +286,7 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
||||
MaterialPageRoute(builder: (_) => const UserAliasesScreen()),
|
||||
),
|
||||
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)),
|
||||
tileColor: Theme.of(context).colorScheme.surfaceContainerHighest.withOpacity(0.4),
|
||||
tileColor: Theme.of(context).colorScheme.surfaceContainerHighest.withValues(alpha: 0.4),
|
||||
),
|
||||
const SizedBox(height: 24),
|
||||
SizedBox(
|
||||
|
||||
@@ -2,8 +2,7 @@ import 'package:flutter/material.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
|
||||
import '../../admin/data/admin_repository.dart';
|
||||
import '../../admin/domain/receipt_alias.dart';
|
||||
import '../../auth/data/auth_providers.dart';
|
||||
import '../../admin/domain/receipt_alias.dart';}
|
||||
|
||||
class UserAliasesScreen extends ConsumerStatefulWidget {
|
||||
const UserAliasesScreen({super.key});
|
||||
|
||||
Reference in New Issue
Block a user