// 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_items.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/MyItemsScreens/Filter/my_items_chip_widget.dart'; import 'package:cssd/widgets/MyItemsScreens/Result/my_items_data_box_widget.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; class MyItemsMineScreen extends StatefulWidget { final bool? isAdmin; const MyItemsMineScreen({ Key? key, this.isAdmin, }) : super(key: key); @override State createState() => _MyItemsMineScreenState(); } class _MyItemsMineScreenState 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 myItemResults = Provider.of(context); myItemResults.setLoading(); myItemResults.resetPageNumber(); myItemResults.getMyItems().then( (_) { myItemResults.resetLoading(); sc!.addListener( () { if (sc!.position.pixels == sc!.position.maxScrollExtent && searchCTRL.text == '') { var myItemResults = Provider.of( context, listen: false, ); myItemResults.getMyItems(); } }, ); }, ); } _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; var searchVal; 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 Items', push: Routes.myItemsFilterScreen, ), Consumer(builder: (ctx, item, _) { return Container( height: 50, child: ListView( scrollDirection: Axis.horizontal, shrinkWrap: true, children: [ item.filters!.id != '' ? MyItemFilterChip( deviceBlockSize: _deviceBlockSize, label: 'ID', id: '', name: item.filters!.name, udi: item.filters!.udi, size: item.filters!.size, specific: item.filters!.specific, ) : Container(), item.filters!.name != '' ? MyItemFilterChip( deviceBlockSize: _deviceBlockSize, label: 'Item Name', id: item.filters!.id, name: '', udi: item.filters!.udi, size: item.filters!.size, specific: item.filters!.specific, ) : Container(), item.filters!.udi != '' ? MyItemFilterChip( deviceBlockSize: _deviceBlockSize, label: 'UDI', id: item.filters!.id, name: item.filters!.name, udi: '', size: item.filters!.size, specific: item.filters!.specific, ) : Container(), item.filters!.size != '' ? MyItemFilterChip( deviceBlockSize: _deviceBlockSize, label: 'Size', id: item.filters!.id, name: item.filters!.name, udi: item.filters!.udi, size: '', specific: item.filters!.specific, ) : Container(), item.filters!.specific != '' ? MyItemFilterChip( deviceBlockSize: _deviceBlockSize, label: 'Specific', id: item.filters!.id, name: item.filters!.name, udi: item.filters!.udi, size: item.filters!.size, specific: '', ) : Container(), ], ), ); }), ResultSearchBox( searchCTRL: searchCTRL, text: 'item', text2: "name", textInputType: TextInputType.visiblePassword, deviceBlockSize: _deviceBlockSize, onChanged: (value) async { searchVal = value; }, onTap: () async { var myItems = await Provider.of(context, listen: false); myItems.setLoading(); await myItems.searchMyItems(searchVal ?? ""); }, ), SizedBox( height: 20, ), Expanded( child: Consumer( builder: (context, itemResults, _) { return itemResults.isloading ? Center( child: CircularProgressIndicator( color: Colors.black, ), ) : itemResults.myItems?.length != 0 ? ListView.builder( controller: sc, itemBuilder: (context, index) { return MyItemsItemDataBox( deviceBlockSize: _deviceBlockSize, isAdmin: userData['roles'] ?.contains('User') ? false : true, items: itemResults.myItems?[index], push: () { Navigator.pushNamed(context, Routes.myItemsHistoryScreen, arguments: itemResults .myItems?[index]); }, ); }, itemCount: itemResults.myItems?.length, shrinkWrap: true, ) : Container( child: Center( child: Text("There is no item to show."), ), ); }, ), ), ], ), ) : ConnectionErrorBox(); }, ); } }