From d1c6355fe8a32d4b7fda7d1ba42eb0e0d0209a53 Mon Sep 17 00:00:00 2001 From: fhkhd Date: Fri, 15 Mar 2024 17:54:16 +0330 Subject: [PATCH] Fix scan bug --- lib/providers/packages.dart | 41 +++++++++++++++++++ .../PackageScreens/Add/add_item_box.dart | 37 ++--------------- 2 files changed, 45 insertions(+), 33 deletions(-) diff --git a/lib/providers/packages.dart b/lib/providers/packages.dart index 4ef9206..2449f7a 100755 --- a/lib/providers/packages.dart +++ b/lib/providers/packages.dart @@ -3,7 +3,9 @@ import 'dart:convert'; import 'package:cssd/models/item_model.dart'; import 'package:cssd/models/package_model.dart'; import 'package:flutter_downloader/flutter_downloader.dart'; +import 'package:fluttertoast/fluttertoast.dart'; import 'package:path_provider/path_provider.dart'; +import 'package:cssd/utils/scan.dart'; import '../config/urls.dart'; import '../config/user.dart'; @@ -78,16 +80,55 @@ class PackageProvider extends ChangeNotifier { } } + var isCurrectItem = false; + changeItemValByScan(String value, int index) async { filteredItems?.forEach((item) { if (item.id == value) { itemValues[index].text = "${item.name} - ${item.udi}"; + isCurrectItem = true; } print("item value : ${itemValues[index].text}"); }); notifyListeners(); } + void scanItem(isEnabled, context, index) async { + await scan().then( + (String result) async { + if (result == 'cancel') { + if (index != 0) await removeItemVal(); + print('cancel'); + } else if (result == 'error') { + print('error'); + } else if (result == 'access') { + print('access'); + } else { + await changeItemValByScan(result, index); + isEnabled = false; + print("currect item : ${isCurrectItem}"); + if (isCurrectItem) { + Fluttertoast.showToast( + msg: "Item added.", + toastLength: Toast.LENGTH_SHORT, + gravity: ToastGravity.BOTTOM, + ); + scanItem(isEnabled, context, index += 1); + await addItemVal(); + isCurrectItem = false; + } else { + Fluttertoast.showToast( + msg: "No item exists,try again!", + toastLength: Toast.LENGTH_SHORT, + gravity: ToastGravity.BOTTOM, + ); + scanItem(isEnabled, context, index); + } + } + }, + ); + } + String searchBoxValue = ''; bool filterOn = false; List? items; diff --git a/lib/widgets/PackageScreens/Add/add_item_box.dart b/lib/widgets/PackageScreens/Add/add_item_box.dart index 868b324..ac40510 100755 --- a/lib/widgets/PackageScreens/Add/add_item_box.dart +++ b/lib/widgets/PackageScreens/Add/add_item_box.dart @@ -1,7 +1,5 @@ import 'package:cssd/providers/packages.dart'; -import 'package:cssd/utils/scan.dart'; import 'package:flutter/material.dart'; -import 'package:fluttertoast/fluttertoast.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:provider/provider.dart'; @@ -170,8 +168,10 @@ class AddItemBox extends StatelessWidget { ), Spacer(), InkWell( - onTap: () { - ScanItem(isEnabled, context, index); + onTap: () async { + Provider.of(context, + listen: false) + .scanItem(isEnabled, context, index); }, child: Container( padding: EdgeInsets.all(8), @@ -242,33 +242,4 @@ class AddItemBox extends StatelessWidget { ), ); } - - void ScanItem(isEnabled, context, index) async { - await scan().then( - (String result) async { - if (result == 'cancel') { - if (index != 0) - await Provider.of(context, listen: false) - .removeItemVal(); - print('cancel'); - } else if (result == 'error') { - print('error'); - } else if (result == 'access') { - print('access'); - } else { - await Provider.of(context, listen: false) - .changeItemValByScan(result, index); - isEnabled = false; - Fluttertoast.showToast( - msg: "Item added.", - toastLength: Toast.LENGTH_SHORT, - gravity: ToastGravity.BOTTOM, - ); - ScanItem(isEnabled, context, index += 1); - await Provider.of(context, listen: false) - .addItemVal(); - } - }, - ); - } }