diff --git a/client/lib/features/scan/recognition_confirm_screen.dart b/client/lib/features/scan/recognition_confirm_screen.dart index eb7d439..679ae9f 100644 --- a/client/lib/features/scan/recognition_confirm_screen.dart +++ b/client/lib/features/scan/recognition_confirm_screen.dart @@ -248,10 +248,14 @@ class _ItemTileState extends State<_ItemTile> { const SizedBox(width: 8), widget.units.isEmpty ? const SizedBox(width: 48) - : DropdownButton( - value: widget.units.containsKey(widget.item.unit) - ? widget.item.unit - : widget.units.keys.first, + : Builder(builder: (builderContext) { + // Reconcile item.unit with valid server codes so that the + // submitted value matches what the dropdown displays. + if (!widget.units.containsKey(widget.item.unit)) { + widget.item.unit = widget.units.keys.first; + } + return DropdownButton( + value: widget.item.unit, underline: const SizedBox(), items: widget.units.entries .map((e) => DropdownMenuItem(value: e.key, child: Text(e.value))) @@ -262,7 +266,8 @@ class _ItemTileState extends State<_ItemTile> { widget.onChanged(); } }, - ), + ); + }), IconButton( icon: const Icon(Icons.close), onPressed: widget.onDelete, diff --git a/client/lib/features/scan/recognition_service.dart b/client/lib/features/scan/recognition_service.dart index 590bf05..1fdbf0f 100644 --- a/client/lib/features/scan/recognition_service.dart +++ b/client/lib/features/scan/recognition_service.dart @@ -39,7 +39,7 @@ class RecognizedItem { return RecognizedItem( name: json['name'] as String? ?? '', quantity: (json['quantity'] as num?)?.toDouble() ?? 1.0, - unit: json['unit'] as String? ?? 'шт', + unit: json['unit'] as String? ?? 'pcs', category: json['category'] as String? ?? 'other', confidence: (json['confidence'] as num?)?.toDouble() ?? 0.0, mappingId: json['mapping_id'] as String?,