// 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/Global/internet_error.dart'; import 'package:cssd/widgets/MyPackagesScreens/Result/package_requests_data_box.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; class MyPackagesRequestsScreen extends StatefulWidget { final bool? isAdmin; const MyPackagesRequestsScreen({ Key? key, this.isAdmin, }) : super(key: key); @override State createState() => _MyPackagesRequestsScreenState(); } class _MyPackagesRequestsScreenState extends State { bool _isInit = true; ScrollController? sc; @override void initState() { super.initState(); } @override void didChangeDependencies() { if (_isInit) { var packageResults = Provider.of(context); packageResults.setLoading(); packageResults.resetPageNumber(); packageResults.getMyPackageRequests().then( (_) { packageResults.resetLoading(); sc?.addListener( () { if (sc!.position.pixels == sc!.position.maxScrollExtent) { var packageResults = Provider.of( context, listen: false, ); packageResults.getMyPackageRequests(); } }, ); }, ); } _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 Requests', hasFilterObject: false, push: Routes.myPackagesFilterScreen, ), SizedBox( height: 20, ), Expanded( child: Consumer( builder: (context, packageResults, _) { return packageResults.isloading ? Center( child: CircularProgressIndicator( color: Colors.black, ), ) : packageResults.originalMyPackagesRequests?.length != 0 ? ListView.builder( controller: sc, itemBuilder: (context, index) { return PackageRequestsDataBox( deviceBlockSize: _deviceBlockSize, isAdmin: userData['roles'] ?.contains('User') ? false : true, package: packageResults .originalMyPackagesRequests?[ index], ); }, itemCount: packageResults .originalMyPackagesRequests?.length, shrinkWrap: true, ) : Container( child: Center( child: Text("There is no item to show."), ), ); }, ), ), ], ), ) : ConnectionErrorBox(); }, ); } }