import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:test_sa/controllers/providers/api/device_transfer_provider.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; import 'package:test_sa/models/device/device_transfer_search.dart'; import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/widgets/buttons/app_back_button.dart'; import 'package:test_sa/views/widgets/device_trancfer/device_transfer_list.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; import 'package:test_sa/views/widgets/search/asset_transfer_search_dialog.dart'; import '../../widgets/buttons/app_icon_button.dart'; class TrackDeviceTransferPage extends StatefulWidget { static const String id = "/track-device-transfer"; const TrackDeviceTransferPage({Key key}) : super(key: key); @override State createState() => _TrackDeviceTransferPageState(); } class _TrackDeviceTransferPageState extends State with TickerProviderStateMixin { DeviceTransferProvider _deviceTransferProvider; UserProvider _userProvider; SettingProvider _settingProvider; @override Widget build(BuildContext context) { _deviceTransferProvider = Provider.of(context); _userProvider = Provider.of(context); _settingProvider = Provider.of(context); return Scaffold( body: SafeArea( child: LoadingManager( isLoading: _deviceTransferProvider.isLoading, isFailedLoading: _deviceTransferProvider.items == null, stateCode: _deviceTransferProvider.stateCode, onRefresh: () async { _deviceTransferProvider.reset(); await _deviceTransferProvider.getRequests( user: _userProvider.user, host: _settingProvider.host, ); }, child: Stack( children: [ Column( children: [ Container( color: AColors.primaryColor, padding: const EdgeInsets.symmetric(horizontal: 0, vertical: 4), child: Column( children: [ Row( children: [ const ABackButton(), Expanded( child: Center( child: Text( "Asset Transfer", style: Theme.of(context).textTheme.headline6.copyWith(color: AColors.white, fontStyle: FontStyle.italic), ), ), ), AIconButton( iconData: Icons.search, color: AColors.secondaryColor, buttonSize: 42, backgroundColor: AColors.white, onPressed: () async { DeviceTransferSearch temp = await showModalBottomSheet( context: context, isScrollControlled: true, builder: (context) { return AssetTransferSearchDialog(initialSearchValue: _deviceTransferProvider.deviceTransferSearch); }, ); if (temp != null) { _deviceTransferProvider.deviceTransferSearch = temp; _deviceTransferProvider.reset(); setState(() {}); await _deviceTransferProvider.getRequests( user: _userProvider.user, host: _settingProvider.host, ); } }, ), const SizedBox(width: 16), ], ), ], ), ), Expanded( child: DeviceTransferList( nextPage: _deviceTransferProvider.nextPage, onLazyLoad: () async { await _deviceTransferProvider.getRequests( user: _userProvider.user, host: _settingProvider.host, ); }, items: _deviceTransferProvider.items, ), ), ], ), ], ), ), ), ); } }