// ignore_for_file: public_member_api_docs, sort_constructors_first import 'package:cssd/config/routes.dart'; import 'package:cssd/providers/auth.dart'; import 'package:cssd/providers/connectivity.dart'; import 'package:cssd/providers/my_packages.dart'; import 'package:cssd/widgets/CycleScreens/Result/banner.dart'; import 'package:cssd/widgets/CycleScreens/Result/search_box.dart'; import 'package:cssd/widgets/Global/internet_error.dart'; import 'package:cssd/widgets/MyPackagesScreens/Filter/my_packages_chip_widget.dart'; import 'package:cssd/widgets/MyPackagesScreens/Result/my_packages_data_box_widget.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; class MyPackagesMineScreen extends StatefulWidget { final bool? isAdmin; const MyPackagesMineScreen({ Key? key, this.isAdmin, }) : super(key: key); @override State createState() => _MyPackagesMineScreenState(); } class _MyPackagesMineScreenState extends State { bool _isInit = true; ScrollController? sc; TextEditingController searchCTRL = new TextEditingController(); @override void initState() { sc = new ScrollController(); super.initState(); } @override void didChangeDependencies() { if (_isInit) { var myPackageResults = Provider.of(context); final userData = Provider.of(context, listen: false).user; myPackageResults.setLoading(); myPackageResults.resetPageNumber(); if (userData['roles']?.contains('User')) { myPackageResults.getMyPackages().then( (_) { myPackageResults.resetLoading(); sc!.addListener( () { if (sc!.position.pixels == sc!.position.maxScrollExtent && searchCTRL.text == '') { var myPackageResults = Provider.of( context, listen: false, ); myPackageResults.getMyPackages(); } }, ); }, ); } else { myPackageResults.getHospitalPackages().then((_) { myPackageResults.resetLoading(); sc!.addListener( () { if (sc!.position.pixels == sc!.position.maxScrollExtent && searchCTRL.text == '') { var myPackageResults = Provider.of( context, listen: false, ); myPackageResults.getHospitalPackages(); } }, ); }); } } _isInit = false; super.didChangeDependencies(); } @override Widget build(BuildContext context) { final _media = MediaQuery.of(context); final double _deviceWidth = _media.size.width; final double _deviceBlockSize = _deviceWidth / 100; final userData = Provider.of(context, listen: false).user; return Consumer( builder: (ct, connection, _) { return connection.conStatus != 'offline' ? Padding( padding: EdgeInsets.only( top: 20, right: 20, bottom: 60, left: 20, ), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ ResultBanner( deviceBlockSize: _deviceBlockSize, text: 'My Packages', push: Routes.myPackagesFilterScreen, ), Consumer( builder: (ctx, package, _) { return Container( height: 50, child: ListView( scrollDirection: Axis.horizontal, shrinkWrap: true, children: [ package.filters!.id != '' ? MyPackageFilterChip( deviceBlockSize: _deviceBlockSize, label: 'ID', id: '', name: package.filters!.name, // udi: package.filters!.udi, ) : Container(), package.filters!.name != '' ? MyPackageFilterChip( deviceBlockSize: _deviceBlockSize, label: 'Package Name', id: package.filters!.id, name: '', // udi: package.filters!.udi, ) : Container(), // package.filters!.udi != '' // ? MyPackageFilterChip( // deviceBlockSize: _deviceBlockSize, // label: 'UDI', // id: package.filters!.id, // name: package.filters!.name, // udi: '', // ) // : Container(), ], ), ); }, ), ResultSearchBox( searchCTRL: searchCTRL, text: 'package', deviceBlockSize: _deviceBlockSize, onChanged: (value) { if (userData['roles']?.contains('User')) { Provider.of(context, listen: false) .searchMyPackages(value); } else { Provider.of(context, listen: false) .searchHospitalPackages(value); } }, ), SizedBox( height: 20, ), Expanded( child: Consumer( builder: (context, packageResults, _) { return packageResults.isloading ? Center( child: CircularProgressIndicator( color: Colors.black, ), ) : ListView.builder( controller: sc, itemBuilder: (context, index) { if (userData['roles']?.contains('User')) { return MyPackagesItemDataBox( deviceBlockSize: _deviceBlockSize, isAdmin: false, packages: packageResults.myPackages?[index], push: () { Navigator.pushNamed(context, Routes.myPackagesHistoryScreen, arguments: packageResults .myPackages?[index]); }, ); } else { return MyPackagesItemDataBox( deviceBlockSize: _deviceBlockSize, isAdmin: true, packages: packageResults .hospitalPackages?[index], push: () { Navigator.pushNamed(context, Routes.myPackagesHistoryScreen, arguments: packageResults .hospitalPackages?[index]); }, ); } }, itemCount: userData['roles']?.contains('User') ? packageResults.myPackages?.length : packageResults.hospitalPackages?.length, shrinkWrap: true, ); }, ), ), ], ), ) : ConnectionErrorBox(); }, ); } }