From 47801935e95e5c7c23f23ce1952344510faf6561 Mon Sep 17 00:00:00 2001 From: Nils-Johan Gynther Date: Fri, 1 May 2026 02:00:13 +0200 Subject: [PATCH] feat: enhance ProductPickerField to use rawName for initial query in receipt import --- flutter/lib/core/ui/product_picker_field.dart | 5 ++++- .../lib/features/import/presentation/receipt_import_tab.dart | 5 +++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/flutter/lib/core/ui/product_picker_field.dart b/flutter/lib/core/ui/product_picker_field.dart index b983c7ff..73e08070 100644 --- a/flutter/lib/core/ui/product_picker_field.dart +++ b/flutter/lib/core/ui/product_picker_field.dart @@ -91,6 +91,7 @@ class ProductPickerField extends StatelessWidget { } Future _openPicker(BuildContext context) async { + // Skapa controller utanför showSheet för att undvika reset vid rebuild final result = await ProductPickerField.showSheet( context, products: products, @@ -121,6 +122,8 @@ class ProductPickerField extends StatelessWidget { isScrollControlled: true, useSafeArea: true, builder: (sheetContext) { + // Skapa controller EN gång per öppnad ark — inte inuti StatefulBuilder + final controller = TextEditingController(text: initialQuery ?? ''); var query = initialQuery ?? ''; return StatefulBuilder( @@ -155,7 +158,7 @@ class ProductPickerField extends StatelessWidget { padding: const EdgeInsets.fromLTRB(16, 0, 16, 8), child: TextField( autofocus: true, - controller: TextEditingController(text: initialQuery ?? ''), + controller: controller, decoration: const InputDecoration( hintText: 'Sök produkt...', prefixIcon: Icon(Icons.search), diff --git a/flutter/lib/features/import/presentation/receipt_import_tab.dart b/flutter/lib/features/import/presentation/receipt_import_tab.dart index d4910ac5..e03e7cd4 100644 --- a/flutter/lib/features/import/presentation/receipt_import_tab.dart +++ b/flutter/lib/features/import/presentation/receipt_import_tab.dart @@ -98,13 +98,14 @@ class _EditDialogState extends State<_EditDialog> { _productName = item.suggestedProductName; }); } else if (aiCategory != null) { - // Öppna pickern med kategorinamnet sökt + // Öppna pickern med råtexten från kvittot som sökord — kategorinamnet + // matchar inte produktnamn, men rawName gör det troligtvis ProductPickerField.showSheet( context, products: widget.products, value: _productId, label: 'Produkt', - initialQuery: aiCategory, + initialQuery: item.rawName, ).then((id) { if (id != null && mounted) { setState(() {