From 3db8ae3cfea035c65dcf34ebec8eee80ea8532f1 Mon Sep 17 00:00:00 2001 From: fhkhd Date: Tue, 5 Mar 2024 14:43:17 +0330 Subject: [PATCH] Fix barcode scanner bug in add package select item --- lib/providers/packages.dart | 31 ++++------- .../PackageScreens/Add/add_item_box.dart | 55 ++++++++++--------- .../Add/package_save_button.dart | 10 +++- 3 files changed, 51 insertions(+), 45 deletions(-) diff --git a/lib/providers/packages.dart b/lib/providers/packages.dart index e69145d..4ef9206 100755 --- a/lib/providers/packages.dart +++ b/lib/providers/packages.dart @@ -43,18 +43,11 @@ class PackageProvider extends ChangeNotifier { notifyListeners(); } - // var isDuplicateItem = false; changeItemVal(String value, int index) { for (var item in filteredItems!) { - // if(itemValues.length > 1 && value != itemValues[index-1].text){ - if (item.udi_name == value) { - itemValues[index].text = item.id; - } - // }else { - // // isDuplicateItem = true; - // print("it is a problem!!!!!!!!!!"); - // } - + if (item.udi_name == value) { + itemValues[index].text = item.id; + } } notifyListeners(); } @@ -85,12 +78,13 @@ class PackageProvider extends ChangeNotifier { } } - changeItemValByScan(String value, int index) { - for (var item in filteredItems!) { - if (item.udi == value) { + changeItemValByScan(String value, int index) async { + filteredItems?.forEach((item) { + if (item.id == value) { itemValues[index].text = "${item.name} - ${item.udi}"; } - } + print("item value : ${itemValues[index].text}"); + }); notifyListeners(); } @@ -350,11 +344,10 @@ class PackageProvider extends ChangeNotifier { for (var item in testResultData['data']) { originalItems!.add( PackageResultObject( - createdAt: item['created_at'], - id: item['id'].toString(), - name: item['name'], - status: item['status'] - ), + createdAt: item['created_at'], + id: item['id'].toString(), + name: item['name'], + status: item['status']), ); } pageNumber += 1; diff --git a/lib/widgets/PackageScreens/Add/add_item_box.dart b/lib/widgets/PackageScreens/Add/add_item_box.dart index e6e5935..ad8f70c 100755 --- a/lib/widgets/PackageScreens/Add/add_item_box.dart +++ b/lib/widgets/PackageScreens/Add/add_item_box.dart @@ -1,4 +1,3 @@ -import 'package:cssd/models/item_model.dart'; import 'package:cssd/providers/packages.dart'; import 'package:cssd/utils/scan.dart'; import 'package:flutter/material.dart'; @@ -23,6 +22,7 @@ class AddItemBox extends StatelessWidget { final double _deviceBlockSize; final TextEditingController values; + // final List> vals; final List vals; @@ -31,6 +31,7 @@ class AddItemBox extends StatelessWidget { final String text; final Color? iconColor; final bool hasRemoveButton; + // final List filteredItems; // final String scanUdi; @@ -117,30 +118,34 @@ class AddItemBox extends StatelessWidget { height: 70, padding: const EdgeInsets.symmetric(horizontal: 0), - child: Consumer(builder: (context, packageProvider, _) { - return TextFormField( - controller: values, - validator: (val) { - if (val!.isEmpty) { - return 'Item required!'; - } - return null; - }, - decoration: InputDecoration( - contentPadding: EdgeInsets.only( - bottom: 12, + child: Consumer( + builder: (context, packageProvider, _) { + return TextFormField( + controller: + packageProvider.itemValues[index], + validator: (val) { + if (val!.isEmpty) { + return 'Item required!'; + } + return null; + }, + decoration: InputDecoration( + contentPadding: EdgeInsets.only( + bottom: 12, + ), + isDense: true, ), - isDense: true, - ), - style: TextStyle( - fontWeight: FontWeight.w700, - color: Colors.black, - fontSize: 4 * _deviceBlockSize, - ), - ); - },), + style: TextStyle( + fontWeight: FontWeight.w700, + color: Colors.black, + fontSize: 4 * _deviceBlockSize, + ), + ); + }, + ), ), isDense: true, + // selectedItemBuilder: packageProvider.itemValues[index].value, items: vals.map((val) { return new DropdownMenuItem( enabled: isEnabled, @@ -166,7 +171,7 @@ class AddItemBox extends StatelessWidget { InkWell( onTap: () { scan().then( - (String result) { + (String result) async { if (result == 'cancel') { print('cancel'); } else if (result == 'error') { @@ -174,8 +179,8 @@ class AddItemBox extends StatelessWidget { } else if (result == 'access') { print('access'); } else { - print(result); - Provider.of(context, + await Provider.of( + context, listen: false) .changeItemValByScan(result, index); isEnabled = false; diff --git a/lib/widgets/PackageScreens/Add/package_save_button.dart b/lib/widgets/PackageScreens/Add/package_save_button.dart index eef2446..031a4ea 100755 --- a/lib/widgets/PackageScreens/Add/package_save_button.dart +++ b/lib/widgets/PackageScreens/Add/package_save_button.dart @@ -41,7 +41,15 @@ class PackageAddSaveButton extends StatelessWidget { } List items = []; for (TextEditingController item in itemValues) { - items.add(item.text); + print(item.text); + if (item.text.toString().contains(" ")) { + packageProvider.filteredItems?.forEach((element) { + if (element.udi_name.toString() == item.text.toString()) { + items.add(element.id.toString()); + } + }); + } else + items.add(item.text); } items = items.toSet().toList(); await Provider.of(context, listen: false)