diff --git a/lib/helper/utils.dart b/lib/helper/utils.dart index f4db3acd..41026321 100644 --- a/lib/helper/utils.dart +++ b/lib/helper/utils.dart @@ -33,11 +33,11 @@ class Utils { static bool get isLoading => _isLoadingVisible; - static void showToast(String message, {bool longDuration = true}) { + static void showToast(String message, {bool longDuration = true, ToastGravity toastGravity = ToastGravity.BOTTOM}) { Fluttertoast.showToast( msg: message, toastLength: longDuration ? Toast.LENGTH_LONG : Toast.LENGTH_SHORT, - gravity: ToastGravity.BOTTOM, + gravity: toastGravity, timeInSecForIosWeb: 1, backgroundColor: Colors.black54, textColor: Colors.white, diff --git a/lib/views/widgets/qr/asset_scan_qr.dart b/lib/views/widgets/qr/asset_scan_qr.dart index 39610965..1737b65e 100644 --- a/lib/views/widgets/qr/asset_scan_qr.dart +++ b/lib/views/widgets/qr/asset_scan_qr.dart @@ -1,15 +1,19 @@ import 'dart:io'; import 'package:flutter/material.dart'; +import 'package:fluttertoast/fluttertoast.dart'; import 'package:provider/provider.dart'; import 'package:qr_code_scanner_plus/qr_code_scanner_plus.dart'; import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/int_extensions.dart'; +import 'package:test_sa/extensions/string_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; +import 'package:test_sa/helper/utils.dart'; import 'package:test_sa/models/device/asset.dart'; import 'package:test_sa/modules/cm_module/views/components/action_button/footer_action_button.dart'; import 'package:test_sa/modules/tm_module/device_transfer/search_device_page.dart'; +import 'package:test_sa/new_views/app_style/app_color.dart'; import 'package:test_sa/new_views/common_widgets/default_app_bar.dart'; import '../../../controllers/providers/api/devices_provider.dart'; @@ -32,6 +36,7 @@ class _AssetScanQrState extends State { // Barcode result; QRViewController? _controller; bool _scanDone = false; + bool _scanning = false; final GlobalKey qrKey = GlobalKey(debugLabel: 'QR_scanner'); late AssetProvider _devicesProvider; @@ -93,7 +98,14 @@ class _AssetScanQrState extends State { _scanDone = false; } } else { + _controller?.pauseCamera(); + setState(() { + _scanning = true; + }); final result = await _getDevice(scanData.code!, isQr: true); + setState(() { + _scanning = false; + }); if (result.isNotEmpty) { if (widget.multiSelection) { Navigator.of(context).pop([result[0]]); @@ -101,6 +113,8 @@ class _AssetScanQrState extends State { Navigator.of(context).pop(result[0]); } } else { + Utils.showToast("No Item Found. Try Again", toastGravity: ToastGravity.CENTER); + _controller?.resumeCamera(); _scanDone = false; } } @@ -115,6 +129,14 @@ class _AssetScanQrState extends State { fit: BoxFit.fitHeight, ), ), + if (_scanning) + Container( + width: 56.toScreenHeight, + height: 56.toScreenHeight, + padding: const EdgeInsets.all(8), + decoration: const BoxDecoration(shape: BoxShape.circle, color: Colors.white), + child: const CircularProgressIndicator(color: AppColor.primary10, strokeWidth: 3), + ).center ], ).expanded, if (widget.enablePickManually)