Files
cssd/lib/pages/LabelPages/label_result_screen.dart
2024-03-13 19:20:21 +03:30

211 lines
9.2 KiB
Dart
Executable File

import 'package:flutter/material.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: GestureDetector(
onTap: () {
FocusManager.instance.primaryFocus?.unfocus();
},
child: Scaffold(
floatingActionButton: LabelFloatingButtons(
deviceBlockSize: _deviceBlockSize,
),
appBar: AppBar(
titleSpacing: -10,
title: Text(
'Home',
style: TextStyle(
color: Colors.white,
),
),
backgroundColor: Colors.black,
leading: IconButton(
icon: Icon(
Icons.keyboard_arrow_left,
color: Colors.white,
size: 35,
),
onPressed: () => Navigator.of(context).pushNamed(Routes.homePage),
),
),
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,
),
Consumer<LabelsProvider>(
builder: (context, label, _) {
return Container(
height: 50,
child: ListView(
scrollDirection: Axis.horizontal,
shrinkWrap: true,
children: <Widget>[
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(
color: Colors.black,
),
)
: labelResults.items?.length != 0
? ListView.builder(
controller: sc,
itemBuilder: (context, index) =>
LabelItemBox(
deviceBlockSize: _deviceBlockSize,
item: labelResults.items?[index],
),
itemCount:
labelResults.items?.length,
shrinkWrap: true,
)
: Container(
child: Center(
child: Text(
"There is no item to show."),
),
);
},
),
),
],
),
)
: ConnectionErrorBox();
},
),
),
),
);
}
}