Files
cssd/lib/pages/label_result_screen.dart
T
2021-06-21 14:14:54 +04:30

218 lines
9.3 KiB
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 '../providers/connectivity.dart';
import '../providers/labels.dart';
import '../widgets/Global/internet_error.dart';
import '../widgets/Global/page_header.dart';
import '../widgets/LabelScreens/Result/data_box.dart';
import '../widgets/LabelScreens/Result/filter_chip_box.dart';
import '../widgets/LabelScreens/Result/floating_buttons.dart';
import '../widgets/LabelScreens/Result/search_box.dart';
class LabelResultScreen extends StatefulWidget {
// static const route = '/LabelResultScreen';
final bool isAdmin;
LabelResultScreen({this.isAdmin});
@override
_LabelResultScreenState createState() => _LabelResultScreenState();
}
class _LabelResultScreenState extends State<LabelResultScreen> {
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<LabelsProvider>(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<LabelsProvider>(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 SafeArea(
child: 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<ConnectivityProvider>(
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: <Widget>[
PageHeader(
deviceBlockSize: _deviceBlockSize,
label: 'LABELS',
route: Routes.labelFilterScreen,
),
SizedBox(
height: 10,
),
Consumer<LabelsProvider>(
builder: (context, label, _) {
return Container(
height: 50,
child: ListView(
scrollDirection: Axis.horizontal,
shrinkWrap: true,
children: <Widget>[
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<LabelsProvider>(
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();
},
),
),
);
}
}