import 'package:cssd/models/my_package_model.dart'; import 'package:cssd/providers/auth.dart'; import 'package:cssd/providers/my_packages.dart'; import 'package:cssd/widgets/MyPackagesScreens/History/my_packages_history_date_widget.dart'; import 'package:cssd/widgets/MyPackagesScreens/History/user_package_history_box.dart'; import 'package:cssd/widgets/MyPackagesScreens/Result/my_packages_data_box_widget.dart'; import '../../config/routes.dart'; import '../../providers/connectivity.dart'; import '../../widgets/CycleScreens/Result/banner.dart'; import '../../widgets/Global/internet_error.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; class MyPackagesHistoryScreen extends StatefulWidget { final bool? isAdmin; final MyPackageResultObject? items; MyPackagesHistoryScreen({this.isAdmin, this.items}); @override _MyPackagesHistoryScreenState createState() => _MyPackagesHistoryScreenState(); } class _MyPackagesHistoryScreenState extends State { bool _isInit = true; ScrollController? sc; MyPackageResultObject? packageData; @override void initState() { sc = new ScrollController(); super.initState(); } @override void didChangeDependencies() { if (_isInit) { packageData = ModalRoute.of(context)!.settings.arguments as MyPackageResultObject?; var _id = packageData!.id; var myPackageResults = Provider.of(context); myPackageResults.setLoading(); myPackageResults.getPackagesHistory(_id).then( (_) { myPackageResults.resetLoading(); sc!.addListener( () { if (sc!.position.pixels == sc!.position.maxScrollExtent) { var myPackageResults = Provider.of( context, listen: false, ); myPackageResults.getPackagesHistory(_id); } }, ); }, ); } _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 SafeArea( child: Scaffold( appBar: AppBar( titleSpacing: -10, title: Text( 'My Packages', style: TextStyle( color: Colors.white, ), ), backgroundColor: Colors.black, leading: IconButton( icon: Icon( Icons.keyboard_arrow_left, color: Colors.white, size: 35, ), onPressed: () => Navigator.of(context).pop(), ), ), body: 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: 'Package History', push: Routes.itemFilterScreen, hasFilterObject: false, ), SizedBox( height: 20, ), MyPackagesItemDataBox( deviceBlockSize: _deviceBlockSize, hasHistoryBtn: false, packages: packageData, isAdmin: userData['roles']?.contains('User') ? false : true, ), SizedBox( height: 20.0, ), Expanded( child: Consumer( builder: (context, packageResults, child) { return packageResults.isloading ? Center( child: CircularProgressIndicator( color: Colors.black, ), ) : ListView.separated( controller: sc, separatorBuilder: (context, index) { return Divider(); }, itemBuilder: (context, index) { return Column( children: [ SizedBox( height: 20.0, ), PackageHistoryDate( deviceBlockSize: _deviceBlockSize, packages: packageResults .packageHistory![index], ), UserPackageDataBox( deviceBlockSize: _deviceBlockSize, user: packageResults .packageHistory![index], ), SizedBox( height: 20.0, ), ], ); }, itemCount: packageResults.packageHistory!.length, shrinkWrap: true, ); }, ), ), ], ), ) : ConnectionErrorBox(); }, ), ), ); } }