import 'package:cssd/providers/test_results.dart'; import 'package:cssd/widgets/TestResultScreens/Main/search_box.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import '../config/routes.dart'; import '../models/test_result_models.dart'; import '../providers/auth.dart'; class TestVerifyScreen extends StatefulWidget { // static const route = '/TestVerifyScreen'; // final bool isAdmin; // TestVerifyScreen({this.isAdmin}); @override _TestVerifyScreenState createState() => _TestVerifyScreenState(); } class _TestVerifyScreenState 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) { // setState(() { // _isLoading = true; // }); var testResults = Provider.of(context, listen: false); testResults.setLoading(); testResults.resetFilters(); 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 userData = Provider.of(context, listen: false).user; 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 Scaffold( appBar: AppBar( titleSpacing: -10, title: Text('Home'), leading: IconButton( icon: Icon( Icons.keyboard_arrow_left, size: 35, ), onPressed: () => Navigator.of(context).pop(), ), ), body: 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( 'TESTS TO VERIFY', // 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) => (testResults.items[index].verified == 'None' && userData['roles'] .contains('Supervisor')) || userData['roles'].contains('Admin') ? TestItemBox( deviceBlockSize: _deviceBlockSize, item: testResults.items[index], id: testResults.items[index].id, userData: userData, ) : Container(), // Column( // children: [ // Text(testResults.items[index].name), // Text(testResults.items[index].isVerified.toString()), // Text(testResults.items[index].hospital), // Text(testResults.items[index].date), // ], // ), // ChangeNotifierProvider.value( // value: testResults.items[index], // child: ResultCard( // isAdmin: widget.isAdmin, // ), // ), itemCount: testResults.items.length, shrinkWrap: true, ); }, ), ), ], ), ), ); } } class TestItemBox extends StatelessWidget { final TestResultObject item; const TestItemBox({ Key key, @required String id, @required double deviceBlockSize, @required this.item, @required this.userData, }) : _deviceBlockSize = deviceBlockSize, // _id = id, super(key: key); final Map userData; final double _deviceBlockSize; // final String _id; @override Widget build(BuildContext context) { 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.verified == 'None' ? Text( 'Awaiting Verification', style: TextStyle(color: Colors.orange), ) : item.verified == 'Verified' ? Text( 'Verified', style: TextStyle( color: Colors.blueAccent, ), ) : Text( 'Rejected', style: TextStyle( color: Colors.red, ), ), ], ), Spacer(), Column( crossAxisAlignment: CrossAxisAlignment.end, children: [ Text(item.date), SizedBox( height: 15, ), Row( mainAxisAlignment: MainAxisAlignment.end, children: [ Row( mainAxisAlignment: MainAxisAlignment.center, children: [ InkWell( onTap: () { showDialog( context: context, builder: (ctx) => AlertDialog( title: Text('Verify'), content: Text( 'Are you sure for verify this test?'), actions: [ FlatButton( onPressed: () async { Provider.of( context) .changeVerification( item.id, 'Verified') .then((result) { if (result) { print('true'); } Navigator.of(ctx).pop(); Navigator.of(context).popAndPushNamed( Routes.testVerifyScreen); }); }, child: Text('Yes'), ), FlatButton( onPressed: () { Navigator.of(ctx).pop(); }, child: Text('No'), ), ], ), ); }, child: Container( padding: EdgeInsets.all(7), width: 10 * _deviceBlockSize, decoration: BoxDecoration( shape: BoxShape.circle, color: Color.fromRGBO(0, 190, 190, 1), ), child: Icon( Icons.check, size: 6 * _deviceBlockSize, color: Colors.white, ), ), ), SizedBox( width: 3, ), InkWell( onTap: () { showDialog( context: context, builder: (ctx) => AlertDialog( title: Text('Reject'), content: Text( 'Are you sure for reject this test?'), actions: [ FlatButton( onPressed: () async { await Provider.of( context) .changeVerification( item.id, 'NotVerified') .then((result) { if (result) { print('true'); } Navigator.of(ctx).pop(); Navigator.of(context).popAndPushNamed( Routes.testVerifyScreen); }); }, child: Text('Yes'), ), FlatButton( 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.close, size: 6 * _deviceBlockSize, color: Colors.white, ), ), ), ], ), SizedBox( width: _deviceBlockSize, ), ], ) ], ), ], ), ), ), ); } }