// import 'package:cssd/providers/test_result.dart'; import 'package:cssd/providers/test_results.dart'; import 'package:cssd/widgets/Global/internet_error.dart'; import 'package:cssd/widgets/TestResultScreens/Main/filter_chip_box.dart'; import 'package:cssd/widgets/TestResultScreens/Main/floating_button.dart'; import 'package:cssd/widgets/TestResultScreens/Main/search_box.dart'; import 'package:flutter/material.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:provider/provider.dart'; import '../config/routes.dart'; import '../models/test_result_models.dart'; import '../providers/connectivity.dart'; class TestResultScreen extends StatefulWidget { // static const route = '/TestResultScreen'; final bool isAdmin; TestResultScreen({this.isAdmin}); @override _TestResultScreenState createState() => _TestResultScreenState(); } class _TestResultScreenState extends State { TextEditingController searchCTRL = new TextEditingController(); ScrollController sc; bool _isInit = true; // List _data = []; @override void initState() { sc = new ScrollController(); super.initState(); } @override void didChangeDependencies() { if (_isInit) { var testResults = Provider.of(context, listen: false); // testResults.resetFilters(); testResults.setLoading(); testResults.resetPageNumber(); testResults.getTestResults().then((_) { testResults.resetLoading(); sc.addListener(() { if (sc.position.pixels == sc.position.maxScrollExtent && searchCTRL.text == '') { var labelProviderObject = Provider.of(context, listen: false); labelProviderObject.getTestResults(); } }); // setState(() { // _isLoading = false; // }); }); _isInit = false; } super.didChangeDependencies(); } @override Widget build(BuildContext context) { final _media = MediaQuery.of(context); // final double _pixelRatio = (_media.size.height / _media.size.width * 7 / 5); final double _devicewidth = _media.size.width; final double _deviceBlockSize = _devicewidth / 100; return SafeArea( child: Scaffold( floatingActionButton: TestResultFloatingButton(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, left: 20, right: 20, bottom: 60), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( // crossAxisAlignment: CrossAxisAlignment.center, children: [ Container( // padding: EdgeInsets.only(top: 20, bottom: 40), child: Text( 'MY TEST RESULTS', // textAlign: TextAlign.left, style: TextStyle( color: Colors.black, fontSize: 6 * _deviceBlockSize, fontWeight: FontWeight.w700, letterSpacing: 2, ), ), ), Spacer(), InkWell( onTap: () { Navigator.of(context) .popAndPushNamed(Routes.testFilterScreen); }, child: Container( padding: EdgeInsets.all(7), child: Icon( FontAwesomeIcons.filter, size: 7 * _deviceBlockSize, ), ), ), ], ), SizedBox( height: 20, ), Consumer( builder: (context, testResult, _) { return Container( height: 50, child: ListView( scrollDirection: Axis.horizontal, shrinkWrap: true, children: [ InkWell( onTap: () { Navigator.of(context).popAndPushNamed( Routes.testFilterScreen); }, 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.testFilterScreen, ); }, ), ), testResult.filters.id != '' ? TestResultChip( deviceBlockSize: _deviceBlockSize, label: 'ID', id: '', labelID: testResult.filters.labelID, testType: testResult.filters.testType, hospital: testResult.filters.hospital, username: testResult.filters.userName, fDate: testResult.filters.fDate, uDate: testResult.filters.uDate, ) : Container(), testResult.filters.labelID != '' ? TestResultChip( deviceBlockSize: _deviceBlockSize, label: 'Label ID', id: testResult.filters.id, labelID: '', testType: testResult.filters.testType, hospital: testResult.filters.hospital, username: testResult.filters.userName, fDate: testResult.filters.fDate, uDate: testResult.filters.uDate, ) : Container(), testResult.filters.testType != '' ? TestResultChip( deviceBlockSize: _deviceBlockSize, label: 'Test Type', id: testResult.filters.id, labelID: testResult.filters.labelID, testType: '', hospital: testResult.filters.hospital, username: testResult.filters.userName, fDate: testResult.filters.fDate, uDate: testResult.filters.uDate, ) : Container(), testResult.filters.hospital != '' ? TestResultChip( deviceBlockSize: _deviceBlockSize, label: 'Hospital', id: testResult.filters.id, labelID: testResult.filters.labelID, testType: testResult.filters.testType, hospital: '', username: testResult.filters.userName, fDate: testResult.filters.fDate, uDate: testResult.filters.uDate, ) : Container(), testResult.filters.userName != '' ? TestResultChip( deviceBlockSize: _deviceBlockSize, label: 'Username', id: testResult.filters.id, labelID: testResult.filters.labelID, testType: testResult.filters.testType, hospital: testResult.filters.hospital, username: '', fDate: testResult.filters.fDate, uDate: testResult.filters.uDate, ) : Container(), testResult.filters.fDate != '' ? TestResultChip( deviceBlockSize: _deviceBlockSize, label: 'From Date', id: testResult.filters.id, labelID: testResult.filters.labelID, testType: testResult.filters.testType, hospital: testResult.filters.hospital, username: testResult.filters.userName, fDate: '', uDate: testResult.filters.uDate, ) : Container(), testResult.filters.uDate != '' ? TestResultChip( deviceBlockSize: _deviceBlockSize, label: 'Until Date', id: testResult.filters.id, labelID: testResult.filters.labelID, testType: testResult.filters.testType, hospital: testResult.filters.hospital, username: testResult.filters.userName, fDate: testResult.filters.fDate, uDate: '', ) : Container(), ], ), ); }, ), TestResultSearchBox( searchCTRL: searchCTRL, deviceBlockSize: _deviceBlockSize, ), SizedBox( height: 20, ), Expanded( child: Consumer( builder: (context, testResults, _) { return testResults.isloading ? Center( child: CircularProgressIndicator(), ) : ListView.builder( controller: sc, itemBuilder: (context, index) => TestItemBox( deviceBlockSize: _deviceBlockSize, item: testResults.items[index], ), itemCount: testResults.items.length, shrinkWrap: true, ); }, ), ), ], ), ) : ConnectionErrorBox(); }, ), ), ); } } class TestItemBox extends StatelessWidget { final TestResultObject item; const TestItemBox({ Key key, @required double deviceBlockSize, this.item, }) : _deviceBlockSize = deviceBlockSize, super(key: key); final double _deviceBlockSize; @override Widget build(BuildContext context) { // print(item.result); return GestureDetector( onTap: () => Navigator.of(context).pushNamed( Routes.testDetailsScreen, arguments: item.id, ), child: Card( child: Container( padding: EdgeInsets.all(10), child: Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Container( width: 57 * _deviceBlockSize, child: Text( item.name, overflow: TextOverflow.ellipsis, // style: TextStyle(fontSize: 20), ), ), Container( width: 57 * _deviceBlockSize, child: Text( item.hospital, style: TextStyle( color: Colors.grey, fontSize: 3 * _deviceBlockSize, ), ), ), SizedBox( height: 15, ), item.result == 'Accepted' ? Text( 'Accepted', style: TextStyle(color: Colors.green), ) : Text( 'Rejected', style: TextStyle( color: Colors.red, ), ), ], ), Spacer(), Column( crossAxisAlignment: CrossAxisAlignment.end, children: [ Text(item.date), SizedBox( height: 15, ), Row( mainAxisAlignment: MainAxisAlignment.end, children: [ // item.result != 'Accepted' // ? InkWell( // onTap: () { // showDialog( // context: context, // builder: (ctx) => AlertDialog( // title: Text('Delete'), // content: Text( // 'Are you sure for delete this test?'), // actions: [ // TextButton( // onPressed: () { // Provider.of( // context) // .removeTestResult( // item.id.toString()) // .then((_) { // Navigator.of(ctx).pop(); // }); // }, // child: Text('Yes'), // ), // TextButton( // onPressed: () { // Navigator.of(ctx).pop(); // }, // child: Text('No'), // ), // ], // ), // ); // }, // child: Container( // padding: EdgeInsets.all(7), // width: 10 * _deviceBlockSize, // decoration: BoxDecoration( // shape: BoxShape.circle, // color: Colors.red, // ), // child: Icon( // Icons.delete, // size: 6 * _deviceBlockSize, // color: Colors.white, // ), // ), // ) // : Container(), // SizedBox( // width: _deviceBlockSize, // ), InkWell( onTap: () { Navigator.of(context).pushNamed( Routes.testDetailsScreen, arguments: item.id, ); // TestDetail(testResultId: item.id.toString()); }, child: Container( padding: EdgeInsets.all(7), width: 10 * _deviceBlockSize, decoration: BoxDecoration( shape: BoxShape.circle, color: Colors.black, ), child: Icon( FontAwesomeIcons.fileAlt, size: 6 * _deviceBlockSize, color: Colors.white, ), ), ), ], ) ], ), ], ), ), ), ); } }