import 'package:cssd/config/routes.dart'; import 'package:cssd/providers/connectivity.dart'; import 'package:cssd/widgets/Global/page_header.dart'; import 'package:cssd/widgets/Global/internet_error.dart'; import 'package:cssd/widgets/LabelScreens/Result/data_box.dart'; import 'package:cssd/widgets/LabelScreens/Result/filter_chip_box.dart'; import 'package:cssd/widgets/LabelScreens/Result/floating_buttons.dart'; import 'package:cssd/widgets/LabelScreens/Result/search_box.dart'; import 'package:flutter/material.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:provider/provider.dart'; import '../providers/labels.dart'; class LabelResultScreen extends StatefulWidget { // static const route = '/LabelResultScreen'; final bool isAdmin; LabelResultScreen({this.isAdmin}); @override _LabelResultScreenState createState() => _LabelResultScreenState(); } class _LabelResultScreenState 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 labelProviderObject = Provider.of(context, listen: false); labelProviderObject.setLoading(); labelProviderObject.resetPageNumber(); labelProviderObject.getLabelResults().then((_) { labelProviderObject.resetLoading(); sc.addListener(() { if (sc.position.pixels == sc.position.maxScrollExtent && searchCTRL.text == '') { var labelProviderObject = Provider.of(context, listen: false); labelProviderObject.getLabelResults(); } }); }); } _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; return Scaffold( floatingActionButton: LabelFloatingButtons(deviceBlockSize: _deviceBlockSize), appBar: AppBar( titleSpacing: -10, title: Text('Home'), leading: IconButton( icon: Icon( Icons.keyboard_arrow_left, 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: [ PageHeader( deviceBlockSize: _deviceBlockSize, label: 'LABELS', route: Routes.labelFilterScreen, ), SizedBox( height: 10, ), Consumer( builder: (context, label, _) { return Container( height: 50, child: ListView( scrollDirection: Axis.horizontal, shrinkWrap: true, children: [ InkWell( onTap: () { Navigator.of(context).popAndPushNamed( Routes.labelFilterScreen, ); }, child: Chip( backgroundColor: Colors.black, label: Text( 'Filters', style: TextStyle( color: Colors.white, ), ), deleteIcon: Icon( FontAwesomeIcons.filter, color: Colors.white, size: 4 * _deviceBlockSize, ), onDeleted: () { Navigator.of(context).popAndPushNamed( Routes.labelFilterScreen, ); }, ), ), label.filters.id != '' ? LabelFilterChip( deviceBlockSize: _deviceBlockSize, id: '', cycleNumber: label.filters.cycleNumber, sterilizerId: label.filters.sterilizerId, hospital: label.filters.hospital, label: 'ID', ) : Container(), label.filters.cycleNumber != '' ? LabelFilterChip( deviceBlockSize: _deviceBlockSize, id: label.filters.id, cycleNumber: '', sterilizerId: label.filters.sterilizerId, hospital: label.filters.hospital, label: 'Cycle Number', ) : Container(), label.filters.sterilizerId != '' ? LabelFilterChip( deviceBlockSize: _deviceBlockSize, id: label.filters.id, cycleNumber: label.filters.cycleNumber, sterilizerId: '', hospital: label.filters.hospital, label: 'Sterilizer ID', ) : Container(), label.filters.hospital != '' ? LabelFilterChip( deviceBlockSize: _deviceBlockSize, id: label.filters.id, cycleNumber: label.filters.cycleNumber, sterilizerId: label.filters.sterilizerId, hospital: '', label: 'Hospital', ) : Container(), ], ), ); }, ), LabelSearchBox( searchCTRL: searchCTRL, deviceBlockSize: _deviceBlockSize), SizedBox( height: 20, ), Expanded( child: Consumer( builder: (context, labelResults, _) { return labelResults.isloading ? Center( child: CircularProgressIndicator(), ) : ListView.builder( controller: sc, itemBuilder: (context, index) => LabelItemBox( deviceBlockSize: _deviceBlockSize, item: labelResults.items[index], ), itemCount: labelResults.items.length, shrinkWrap: true, ); }, ), ), ], ), ) : ConnectionErrorBox(); }, ), ); } }