diff --git a/lib/controllers/providers/api/devices_provider.dart b/lib/controllers/providers/api/devices_provider.dart index 7674b2d7..5bbd281f 100644 --- a/lib/controllers/providers/api/devices_provider.dart +++ b/lib/controllers/providers/api/devices_provider.dart @@ -11,17 +11,19 @@ import 'package:test_sa/models/user.dart'; class DevicesProvider extends ChangeNotifier { //reset provider data void reset() { - _devices = null; + _devices = []; _stateCode = null; } + final pageItemNumber = 10; + bool nextPage = true; // state code of current request to defied error message // like 400 customer request failed // 500 service not available int _stateCode; int get stateCode => _stateCode; - List _devices; + List _devices=[]; List get devices => _devices; // when categories in-process _loading = true @@ -52,7 +54,8 @@ class DevicesProvider extends ChangeNotifier { Response response; try { response = await ApiManager.instance.post(URLs.getEquipment, body: { - "pageSize": 50, + "pageSize": pageItemNumber , + "pageNumber":devices.length ~/ pageItemNumber + 1, "siteId": hospitalId, if (serialNumber?.isEmpty == false) "assetSerialNumber": serialNumber, if (number?.isEmpty == false) "assetNo": number, @@ -67,8 +70,12 @@ class DevicesProvider extends ChangeNotifier { if (response.statusCode >= 200 && response.statusCode < 300) { // client's request was successfully received List equipmentListJson = json.decode(response.body)["data"]; - _devices = equipmentListJson.map((device) => Device.fromJson(device)).toList(); - } + _devices.addAll(equipmentListJson.map((device) => Device.fromJson(device)).toList()); + nextPage = true; + }else + { + nextPage = false; + } _loading = false; notifyListeners(); return response.statusCode; @@ -89,8 +96,9 @@ class DevicesProvider extends ChangeNotifier { Response response; try { response = await ApiManager.instance.post(URLs.getEquipment, body: { - "pageSize": 50, - "siteId": hospitalId, + "pageSize": pageItemNumber, + "pageNumber":devices.length ~/ pageItemNumber + 1, + "siteId": devices.length ~/ pageItemNumber + 1, if (serialNumber?.isEmpty == false) "assetSerialNumber": serialNumber, if (number?.isEmpty == false) "assetNo": number, }); @@ -105,6 +113,8 @@ class DevicesProvider extends ChangeNotifier { // client's request was successfully received List equipmentListJson = json.decode(response.body)["data"]; page = equipmentListJson.map((device) => Device.fromJson(device)).toList(); + _devices.addAll(equipmentListJson.map((device) => Device.fromJson(device)).toList()); + notifyListeners(); } return page; } catch (error) { diff --git a/lib/views/pages/device_transfer/request_device_transfer.dart b/lib/views/pages/device_transfer/request_device_transfer.dart index 6eb86d08..b3beb23f 100644 --- a/lib/views/pages/device_transfer/request_device_transfer.dart +++ b/lib/views/pages/device_transfer/request_device_transfer.dart @@ -68,16 +68,17 @@ class _RequestDeviceTransferState extends State { _isLoading = false; setState(() {}); if (status >= 200 && status < 300) { - Fluttertoast.showToast( - msg: _subtitle.requestCompleteSuccessfully, - ); + // Fluttertoast.showToast( + // msg: _subtitle.requestCompleteSuccessfully, + // ); Navigator.of(context).pop(); - } else { - String errorMessage = HttpStatusManger.getStatusMessage(status: status, subtitle: _subtitle); - ScaffoldMessenger.of(context).showSnackBar(SnackBar( - content: Text(errorMessage), - )); } + // else { + // String errorMessage = HttpStatusManger.getStatusMessage(status: status, subtitle: _subtitle); + // ScaffoldMessenger.of(context).showSnackBar(SnackBar( + // content: Text(errorMessage), + // )); + // } } @override diff --git a/lib/views/widgets/equipment/single_device_picker.dart b/lib/views/widgets/equipment/single_device_picker.dart index a31be4df..03b0d66f 100644 --- a/lib/views/widgets/equipment/single_device_picker.dart +++ b/lib/views/widgets/equipment/single_device_picker.dart @@ -8,6 +8,7 @@ import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; import 'package:test_sa/models/device/device.dart'; import 'package:test_sa/models/subtitle.dart'; import 'package:test_sa/views/widgets/equipment/device_item.dart'; +import 'package:test_sa/views/widgets/loaders/lazy_loading.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; import 'package:test_sa/views/widgets/loaders/no_item_found.dart'; import 'package:test_sa/views/widgets/qr/scan_qr.dart'; @@ -74,7 +75,6 @@ class _SingleDevicePickerState extends State { if(_firstTime && _devicesProvider.devices != null){ _searchableList.clear(); _searchableList.addAll(_devicesProvider.devices); - _firstTime = false; } _subtitle = AppLocalization.of(context).subtitle; return Scaffold( @@ -143,19 +143,31 @@ class _SingleDevicePickerState extends State { Expanded( child: _searchableList.isEmpty ? NoItemFound(message: _subtitle.noDeviceFound,): - ListView.builder( - padding: EdgeInsets.zero, - shrinkWrap: true, - itemCount: _searchableList.length, - itemBuilder: (listContext,itemIndex){ - return DeviceItem( - device: _searchableList[itemIndex], - onPressed: (device){ - Navigator.of(context).pop(device); - }, + LazyLoading( + nextPage: _devicesProvider.nextPage, + onLazyLoad: () async { + await _devicesProvider.getDevicesList( + user: _userProvider.user, + host: _settingProvider.host, + hospitalId: _userProvider.user.hospital?.id, + serialNumber: snController.text, + number: numberController.text ); }, - ), + child:ListView.builder( + padding: EdgeInsets.zero, + shrinkWrap: true, + itemCount: _searchableList.length, + itemBuilder: (listContext,itemIndex){ + return DeviceItem( + device: _searchableList[itemIndex], + onPressed: (device){ + Navigator.of(context).pop(device); + }, + ); + }, + ), + ) ), ], ), diff --git a/lib/views/widgets/loaders/lazy_loading.dart b/lib/views/widgets/loaders/lazy_loading.dart index d5e5f2ed..f59871e3 100644 --- a/lib/views/widgets/loaders/lazy_loading.dart +++ b/lib/views/widgets/loaders/lazy_loading.dart @@ -27,12 +27,10 @@ class _LazyLoadingState extends State with TickerProviderStateMixin _scrollListener() async { if (!_animationController.isAnimating && !_animationController.isCompleted && widget.nextPage) { - _animationController.forward(); - setState(() {}); + //_animationController.forward(); await widget.onLazyLoad(); await Future.delayed(Duration(milliseconds: 600)); - setState(() {}); - _animationController.reverse(); + // _animationController.reverse(); } }