This commit is contained in:
HooDie
2023-11-11 19:57:09 +03:30
parent b567d4dac9
commit f43f5cc54f
41 changed files with 1181 additions and 399 deletions
BIN
View File
Binary file not shown.
+2
View File
@@ -42,9 +42,11 @@ class Routes {
static const myItemsDetailScreen = '/MyItemsDetailScreen';
static const itemsTransferScreen = '/ItemsTransferScreen';
static const myItemsHistoryScreen = '/MyItemsHistoryScreen';
static const myItemsScanScreen = '/MyItemsScanScreen';
static const myPackagesResultScreen = '/MyPackagesResultScreen';
static const myPackagesFilterScreen = '/MyPackagesFilterScreen';
static const myPackagesDetailScreen = '/MyPackagesDetailScreen';
static const packagesTransferScreen = '/PackagesTransferScreen';
static const myPackagesHistoryScreen = '/MyPackagesHistoryScreen';
static const myPackagesScanScreen = '/MyPackagesScanScreen';
}
+4
View File
@@ -10,11 +10,13 @@ import 'package:cssd/pages/MyItemsPages/Result/my_items_result_screen.dart';
import 'package:cssd/pages/MyItemsPages/my_items_detail_screen.dart';
import 'package:cssd/pages/MyItemsPages/my_items_filter_screen.dart';
import 'package:cssd/pages/MyItemsPages/my_items_history_screen.dart';
import 'package:cssd/pages/MyItemsPages/my_items_scan_screen.dart';
import 'package:cssd/pages/MyItemsPages/my_items_transfer_screen.dart';
import 'package:cssd/pages/MyPackagesPages/Result/my_packages_result_screen.dart';
import 'package:cssd/pages/MyPackagesPages/my_packages_detail_screen.dart';
import 'package:cssd/pages/MyPackagesPages/my_packages_filter_screen.dart';
import 'package:cssd/pages/MyPackagesPages/my_packages_history_screen.dart';
import 'package:cssd/pages/MyPackagesPages/my_packages_scan_screen.dart';
import 'package:cssd/pages/MyPackagesPages/my_packages_transfer_screen.dart';
import 'package:cssd/pages/PackagePages/package_add_screen.dart';
import 'package:cssd/pages/PackagePages/package_detail_screen.dart';
@@ -182,6 +184,7 @@ class MyApp extends StatelessWidget {
Routes.myItemsFilterScreen: (ctx) => MyItemsFilterScreen(),
Routes.myItemsDetailScreen: (ctx) => MyItemsDetailScreen(),
Routes.itemsTransferScreen: (ctx) => ItemsTransferScreen(),
Routes.myItemsScanScreen: (ctx) => MyItemsScanScreen(),
Routes.myItemsHistoryScreen: (ctx) => MyItemsHistoryScreen(),
Routes.myPackagesResultScreen: (ctx) =>
MyPackagesResultScreen(),
@@ -191,6 +194,7 @@ class MyApp extends StatelessWidget {
Routes.packagesTransferScreen: (ctx) => PackageTransferScreen(),
Routes.myPackagesHistoryScreen: (ctx) =>
MyPackagesHistoryScreen(),
Routes.myPackagesScanScreen: (ctx) => MyPackagesScanScreen(),
},
);
},
+3 -3
View File
@@ -40,12 +40,12 @@ class MyPackageResultObject extends Equatable {
class MyPackageFilterObject extends Equatable {
final String id;
final String name;
final String udi;
// final String udi;
MyPackageFilterObject({
required this.id,
required this.name,
required this.udi,
// required this.udi,
});
@override
@@ -53,7 +53,7 @@ class MyPackageFilterObject extends Equatable {
return [
id,
name,
udi,
// udi,
];
}
+6 -6
View File
@@ -29,7 +29,7 @@ class PackageDetailObject extends Equatable {
final String description;
final String createDate;
final String hospitalName;
final String udi;
// final String udi;
final List<String> items;
PackageDetailObject({
@@ -38,7 +38,7 @@ class PackageDetailObject extends Equatable {
required this.description,
required this.createDate,
required this.hospitalName,
required this.udi,
// required this.udi,
required this.items,
});
@@ -50,7 +50,7 @@ class PackageDetailObject extends Equatable {
description,
createDate,
hospitalName,
udi,
// udi,
items,
];
}
@@ -63,13 +63,13 @@ class PackageFilterObject extends Equatable {
final String id;
final String name;
final String hospital;
final String udi;
// final String udi;
PackageFilterObject({
required this.id,
required this.name,
required this.hospital,
required this.udi,
// required this.udi,
});
@override
@@ -78,7 +78,7 @@ class PackageFilterObject extends Equatable {
id,
name,
hospital,
udi,
// udi,
];
}
+1
View File
@@ -49,6 +49,7 @@ class _ItemAddScreenState extends State<ItemAddScreen> {
void didChangeDependencies() async {
if (isInit) {
var itemProviderObject = Provider.of<ItemProvider>(context);
itemProviderObject.catchImages.clear();
itemProviderObject.getItemResults().then(
(result) {
setState(
+1 -1
View File
@@ -286,7 +286,7 @@ class _ItemFilterScreenState extends State<ItemFilterScreen> {
print('access');
} else {
print(result);
idCTRL.text = result;
udiCTRL.text = result;
}
},
);
+2 -2
View File
@@ -61,8 +61,8 @@ class _ItemResultScreenState extends State<ItemResultScreen> {
@override
Widget build(BuildContext context) {
final _media = MediaQuery.of(context);
final double _devicewidth = _media.size.width;
final double _deviceBlockSize = _devicewidth / 100;
final double _deviceWidth = _media.size.width;
final double _deviceBlockSize = _deviceWidth / 100;
return SafeArea(
child: GestureDetector(
onTap: () {
+26 -5
View File
@@ -34,6 +34,8 @@ class _LabelAddScreenState extends State<LabelAddScreen> {
List<Map<String, String>> packageVals = [];
List<String> packageValue = [];
bool isInit = true;
// String? packageId;
// String? previousRoute;
List<TextEditingController> labelsCTRL = [TextEditingController()];
int curLabelVal = 1;
@@ -47,7 +49,15 @@ class _LabelAddScreenState extends State<LabelAddScreen> {
@override
void didChangeDependencies() async {
if (isInit) {
// final pastRoute = ModalRoute.of(context)!.settings.name;
// previousRoute = pastRoute;
// print(previousRoute);
var labelProviderObject = Provider.of<LabelsProvider>(context);
// var arguments = ModalRoute.of(context)!.settings.arguments;
// if (arguments != null && arguments is Map<dynamic, dynamic>) {
// packageId = arguments['id'];
// }
// print(packageId);
labelProviderObject.resetPackageVals();
labelProviderObject.getPackageFilters().then(
(result) {
@@ -67,6 +77,7 @@ class _LabelAddScreenState extends State<LabelAddScreen> {
final _media = MediaQuery.of(context);
final double _devicewidth = _media.size.width;
final double _deviceBlockSize = _devicewidth / 100;
// String initialLabelValue;
return WillPopScope(
onWillPop: () async {
Navigator.pushReplacementNamed(
@@ -286,8 +297,15 @@ class _LabelAddScreenState extends State<LabelAddScreen> {
),
),
Consumer<LabelsProvider>(
builder: (ctx, labelProvider, _) =>
ListView.builder(
builder: (ctx, labelProvider, _) {
// if (previousRoute ==
// '/PackageDetailScreen') {
// initialLabelValue = packageId!;
// } else {
// initialLabelValue =
// labelProvider.initialPackageValue;
// }
return ListView.builder(
physics: NeverScrollableScrollPhysics(),
shrinkWrap: true,
itemBuilder: (ctx, index) =>
@@ -304,8 +322,8 @@ class _LabelAddScreenState extends State<LabelAddScreen> {
),
itemCount:
labelProvider.packageValues.length,
),
),
);
}),
SizedBox(
height: 10,
),
@@ -330,7 +348,10 @@ class _LabelAddScreenState extends State<LabelAddScreen> {
lotNumberCTRL: lotNumberCTRL,
cycleNumberCTRL: cycleNumberCTRL,
sDateCTRL: sDateCTRL,
packageValue: packageValue,
packageValue: Provider.of<LabelsProvider>(
context,
listen: false,
).packageValues,
eDateCTRL: eDateCTRL,
striizerIdCTRL: striizerIdCTRL,
deviceBlockSize: _deviceBlockSize,
@@ -67,8 +67,9 @@ class _LabelResultScreenState extends State<LabelResultScreen> {
FocusManager.instance.primaryFocus?.unfocus();
},
child: Scaffold(
floatingActionButton:
LabelFloatingButtons(deviceBlockSize: _deviceBlockSize),
floatingActionButton: LabelFloatingButtons(
deviceBlockSize: _deviceBlockSize,
),
appBar: AppBar(
titleSpacing: -10,
title: Text('Home'),
+16 -17
View File
@@ -1,4 +1,3 @@
import 'package:cssd/widgets/LabelScreens/Add/selector_box.dart';
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:intl/intl.dart' as DateEditor;
@@ -27,7 +26,7 @@ class _LabelUpdateScreenState extends State<LabelUpdateScreen> {
TextEditingController striizerIdCTRL = new TextEditingController();
TextEditingController sDateCTRL = new TextEditingController();
TextEditingController eDateCTRL = new TextEditingController();
TextEditingController packageCTRL = new TextEditingController();
// TextEditingController packageCTRL = new TextEditingController();
DateTime? dateTimeS;
// String sDateValue;
@@ -35,8 +34,8 @@ class _LabelUpdateScreenState extends State<LabelUpdateScreen> {
final _form = GlobalKey<FormState>();
List<Map<String, String>> packageVals = [];
List<String> packageValue = [];
// List<Map<String, String>> packageVals = [];
// List<String> packageValue = [];
bool isEmpty = false;
bool isInit = true;
LabelDetailsObject? datas;
@@ -67,9 +66,9 @@ class _LabelUpdateScreenState extends State<LabelUpdateScreen> {
striizerIdCTRL.text = datas!.sterileId;
sDateCTRL.text = datas!.sterileDate;
eDateCTRL.text = datas!.expireDate;
packageValue.add(datas!.packageId);
packageValue.add(datas!.package);
packageCTRL.text = datas!.package;
// packageValue.add(datas!.packageId);
// packageValue.add(datas!.package);
// packageCTRL.text = datas!.package;
},
);
},
@@ -256,15 +255,15 @@ class _LabelUpdateScreenState extends State<LabelUpdateScreen> {
SizedBox(
height: 20,
),
LabelAddSelectorBox(
deviceBlockSize: _deviceBlockSize,
packageCTRL: packageCTRL,
packageVals: packageVals,
packageValue: packageValue,
),
SizedBox(
height: 20,
),
// LabelAddSelectorBox(
// deviceBlockSize: _deviceBlockSize,
// packageCTRL: packageCTRL,
// packageVals: packageVals,
// packageValue: packageValue,
// ),
// SizedBox(
// height: 20,
// ),
LabelAddDatePicker(
dateCTRL: sDateCTRL,
deviceBlockSize: _deviceBlockSize,
@@ -287,7 +286,7 @@ class _LabelUpdateScreenState extends State<LabelUpdateScreen> {
lotNumberCTRL: lotNumberCTRL,
cycleNumberCTRL: cycleNumberCTRL,
sDateCTRL: sDateCTRL,
packageValue: packageValue,
// packageValue: packageValue,
eDateCTRL: eDateCTRL,
striizerIdCTRL: striizerIdCTRL,
deviceBlockSize: _deviceBlockSize,
@@ -1,4 +1,5 @@
import 'package:cssd/config/colors.dart';
import 'package:cssd/config/routes.dart';
import 'package:cssd/pages/MyItemsPages/Result/my_items_mine_screen.dart';
import 'package:cssd/pages/MyItemsPages/Result/my_items_requests_screen.dart';
import 'package:flutter/material.dart';
@@ -28,6 +29,9 @@ class _MyItemsResultScreenState extends State<MyItemsResultScreen>
@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: () {
@@ -60,6 +64,9 @@ class _MyItemsResultScreenState extends State<MyItemsResultScreen>
],
),
),
floatingActionButton: MyItemResultFloatingButton(
deviceBlockSize: _deviceBlockSize,
),
body: TabBarView(
controller: _tabController,
children: [
@@ -73,3 +80,35 @@ class _MyItemsResultScreenState extends State<MyItemsResultScreen>
);
}
}
class MyItemResultFloatingButton extends StatelessWidget {
const MyItemResultFloatingButton({
Key? key,
required double deviceBlockSize,
}) : _deviceBlockSize = deviceBlockSize,
super(key: key);
final double _deviceBlockSize;
@override
Widget build(BuildContext context) {
return InkWell(
customBorder: CircleBorder(),
onTap: () {
Navigator.of(context).pushNamed(Routes.myItemsScanScreen);
},
child: Container(
padding: EdgeInsets.all(2.5 * _deviceBlockSize),
decoration: BoxDecoration(
shape: BoxShape.circle,
color: Colors.black,
),
child: Icon(
Icons.qr_code_scanner,
size: 7.1 * _deviceBlockSize,
color: Colors.white,
),
),
);
}
}
@@ -0,0 +1,195 @@
import 'package:cssd/config/colors.dart';
import 'package:cssd/utils/scan.dart';
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:provider/provider.dart';
import 'package:url_launcher/url_launcher.dart';
import '../../providers/connectivity.dart';
import '../../widgets/Global/internet_error.dart';
class MyItemsScanScreen extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return _MyItemsScanScreenState();
}
}
class _MyItemsScanScreenState extends State<MyItemsScanScreen> {
TextEditingController idCTRL = new TextEditingController();
final _form = GlobalKey<FormState>();
@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: GestureDetector(
onTap: () {
FocusManager.instance.primaryFocus?.unfocus();
},
child: Scaffold(
appBar: AppBar(
titleSpacing: -10,
title: Text('My Items'),
backgroundColor: Colors.black,
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'
? ListView(
padding: EdgeInsets.symmetric(horizontal: 20),
children: <Widget>[
Container(
padding: EdgeInsets.only(top: 30),
child: Text(
'Looking for a Item?',
textAlign: TextAlign.left,
style: TextStyle(
color: Colors.black,
fontSize: 5.5 * _deviceBlockSize,
fontWeight: FontWeight.w700,
letterSpacing: 3,
),
),
),
GestureDetector(
child: Container(
margin: EdgeInsets.symmetric(vertical: 10),
height: 200,
decoration: BoxDecoration(border: Border.all()),
child: Center(
child: Text(
'Please Scan The Item Barcode',
style: TextStyle(
color: Colors.black,
fontSize: 5 * _deviceBlockSize,
fontWeight: FontWeight.w100,
letterSpacing: 3,
),
textAlign: TextAlign.center,
),
),
),
onTap: () {
scan().then(
(String result) {
if (result == 'cancel') {
print('cancel');
} else if (result == 'error') {
print('error');
} else if (result == 'access') {
print('access');
} else {
launch(
'https://cssd-doc.com/Show/Item/$result',
);
// Navigator.of(context).pushNamed(
// Routes.cycleDetailScreen,
// arguments: result,
// );
}
},
);
},
),
SizedBox(
height: 10.0,
),
Form(
key: _form,
child: TextFormField(
validator: (val) {
if (val!.isEmpty) {
return 'Id required!!';
}
return null;
},
controller: idCTRL,
decoration: InputDecoration(
icon: Icon(
FontAwesomeIcons.sortNumericDown,
size: 6 * _deviceBlockSize,
),
labelStyle: TextStyle(
fontWeight: FontWeight.w100,
fontSize: 4 * _deviceBlockSize,
),
isDense: true,
labelText: 'Or enter a Item ID',
contentPadding: EdgeInsets.symmetric(
vertical: 2,
horizontal: 3,
),
focusedBorder: UnderlineInputBorder(
// borderRadius: BorderRadius.only(Radius.circular(4)),
borderSide: BorderSide(
color: Colors.grey,
),
),
),
style: TextStyle(
fontWeight: FontWeight.w700,
fontSize: 5 * _deviceBlockSize,
),
keyboardType: TextInputType.number,
),
),
SizedBox(
height: 70,
),
InkWell(
onTap: () {
if (!_form.currentState!.validate()) {
return;
}
launch(
'https://cssd-doc.com/Show/Item/${idCTRL.text}',
);
// Navigator.of(context).pushNamed(
// Routes.cycleDetailScreen,
// arguments: idCTRL.text,
// );
},
child: Container(
padding: EdgeInsets.symmetric(
horizontal: 5 * _deviceBlockSize,
vertical: 10,
),
decoration: BoxDecoration(
gradient: LinearGradient(
colors: [kDarkBlue, kDarkBlueSub],
),
borderRadius: BorderRadius.circular(7),
),
child: Align(
alignment: Alignment.center,
child: Text(
'Search',
style: TextStyle(
color: Colors.white,
fontSize: 5 * _deviceBlockSize,
),
),
),
),
),
],
)
: ConnectionErrorBox();
},
),
),
),
);
}
}
@@ -118,7 +118,7 @@ class _MyPackagesMineScreenState extends State<MyPackagesMineScreen> {
label: 'ID',
id: '',
name: package.filters!.name,
udi: package.filters!.udi,
// udi: package.filters!.udi,
)
: Container(),
package.filters!.name != ''
@@ -127,18 +127,18 @@ class _MyPackagesMineScreenState extends State<MyPackagesMineScreen> {
label: 'Package Name',
id: package.filters!.id,
name: '',
udi: package.filters!.udi,
)
: Container(),
package.filters!.udi != ''
? MyPackageFilterChip(
deviceBlockSize: _deviceBlockSize,
label: 'UDI',
id: package.filters!.id,
name: package.filters!.name,
udi: '',
// udi: package.filters!.udi,
)
: Container(),
// package.filters!.udi != ''
// ? MyPackageFilterChip(
// deviceBlockSize: _deviceBlockSize,
// label: 'UDI',
// id: package.filters!.id,
// name: package.filters!.name,
// udi: '',
// )
// : Container(),
],
),
);
@@ -1,4 +1,5 @@
import 'package:cssd/config/colors.dart';
import 'package:cssd/config/routes.dart';
import 'package:cssd/pages/MyPackagesPages/Result/my_packages_mine_screen.dart';
import 'package:cssd/pages/MyPackagesPages/Result/my_packages_requests_screen.dart';
import 'package:flutter/material.dart';
@@ -28,6 +29,9 @@ class _MyPackagesResultScreenState extends State<MyPackagesResultScreen>
@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: () {
@@ -60,6 +64,9 @@ class _MyPackagesResultScreenState extends State<MyPackagesResultScreen>
],
),
),
floatingActionButton: MyPackageResultFloatingButton(
deviceBlockSize: _deviceBlockSize,
),
body: TabBarView(
controller: _tabController,
children: [
@@ -73,3 +80,35 @@ class _MyPackagesResultScreenState extends State<MyPackagesResultScreen>
);
}
}
class MyPackageResultFloatingButton extends StatelessWidget {
const MyPackageResultFloatingButton({
Key? key,
required double deviceBlockSize,
}) : _deviceBlockSize = deviceBlockSize,
super(key: key);
final double _deviceBlockSize;
@override
Widget build(BuildContext context) {
return InkWell(
customBorder: CircleBorder(),
onTap: () {
Navigator.of(context).pushNamed(Routes.myPackagesScanScreen);
},
child: Container(
padding: EdgeInsets.all(2.5 * _deviceBlockSize),
decoration: BoxDecoration(
shape: BoxShape.circle,
color: Colors.black,
),
child: Icon(
Icons.qr_code_scanner,
size: 7.1 * _deviceBlockSize,
color: Colors.white,
),
),
);
}
}
@@ -22,7 +22,7 @@ class _MyPackageFilterScreenState extends State<MyPackageFilterScreen> {
TextEditingController idCTRL = new TextEditingController();
TextEditingController hospitalCTRL = new TextEditingController();
TextEditingController nameCTRL = new TextEditingController();
TextEditingController udiCTRL = new TextEditingController();
// TextEditingController udiCTRL = new TextEditingController();
bool isInit = true;
PackageFilterObject? filters;
@@ -32,7 +32,7 @@ class _MyPackageFilterScreenState extends State<MyPackageFilterScreen> {
idCTRL.text = filters!.id;
hospitalCTRL.text = filters!.hospital;
nameCTRL.text = filters!.name;
udiCTRL.text = filters!.udi;
// udiCTRL.text = filters!.udi;
super.initState();
}
@@ -203,82 +203,82 @@ class _MyPackageFilterScreenState extends State<MyPackageFilterScreen> {
.requestFocus(_udiFocusNode);
},
),
SizedBox(
height: 30,
),
Row(
children: [
Flexible(
flex: 8,
child: TextFormField(
controller: udiCTRL,
decoration: InputDecoration(
icon: Icon(
FontAwesomeIcons.alignLeft,
size: 6 * _deviceBlockSize,
),
labelStyle: TextStyle(
fontWeight: FontWeight.w100,
fontSize: 4 * _deviceBlockSize,
),
labelText: 'UDI',
isDense: true,
contentPadding: EdgeInsets.symmetric(
vertical: 2,
horizontal: 3,
),
),
style: TextStyle(
fontWeight: FontWeight.w700,
fontSize: 5 * _deviceBlockSize,
),
focusNode: _udiFocusNode,
keyboardType: TextInputType.text,
textInputAction: TextInputAction.next,
),
),
Flexible(
flex: 1,
child: InkWell(
onTap: () {
scan().then(
(String result) {
if (result == 'cancel') {
print('cancel');
} else if (result == 'error') {
print('error');
} else if (result == 'access') {
print('access');
} else {
print(result);
idCTRL.text = result;
}
},
);
},
child: Container(
padding: EdgeInsets.all(8),
decoration: BoxDecoration(
shape: BoxShape.circle,
color: Colors.black,
),
child: Icon(
Icons.qr_code_scanner,
size: 5 * _deviceBlockSize,
color: Colors.white,
),
),
),
)
],
),
// SizedBox(
// height: 30,
// ),
// Row(
// children: [
// Flexible(
// flex: 8,
// child: TextFormField(
// controller: udiCTRL,
// decoration: InputDecoration(
// icon: Icon(
// FontAwesomeIcons.alignLeft,
// size: 6 * _deviceBlockSize,
// ),
// labelStyle: TextStyle(
// fontWeight: FontWeight.w100,
// fontSize: 4 * _deviceBlockSize,
// ),
// labelText: 'UDI',
// isDense: true,
// contentPadding: EdgeInsets.symmetric(
// vertical: 2,
// horizontal: 3,
// ),
// ),
// style: TextStyle(
// fontWeight: FontWeight.w700,
// fontSize: 5 * _deviceBlockSize,
// ),
// focusNode: _udiFocusNode,
// keyboardType: TextInputType.text,
// textInputAction: TextInputAction.next,
// ),
// ),
// Flexible(
// flex: 1,
// child: InkWell(
// onTap: () {
// scan().then(
// (String result) {
// if (result == 'cancel') {
// print('cancel');
// } else if (result == 'error') {
// print('error');
// } else if (result == 'access') {
// print('access');
// } else {
// print(result);
// idCTRL.text = result;
// }
// },
// );
// },
// child: Container(
// padding: EdgeInsets.all(8),
// decoration: BoxDecoration(
// shape: BoxShape.circle,
// color: Colors.black,
// ),
// child: Icon(
// Icons.qr_code_scanner,
// size: 5 * _deviceBlockSize,
// color: Colors.white,
// ),
// ),
// ),
// )
// ],
// ),
SizedBox(
height: 90,
),
MyPackagesFilterSaveButton(
idCTRL: idCTRL,
nameCTRL: nameCTRL,
udiCTRL: udiCTRL,
// udiCTRL: udiCTRL,
deviceBlockSize: _deviceBlockSize,
firstColor: kDarkPurple,
secondColor: kDarkPurpleSub,
@@ -0,0 +1,195 @@
import 'package:cssd/config/colors.dart';
import 'package:cssd/utils/scan.dart';
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:provider/provider.dart';
import 'package:url_launcher/url_launcher.dart';
import '../../providers/connectivity.dart';
import '../../widgets/Global/internet_error.dart';
class MyPackagesScanScreen extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return _MyPackagesScanScreenState();
}
}
class _MyPackagesScanScreenState extends State<MyPackagesScanScreen> {
TextEditingController idCTRL = new TextEditingController();
final _form = GlobalKey<FormState>();
@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: GestureDetector(
onTap: () {
FocusManager.instance.primaryFocus?.unfocus();
},
child: Scaffold(
appBar: AppBar(
titleSpacing: -10,
title: Text('My Packages'),
backgroundColor: Colors.black,
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'
? ListView(
padding: EdgeInsets.symmetric(horizontal: 20),
children: <Widget>[
Container(
padding: EdgeInsets.only(top: 30),
child: Text(
'Looking for a Package?',
textAlign: TextAlign.left,
style: TextStyle(
color: Colors.black,
fontSize: 5.5 * _deviceBlockSize,
fontWeight: FontWeight.w700,
letterSpacing: 3,
),
),
),
GestureDetector(
child: Container(
margin: EdgeInsets.symmetric(vertical: 10),
height: 200,
decoration: BoxDecoration(border: Border.all()),
child: Center(
child: Text(
'Please Scan The Package Barcode',
style: TextStyle(
color: Colors.black,
fontSize: 5 * _deviceBlockSize,
fontWeight: FontWeight.w100,
letterSpacing: 3,
),
textAlign: TextAlign.center,
),
),
),
onTap: () {
scan().then(
(String result) {
if (result == 'cancel') {
print('cancel');
} else if (result == 'error') {
print('error');
} else if (result == 'access') {
print('access');
} else {
launch(
'https://cssd-doc.com/Show/Package/$result',
);
// Navigator.of(context).pushNamed(
// Routes.cycleDetailScreen,
// arguments: result,
// );
}
},
);
},
),
SizedBox(
height: 10.0,
),
Form(
key: _form,
child: TextFormField(
validator: (val) {
if (val!.isEmpty) {
return 'Id required!!';
}
return null;
},
controller: idCTRL,
decoration: InputDecoration(
icon: Icon(
FontAwesomeIcons.sortNumericDown,
size: 6 * _deviceBlockSize,
),
labelStyle: TextStyle(
fontWeight: FontWeight.w100,
fontSize: 4 * _deviceBlockSize,
),
isDense: true,
labelText: 'Or enter a Package ID',
contentPadding: EdgeInsets.symmetric(
vertical: 2,
horizontal: 3,
),
focusedBorder: UnderlineInputBorder(
// borderRadius: BorderRadius.only(Radius.circular(4)),
borderSide: BorderSide(
color: Colors.grey,
),
),
),
style: TextStyle(
fontWeight: FontWeight.w700,
fontSize: 5 * _deviceBlockSize,
),
keyboardType: TextInputType.number,
),
),
SizedBox(
height: 70,
),
InkWell(
onTap: () {
if (!_form.currentState!.validate()) {
return;
}
launch(
'https://cssd-doc.com/Show/Package/${idCTRL.text}',
);
// Navigator.of(context).pushNamed(
// Routes.cycleDetailScreen,
// arguments: idCTRL.text,
// );
},
child: Container(
padding: EdgeInsets.symmetric(
horizontal: 5 * _deviceBlockSize,
vertical: 10,
),
decoration: BoxDecoration(
gradient: LinearGradient(
colors: [kDarkPurple, kDarkPurpleSub],
),
borderRadius: BorderRadius.circular(7),
),
child: Align(
alignment: Alignment.center,
child: Text(
'Search',
style: TextStyle(
color: Colors.white,
fontSize: 5 * _deviceBlockSize,
),
),
),
),
),
],
)
: ConnectionErrorBox();
},
),
),
),
);
}
}
+43 -43
View File
@@ -1,6 +1,7 @@
import 'package:cssd/config/colors.dart';
import 'package:cssd/models/package_model.dart';
import 'package:cssd/providers/packages.dart';
import 'package:cssd/widgets/PackageScreens/Add/add_item_box.dart';
import 'package:cssd/widgets/PackageScreens/Add/package_save_button.dart';
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
@@ -9,7 +10,6 @@ import 'package:provider/provider.dart';
import '../../config/routes.dart';
import '../../providers/connectivity.dart';
import '../../widgets/CycleScreens/Add/add_label_box.dart';
import '../../widgets/Global/internet_error.dart';
class PackageAddScreen extends StatefulWidget {
@@ -21,7 +21,7 @@ class _PackageAddScreenState extends State<PackageAddScreen> {
final _packageUdiFocusNode = FocusNode();
final _descriptionFocusNode = FocusNode();
TextEditingController descriptionCTRL = new TextEditingController();
TextEditingController udiCTRL = new TextEditingController();
// TextEditingController udiCTRL = new TextEditingController();
TextEditingController nameCTRL = new TextEditingController();
TextEditingController dateCTRL = new TextEditingController();
final _form = GlobalKey<FormState>();
@@ -32,7 +32,7 @@ class _PackageAddScreenState extends State<PackageAddScreen> {
@override
void initState() {
descriptionCTRL.text = '';
udiCTRL.text = '';
// udiCTRL.text = '';
nameCTRL.text = '';
dateCTRL.text = DateFormat('y-M-d').format(DateTime.now());
super.initState();
@@ -152,43 +152,43 @@ class _PackageAddScreenState extends State<PackageAddScreen> {
SizedBox(
height: 30,
),
TextFormField(
validator: (val) {
if (val!.isEmpty) {
return 'UDI required!';
}
return null;
},
controller: udiCTRL,
decoration: InputDecoration(
icon: Icon(
FontAwesomeIcons.alignLeft,
size: 7 * _deviceBlockSize,
),
labelStyle: TextStyle(
fontWeight: FontWeight.w100,
fontSize: 4 * _deviceBlockSize,
),
isDense: true,
labelText: 'UDI',
contentPadding: EdgeInsets.symmetric(
vertical: 2, horizontal: 3),
),
style: TextStyle(
fontWeight: FontWeight.w700,
fontSize: 5 * _deviceBlockSize,
),
focusNode: _packageUdiFocusNode,
keyboardType: TextInputType.visiblePassword,
textInputAction: TextInputAction.next,
onFieldSubmitted: (_) {
FocusScope.of(context)
.requestFocus(_descriptionFocusNode);
},
),
SizedBox(
height: 20,
),
// TextFormField(
// validator: (val) {
// if (val!.isEmpty) {
// return 'UDI required!';
// }
// return null;
// },
// controller: udiCTRL,
// decoration: InputDecoration(
// icon: Icon(
// FontAwesomeIcons.alignLeft,
// size: 7 * _deviceBlockSize,
// ),
// labelStyle: TextStyle(
// fontWeight: FontWeight.w100,
// fontSize: 4 * _deviceBlockSize,
// ),
// isDense: true,
// labelText: 'UDI',
// contentPadding: EdgeInsets.symmetric(
// vertical: 2, horizontal: 3),
// ),
// style: TextStyle(
// fontWeight: FontWeight.w700,
// fontSize: 5 * _deviceBlockSize,
// ),
// focusNode: _packageUdiFocusNode,
// keyboardType: TextInputType.visiblePassword,
// textInputAction: TextInputAction.next,
// onFieldSubmitted: (_) {
// FocusScope.of(context)
// .requestFocus(_descriptionFocusNode);
// },
// ),
// SizedBox(
// height: 20,
// ),
Container(
margin: EdgeInsets.symmetric(vertical: 5),
child: Text(
@@ -205,14 +205,14 @@ class _PackageAddScreenState extends State<PackageAddScreen> {
ListView.builder(
physics: NeverScrollableScrollPhysics(),
shrinkWrap: true,
itemBuilder: (ctx, index) => AddLabelBox(
itemBuilder: (ctx, index) => AddItemBox(
text: 'Select Items Included',
iconColor: kPurpleSub,
deviceBlockSize: _deviceBlockSize,
values:
packageProvider.itemValues[index],
vals: packageProvider.itemVals,
initialLabelValue:
initialItemValue:
packageProvider.initialItemValue,
index: index,
),
@@ -258,7 +258,7 @@ class _PackageAddScreenState extends State<PackageAddScreen> {
listen: false,
).itemValues,
nameCTRL: nameCTRL,
udiCTRL: udiCTRL,
// udiCTRL: udiCTRL,
dateValue: dateCTRL.text,
descriptionCTRL: descriptionCTRL,
deviceBlockSize: _deviceBlockSize,
@@ -22,7 +22,7 @@ class _PackageFilterScreenState extends State<PackageFilterScreen> {
TextEditingController idCTRL = new TextEditingController();
TextEditingController hospitalCTRL = new TextEditingController();
TextEditingController nameCTRL = new TextEditingController();
TextEditingController udiCTRL = new TextEditingController();
// TextEditingController udiCTRL = new TextEditingController();
List<Map<String, String>> hospitalVals = [];
bool isInit = true;
@@ -33,7 +33,7 @@ class _PackageFilterScreenState extends State<PackageFilterScreen> {
idCTRL.text = filters!.id;
hospitalCTRL.text = filters!.hospital;
nameCTRL.text = filters!.name;
udiCTRL.text = filters!.udi;
// udiCTRL.text = filters!.udi;
super.initState();
}
@@ -233,35 +233,35 @@ class _PackageFilterScreenState extends State<PackageFilterScreen> {
SizedBox(
height: 30,
),
TextFormField(
controller: udiCTRL,
decoration: InputDecoration(
icon: Icon(
FontAwesomeIcons.alignLeft,
size: 6 * _deviceBlockSize,
),
labelStyle: TextStyle(
fontWeight: FontWeight.w100,
fontSize: 4 * _deviceBlockSize,
),
labelText: 'UDI',
isDense: true,
contentPadding: EdgeInsets.symmetric(
vertical: 2,
horizontal: 3,
),
),
style: TextStyle(
fontWeight: FontWeight.w700,
fontSize: 5 * _deviceBlockSize,
),
focusNode: _udiFocusNode,
keyboardType: TextInputType.text,
textInputAction: TextInputAction.next,
),
SizedBox(
height: 30.0,
),
// TextFormField(
// controller: udiCTRL,
// decoration: InputDecoration(
// icon: Icon(
// FontAwesomeIcons.alignLeft,
// size: 6 * _deviceBlockSize,
// ),
// labelStyle: TextStyle(
// fontWeight: FontWeight.w100,
// fontSize: 4 * _deviceBlockSize,
// ),
// labelText: 'UDI',
// isDense: true,
// contentPadding: EdgeInsets.symmetric(
// vertical: 2,
// horizontal: 3,
// ),
// ),
// style: TextStyle(
// fontWeight: FontWeight.w700,
// fontSize: 5 * _deviceBlockSize,
// ),
// focusNode: _udiFocusNode,
// keyboardType: TextInputType.text,
// textInputAction: TextInputAction.next,
// ),
// SizedBox(
// height: 30.0,
// ),
FilterHospitalBox(
deviceBlockSize: _deviceBlockSize,
hospitalCTRL: hospitalCTRL,
@@ -276,7 +276,7 @@ class _PackageFilterScreenState extends State<PackageFilterScreen> {
hospitalCTRL: hospitalCTRL,
idCTRL: idCTRL,
nameCTRL: nameCTRL,
udiCTRL: udiCTRL,
// udiCTRL: udiCTRL,
deviceBlockSize: _deviceBlockSize,
),
SizedBox(
@@ -116,7 +116,7 @@ class _PackageResultScreenState extends State<PackageResultScreen> {
id: '',
name: package.filters!.name,
hospital: package.filters!.hospital,
udi: package.filters!.udi,
// udi: package.filters!.udi,
)
: Container(),
package.filters!.name != ''
@@ -125,7 +125,7 @@ class _PackageResultScreenState extends State<PackageResultScreen> {
label: 'Package Name',
id: package.filters!.id,
name: '',
udi: package.filters!.udi,
// udi: package.filters!.udi,
hospital: package.filters!.hospital,
)
: Container(),
@@ -135,20 +135,20 @@ class _PackageResultScreenState extends State<PackageResultScreen> {
label: 'Hospital',
id: package.filters!.id,
name: package.filters!.name,
udi: package.filters!.udi,
// udi: package.filters!.udi,
hospital: '',
)
: Container(),
package.filters!.udi != ''
? PackageFilterChip(
deviceBlockSize: _deviceBlockSize,
label: 'UDI',
id: package.filters!.id,
name: package.filters!.name,
udi: '',
hospital: package.filters!.hospital,
)
: Container(),
// package.filters!.udi != ''
// ? PackageFilterChip(
// deviceBlockSize: _deviceBlockSize,
// label: 'UDI',
// id: package.filters!.id,
// name: package.filters!.name,
// udi: '',
// hospital: package.filters!.hospital,
// )
// : Container(),
],
),
);
@@ -17,7 +17,7 @@ class _PackageUpdateScreenState extends State<PackageUpdateScreen> {
final _udiFocusNode = FocusNode();
final _descriptionFocusNode = FocusNode();
TextEditingController nameCTRL = new TextEditingController();
TextEditingController udiCTRL = new TextEditingController();
// TextEditingController udiCTRL = new TextEditingController();
TextEditingController descriptionCTRL = new TextEditingController();
TextEditingController itemCTRL = new TextEditingController();
@@ -39,7 +39,7 @@ class _PackageUpdateScreenState extends State<PackageUpdateScreen> {
() {
datas = result;
nameCTRL.text = datas!.name;
udiCTRL.text = datas!.udi;
// udiCTRL.text = datas!.udi;
descriptionCTRL.text = datas!.description;
for (String item in datas!.items) {
itemCTRL.text = item;
@@ -149,43 +149,43 @@ class _PackageUpdateScreenState extends State<PackageUpdateScreen> {
SizedBox(
height: 20,
),
TextFormField(
validator: (val) {
if (val!.isEmpty) {
return 'UDI required!';
}
return null;
},
controller: udiCTRL,
decoration: InputDecoration(
icon: Icon(
FontAwesomeIcons.alignLeft,
size: 7 * _deviceBlockSize,
),
labelStyle: TextStyle(
fontWeight: FontWeight.w100,
fontSize: 4 * _deviceBlockSize,
),
isDense: true,
labelText: 'UDI',
contentPadding: EdgeInsets.symmetric(
vertical: 2, horizontal: 3),
),
style: TextStyle(
fontWeight: FontWeight.w700,
fontSize: 5 * _deviceBlockSize,
),
focusNode: _udiFocusNode,
keyboardType: TextInputType.text,
textInputAction: TextInputAction.done,
onFieldSubmitted: (_) {
FocusScope.of(context)
.requestFocus(_descriptionFocusNode);
},
),
SizedBox(
height: 20,
),
// TextFormField(
// validator: (val) {
// if (val!.isEmpty) {
// return 'UDI required!';
// }
// return null;
// },
// controller: udiCTRL,
// decoration: InputDecoration(
// icon: Icon(
// FontAwesomeIcons.alignLeft,
// size: 7 * _deviceBlockSize,
// ),
// labelStyle: TextStyle(
// fontWeight: FontWeight.w100,
// fontSize: 4 * _deviceBlockSize,
// ),
// isDense: true,
// labelText: 'UDI',
// contentPadding: EdgeInsets.symmetric(
// vertical: 2, horizontal: 3),
// ),
// style: TextStyle(
// fontWeight: FontWeight.w700,
// fontSize: 5 * _deviceBlockSize,
// ),
// focusNode: _udiFocusNode,
// keyboardType: TextInputType.text,
// textInputAction: TextInputAction.done,
// onFieldSubmitted: (_) {
// FocusScope.of(context)
// .requestFocus(_descriptionFocusNode);
// },
// ),
// SizedBox(
// height: 20,
// ),
TextFormField(
controller: descriptionCTRL,
decoration: InputDecoration(
@@ -218,7 +218,7 @@ class _PackageUpdateScreenState extends State<PackageUpdateScreen> {
form: _form,
id: datas!.id,
nameCTRL: nameCTRL,
udiCTRL: udiCTRL,
// udiCTRL: udiCTRL,
itemCTRL: itemCTRL,
deviceBlockSize: _deviceBlockSize,
descriptionCTRL: descriptionCTRL,
+2
View File
@@ -182,6 +182,8 @@ class ItemProvider extends ChangeNotifier {
'Authorization': User.token,
});
print(response.body);
if (response.statusCode == 200) {
items!.removeWhere((item) {
return item.id.toString() == id;
+12 -9
View File
@@ -86,8 +86,9 @@ class LabelsProvider extends ChangeNotifier {
List<String> result = [];
var filterDatas = json.decode(response.body);
for (var package in filterDatas['data']) {
result.add(
"${package['name']} - ${package['udi'] != null ? package['udi'] : ''}");
// result.add(
// "${package['name']} - ${package['package_id'] != null ? package['package_id'] : ''}");
result.add(package['id'].toString());
}
packageVals = result;
initialPackageValue = packageVals[0];
@@ -98,9 +99,12 @@ class LabelsProvider extends ChangeNotifier {
return result;
}
Future<void> createLabelResult(lotNumber, cycleNumber, sterileDate, package,
Future<void> createLabelResult(lotNumber, cycleNumber, sterileDate, packages,
expireDate, sterilizerId) async {
// print(labs);
List<Map<String, Object>> pkgs = [];
for (var package in packages) {
pkgs.add({'name': '', 'id': package});
}
var response = await http.post(Uri.parse(Url.createLabelResult),
body: json.encode(
{
@@ -109,7 +113,7 @@ class LabelsProvider extends ChangeNotifier {
'sterilizer_id': sterilizerId,
'cycle_number': cycleNumber,
'lot_number': lotNumber,
'package_id': package['id']
'package_id': pkgs,
},
),
headers: {
@@ -118,7 +122,6 @@ class LabelsProvider extends ChangeNotifier {
"Content-Type": "application/json",
"Accept": "application/json"
});
print(response.body);
}
@@ -127,7 +130,7 @@ class LabelsProvider extends ChangeNotifier {
lotNumber,
cycleNumber,
sterileDate,
package,
// package,
expireDate,
sterilizerId,
) async {
@@ -139,7 +142,7 @@ class LabelsProvider extends ChangeNotifier {
'sterilizer_id': sterilizerId,
'cycle_number': cycleNumber,
'lot_number': lotNumber,
'package_id': package['id'],
// 'package_id': package['id'],
},
);
var response = await http.put(Uri.parse(Url.updateLabelResult(id)),
@@ -150,7 +153,7 @@ class LabelsProvider extends ChangeNotifier {
'sterilizer_id': sterilizerId,
'cycle_number': cycleNumber,
'lot_number': lotNumber,
'package_id': package['id'],
// 'package_id': package['id'],
// 'package': {
// 'id': package['id'],
// 'name': package['name'],
+10 -10
View File
@@ -24,7 +24,7 @@ class MyPackageProvider extends ChangeNotifier {
MyPackageFilterObject? filters = MyPackageFilterObject(
id: '',
name: '',
udi: '',
// udi: '',
);
int pageNumber = 1;
void resetPageNumber() => pageNumber = 1;
@@ -64,15 +64,15 @@ class MyPackageProvider extends ChangeNotifier {
void setFilters(
id,
name,
udi,
// udi,
) {
pageNumber = 1;
filters = MyPackageFilterObject(
id: id,
name: name,
udi: udi,
// udi: udi,
);
if (filters!.id == '' && filters!.name == '' && filters!.udi == '') {
if (filters!.id == '' && filters!.name == '') {
filterOn = false;
} else {
filterOn = true;
@@ -89,9 +89,9 @@ class MyPackageProvider extends ChangeNotifier {
if (filters!.name != '') {
url += '&name=${filters!.name}';
}
if (filters!.udi != '') {
url += '&udi=${filters!.udi}';
}
// if (filters!.udi != '') {
// url += '&package_id=${filters!.udi}';
// }
}
var response = await http.get(
Uri.parse(url),
@@ -126,9 +126,9 @@ class MyPackageProvider extends ChangeNotifier {
if (filters!.name != '') {
url += '&name=${filters!.name}';
}
if (filters!.udi != '') {
url += '&udi=${filters!.udi}';
}
// if (filters!.udi != '') {
// url += '&package_id=${filters!.udi}';
// }
}
var response = await http.get(
Uri.parse(url),
+18 -20
View File
@@ -44,7 +44,7 @@ class PackageProvider extends ChangeNotifier {
id: '',
hospital: '',
name: '',
udi: '',
// udi: '',
);
int pageNumber = 1;
void resetPageNumber() => pageNumber = 1;
@@ -87,6 +87,7 @@ class PackageProvider extends ChangeNotifier {
List<String> result = [];
var filterData = json.decode(response.body);
for (var item in filterData['data']) {
// result.add("${item['name']} - ${item['udi'] != null ? item['udi'] : ''}");
result.add(item['id'].toString());
}
itemVals = result;
@@ -100,22 +101,22 @@ class PackageProvider extends ChangeNotifier {
Future<void> createPackageResult(
name,
udi,
// udi,
items,
note,
) async {
List<Map<String, Object>> items = [];
List<Map<String, Object>> itms = [];
for (var item in items) {
items.add({'name': '', 'id': item});
itms.add({'id': item});
}
var response = await http.post(
Uri.parse(Url.createPackageResult),
body: json.encode(
{
'note': note,
'items': items,
'items': itms,
'name': name,
'udi': udi,
// 'package_id': udi,
},
),
headers: {
@@ -132,7 +133,7 @@ class PackageProvider extends ChangeNotifier {
Future<void> updatePackageResult(
id,
name,
udi,
// udi,
description,
items,
) async {
@@ -143,14 +144,14 @@ class PackageProvider extends ChangeNotifier {
print({
'note': description,
'name': name,
'udi': udi,
// 'package_id': udi,
'items': items,
});
var response = await http.put(Uri.parse(Url.updatePackageResult(id)),
body: json.encode(
{
'name': name,
'udi': udi,
// 'package_id': udi,
'note': description,
'items': items,
},
@@ -186,19 +187,16 @@ class PackageProvider extends ChangeNotifier {
id,
name,
hospital,
udi,
// udi,
) {
pageNumber = 1;
filters = PackageFilterObject(
id: id,
name: name,
hospital: hospital,
udi: udi,
// udi: udi,
);
if (filters!.id == '' &&
filters!.name == '' &&
filters!.hospital == '' &&
filters!.udi != '') {
if (filters!.id == '' && filters!.name == '' && filters!.hospital == '') {
filterOn = false;
} else {
filterOn = true;
@@ -229,9 +227,9 @@ class PackageProvider extends ChangeNotifier {
if (filters!.hospital != '') {
url += '&medical_center_id=${filters!.hospital}';
}
if (filters!.udi != '') {
url += '&udi=${filters!.udi}';
}
// if (filters!.udi != '') {
// url += '&package_id=${filters!.udi}';
// }
}
var response = await http.get(
Uri.parse(url),
@@ -270,7 +268,7 @@ class PackageProvider extends ChangeNotifier {
description: 'null',
createDate: '2020-07-14 13:50:42',
hospitalName: 'null',
udi: 'null',
// udi: 'null',
items: [],
);
}
@@ -284,7 +282,7 @@ class PackageProvider extends ChangeNotifier {
id: data['id'].toString(),
name: data['name'] != null ? data['name'] : '',
description: data['note'] != null ? data['note'] : '',
udi: data['udi'] != null ? data['udi'] : '',
// udi: data['package_id'] != null ? data['package_id'] : '',
createDate: data['created_at'] != null ? data['created_at'] : '',
hospitalName:
data['user'] != null ? data['user']['medical_center']['name'] : '',
@@ -190,7 +190,8 @@ class AddLabelBox extends StatelessWidget {
right: 0,
child: InkWell(
onTap: () {
Provider.of<CyclesProvider>(context).addLabelVal();
Provider.of<CyclesProvider>(context, listen: false)
.addLabelVal();
},
child: Container(
padding: EdgeInsets.all(3),
@@ -34,7 +34,6 @@ class CycleAddSaveButton extends StatelessWidget {
if (!_form.currentState!.validate()) {
return;
}
List<String> labels = [];
for (TextEditingController label in labelValues) {
labels.add(label.text);
@@ -1,3 +1,4 @@
import 'package:cssd/config/routes.dart';
import 'package:cssd/providers/items.dart';
import 'package:file_picker/file_picker.dart';
import 'package:flutter/material.dart';
@@ -51,6 +52,30 @@ class UploaderImage extends StatelessWidget {
),
),
),
SizedBox(
height: 10,
),
InkWell(
onTap: () async {
await Navigator.of(context)
.pushNamed(Routes.captureImageScreen);
// await captureImage(context);
},
child: Container(
width: MediaQuery.of(context).size.width - 40,
padding: EdgeInsets.symmetric(vertical: 10, horizontal: 30),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(5),
color: Colors.black,
),
child: Text(
'+ Add an image from camera',
textDirection: TextDirection.ltr,
style: TextStyle(color: Colors.white),
textAlign: TextAlign.center,
),
),
),
],
),
),
@@ -120,16 +120,39 @@ class ItemItemBox extends StatelessWidget {
: InkWell(
customBorder: CircleBorder(),
onTap: () {
Provider.of<ItemProvider>(context,
listen: false)
.changeStatus(item!.id)
.then(
(value) {
if (value) {
print('true');
}
Navigator.of(context).popAndPushNamed(
Routes.itemResultScreen);
showDialog(
context: context,
builder: (context) {
return AlertDialog(
title: Text(
'Do you want to change the status of the item?'),
actions: <Widget>[
TextButton(
onPressed: () {
Provider.of<ItemProvider>(context,
listen: false)
.changeStatus(item!.id)
.then(
(value) {
if (value) {
print('true');
}
Navigator.of(context)
.popAndPushNamed(Routes
.itemResultScreen);
},
);
},
child: Text('Yes'),
),
TextButton(
onPressed: () {
Navigator.of(context).pop();
},
child: Text('No'),
),
],
);
},
);
},
@@ -185,26 +185,26 @@ class AddPackageBox extends StatelessWidget {
),
),
),
Positioned(
bottom: 15,
right: 0,
child: InkWell(
onTap: () {
Provider.of<LabelsProvider>(context).addPackageVal();
},
child: Container(
padding: EdgeInsets.all(3),
decoration: BoxDecoration(
shape: BoxShape.circle,
color: iconColor,
),
child: Icon(
Icons.add,
color: Colors.white,
),
),
),
),
// Positioned(
// bottom: 15,
// right: 0,
// child: InkWell(
// onTap: () {
// Provider.of<LabelsProvider>(context, listen: false).addPackageVal();
// },
// child: Container(
// padding: EdgeInsets.all(3),
// decoration: BoxDecoration(
// shape: BoxShape.circle,
// color: iconColor,
// ),
// child: Icon(
// Icons.add,
// color: Colors.white,
// ),
// ),
// ),
// ),
],
),
);
@@ -24,7 +24,7 @@ class LabelAddSaveButton extends StatelessWidget {
final TextEditingController lotNumberCTRL;
final TextEditingController cycleNumberCTRL;
final TextEditingController sDateCTRL;
final List<String> packageValue;
final List<TextEditingController> packageValue;
final TextEditingController eDateCTRL;
final TextEditingController striizerIdCTRL;
final double _deviceBlockSize;
@@ -36,12 +36,17 @@ class LabelAddSaveButton extends StatelessWidget {
if (!_form.currentState!.validate()) {
return;
}
List<String> packages = [];
for (TextEditingController package in packageValue) {
packages.add(package.text);
}
Provider.of<LabelsProvider>(context, listen: false).createLabelResult(
lotNumberCTRL.text,
cycleNumberCTRL.text,
sDateCTRL.text,
// sDateValue,
{'id': packageValue[0], 'name': packageValue[1]},
// {'id': packageValue[0], 'name': packageValue[1]},
packages,
eDateCTRL.text,
// eDateValue,
striizerIdCTRL.text,
@@ -13,7 +13,7 @@ class LabelUpdateButton extends StatelessWidget {
required this.lotNumberCTRL,
required this.cycleNumberCTRL,
required this.sDateCTRL,
required this.packageValue,
// required this.packageValue,
required this.eDateCTRL,
required this.striizerIdCTRL,
required double deviceBlockSize,
@@ -26,7 +26,7 @@ class LabelUpdateButton extends StatelessWidget {
final TextEditingController lotNumberCTRL;
final TextEditingController cycleNumberCTRL;
final TextEditingController sDateCTRL;
final List<String> packageValue;
// final List<String> packageValue;
final TextEditingController eDateCTRL;
final TextEditingController striizerIdCTRL;
final double _deviceBlockSize;
@@ -43,7 +43,7 @@ class LabelUpdateButton extends StatelessWidget {
lotNumberCTRL.text,
cycleNumberCTRL.text,
sDateCTRL.text,
{'id': packageValue[0]},
// {'id': packageValue[0]},
eDateCTRL.text,
striizerIdCTRL.text,
);
@@ -129,33 +129,33 @@ class MyPackageDetailsDataBox extends StatelessWidget {
),
],
),
Divider(),
SizedBox(
height: 5,
),
Row(
children: <Widget>[
Container(
width: 35 * _deviceBlockSize,
child: Text(
'UDI',
style: TextStyle(
color: Colors.grey,
),
),
),
Container(
width: 45 * _deviceBlockSize,
child: Text(
datas.udi.toString(),
style: TextStyle(
fontWeight: FontWeight.w700,
),
overflow: TextOverflow.clip,
),
),
],
),
// Divider(),
// SizedBox(
// height: 5,
// ),
// Row(
// children: <Widget>[
// Container(
// width: 35 * _deviceBlockSize,
// child: Text(
// 'UDI',
// style: TextStyle(
// color: Colors.grey,
// ),
// ),
// ),
// Container(
// width: 45 * _deviceBlockSize,
// child: Text(
// datas.udi.toString(),
// style: TextStyle(
// fontWeight: FontWeight.w700,
// ),
// overflow: TextOverflow.clip,
// ),
// ),
// ],
// ),
Divider(),
SizedBox(
height: 5,
@@ -10,19 +10,19 @@ class MyPackageFilterChip extends StatelessWidget {
required String label,
required String id,
required String name,
required String udi,
// required String udi,
}) : _deviceBlockSize = deviceBlockSize,
_label = label,
_id = id,
_name = name,
_udi = udi,
// _udi = udi,
super(key: key);
final double _deviceBlockSize;
final String _label;
final String _id;
final String _name;
final String _udi;
// final String _udi;
@override
Widget build(BuildContext context) {
@@ -50,7 +50,7 @@ class MyPackageFilterChip extends StatelessWidget {
packageProvider.setFilters(
_id,
_name,
_udi,
// _udi,
);
packageProvider.setLoading();
if (userData['roles']?.contains('User')) {
@@ -7,7 +7,7 @@ class MyPackagesFilterSaveButton extends StatelessWidget {
Key? key,
required this.idCTRL,
required this.nameCTRL,
required this.udiCTRL,
// required this.udiCTRL,
required this.firstColor,
required this.secondColor,
required this.push,
@@ -17,7 +17,7 @@ class MyPackagesFilterSaveButton extends StatelessWidget {
final TextEditingController idCTRL;
final TextEditingController nameCTRL;
final TextEditingController udiCTRL;
// final TextEditingController udiCTRL;
final Color firstColor;
final Color secondColor;
final String push;
@@ -30,7 +30,7 @@ class MyPackagesFilterSaveButton extends StatelessWidget {
Provider.of<MyPackageProvider>(context, listen: false).setFilters(
idCTRL.text,
nameCTRL.text,
udiCTRL.text,
// udiCTRL.text,
);
showDialog(
context: context,
@@ -0,0 +1,213 @@
import 'package:cssd/providers/packages.dart';
import 'package:cssd/utils/scan.dart';
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:provider/provider.dart';
class AddItemBox extends StatelessWidget {
const AddItemBox({
Key? key,
required double deviceBlockSize,
required this.values,
required this.vals,
required this.initialItemValue,
required this.index,
required this.text,
this.iconColor,
}) : _deviceBlockSize = deviceBlockSize,
super(key: key);
final double _deviceBlockSize;
final TextEditingController values;
final List<String> vals;
final String initialItemValue;
final int index;
final String text;
final Color? iconColor;
@override
Widget build(BuildContext context) {
return Container(
height: 150,
child: Stack(
children: <Widget>[
Container(
padding: EdgeInsets.only(
right: 10,
bottom: 25,
left: 10,
top: 10,
),
decoration: BoxDecoration(
border: Border(
left: BorderSide(color: Colors.black, width: 2),
right: BorderSide(color: Colors.grey),
bottom: BorderSide(color: Colors.grey),
top: BorderSide(color: Colors.grey),
),
),
height: 120,
child: Container(
padding: EdgeInsets.symmetric(vertical: 5),
// height: 65,
child: Row(
// width: double.infinity,
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisSize: MainAxisSize.min,
children: <Widget>[
Icon(
FontAwesomeIcons.alignLeft,
color: Colors.grey,
size: 7 * _deviceBlockSize,
),
SizedBox(
width: 4 * _deviceBlockSize,
),
Expanded(
// width: MediaQuery.of(context).size.width - 70,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Row(
children: <Widget>[
SizedBox(
width: _deviceBlockSize,
),
Text(
text,
style: TextStyle(
fontSize: 3.5 * _deviceBlockSize,
color: Colors.grey,
fontWeight: FontWeight.w100,
),
),
],
),
Row(
children: <Widget>[
Container(
width: MediaQuery.of(context).size.width -
(40 * _deviceBlockSize),
// height: 30,
child: DropdownButtonFormField(
decoration: InputDecoration(
contentPadding: EdgeInsets.only(
left: _deviceBlockSize,
),
border: InputBorder.none,
),
iconSize: 7 * _deviceBlockSize,
icon: Icon(
FontAwesomeIcons.angleDown,
color: Colors.black,
),
isExpanded: true,
hint: Container(
// width: 100,
height: 70,
padding:
const EdgeInsets.symmetric(horizontal: 0),
child: TextFormField(
controller: values,
decoration: InputDecoration(
contentPadding: EdgeInsets.only(
bottom: 12,
),
isDense: true,
),
style: TextStyle(
fontWeight: FontWeight.w700,
color: Colors.black,
fontSize: 5 * _deviceBlockSize,
),
),
),
isDense: true,
items: vals.map((val) {
return new DropdownMenuItem<String>(
value: val,
child: Container(
child: Text(
val,
style: TextStyle(
fontSize: 4 * _deviceBlockSize,
),
),
),
);
}).toList(),
onChanged: (val) {
Provider.of<PackageProvider>(context,
listen: false)
.changeItemVal(val!, index);
},
),
),
Spacer(),
InkWell(
onTap: () {
scan().then(
(String result) {
if (result == 'cancel') {
print('cancel');
} else if (result == 'error') {
print('error');
} else if (result == 'access') {
print('access');
} else {
print(result);
Provider.of<PackageProvider>(context,
listen: false)
.changeItemVal(result, index);
}
},
);
},
child: Container(
padding: EdgeInsets.all(8),
decoration: BoxDecoration(
shape: BoxShape.circle,
color: Colors.black,
),
child: Icon(
Icons.qr_code_scanner,
size: 5 * _deviceBlockSize,
color: Colors.white,
),
),
)
],
),
],
),
),
],
),
),
),
Positioned(
bottom: 15,
right: 0,
child: InkWell(
onTap: () {
Provider.of<PackageProvider>(context, listen: false)
.addItemVal();
},
child: Container(
padding: EdgeInsets.all(3),
decoration: BoxDecoration(
shape: BoxShape.circle,
color: iconColor,
),
child: Icon(
Icons.add,
color: Colors.white,
),
),
),
),
],
),
);
}
}
@@ -12,7 +12,7 @@ class PackageAddSaveButton extends StatelessWidget {
required this.itemValues,
required this.nameCTRL,
required this.descriptionCTRL,
required this.udiCTRL,
// required this.udiCTRL,
required this.dateValue,
required double deviceBlockSize,
}) : _form = form,
@@ -23,7 +23,7 @@ class PackageAddSaveButton extends StatelessWidget {
final List<TextEditingController> itemValues;
final TextEditingController nameCTRL;
final TextEditingController descriptionCTRL;
final TextEditingController udiCTRL;
// final TextEditingController udiCTRL;
final String dateValue;
final double _deviceBlockSize;
@@ -34,7 +34,6 @@ class PackageAddSaveButton extends StatelessWidget {
if (!_form.currentState!.validate()) {
return;
}
List<String> items = [];
for (TextEditingController item in itemValues) {
items.add(item.text);
@@ -42,7 +41,7 @@ class PackageAddSaveButton extends StatelessWidget {
Provider.of<PackageProvider>(context, listen: false)
.createPackageResult(
nameCTRL.text,
udiCTRL.text,
// udiCTRL.text,
items,
descriptionCTRL.text,
);
@@ -12,7 +12,7 @@ class PackageUpdateButton extends StatelessWidget {
required this.id,
required this.descriptionCTRL,
required this.nameCTRL,
required this.udiCTRL,
// required this.udiCTRL,
required this.itemCTRL,
required double deviceBlockSize,
}) : _form = form,
@@ -23,7 +23,7 @@ class PackageUpdateButton extends StatelessWidget {
final String id;
final TextEditingController descriptionCTRL;
final TextEditingController nameCTRL;
final TextEditingController udiCTRL;
// final TextEditingController udiCTRL;
final TextEditingController itemCTRL;
final double _deviceBlockSize;
@@ -38,7 +38,7 @@ class PackageUpdateButton extends StatelessWidget {
.updatePackageResult(
id,
nameCTRL.text,
udiCTRL.text,
// udiCTRL.text,
descriptionCTRL.text,
int.parse(itemCTRL.text),
);
@@ -129,33 +129,33 @@ class PackageDetailsDataBox extends StatelessWidget {
SizedBox(
height: 5,
),
Row(
children: <Widget>[
Container(
width: 35 * _deviceBlockSize,
child: Text(
'UDI',
style: TextStyle(
color: Colors.grey,
),
),
),
Container(
width: 45 * _deviceBlockSize,
child: Text(
datas.udi.toString(),
style: TextStyle(
fontWeight: FontWeight.w700,
),
overflow: TextOverflow.clip,
),
),
],
),
Divider(),
SizedBox(
height: 5,
),
// Row(
// children: <Widget>[
// Container(
// width: 35 * _deviceBlockSize,
// child: Text(
// 'UDI',
// style: TextStyle(
// color: Colors.grey,
// ),
// ),
// ),
// Container(
// width: 45 * _deviceBlockSize,
// child: Text(
// datas.udi.toString(),
// style: TextStyle(
// fontWeight: FontWeight.w700,
// ),
// overflow: TextOverflow.clip,
// ),
// ),
// ],
// ),
// Divider(),
// SizedBox(
// height: 5,
// ),
Row(
children: <Widget>[
Container(
@@ -254,7 +254,25 @@ class PackageDetailsDataBox extends StatelessWidget {
),
SizedBox(
height: 50,
)
),
// TransferDestroyButton(
// deviceBlockSize: _deviceBlockSize,
// firstColor: kPurple,
// secondColor: kPurpleSub,
// onTap: () {
// Navigator.pushNamed(
// context,
// Routes.labelAddScreen,
// arguments: {
// 'id': datas.id,
// },
// );
// },
// text: 'Make a Label For Package',
// ),
// SizedBox(
// height: 5.0,
// ),
],
),
),
@@ -12,7 +12,7 @@ class PackageFilterSaveButton extends StatelessWidget {
required this.hospitalCTRL,
required this.idCTRL,
required this.nameCTRL,
required this.udiCTRL,
// required this.udiCTRL,
required double deviceBlockSize,
}) : _deviceBlockSize = deviceBlockSize,
super(key: key);
@@ -21,7 +21,7 @@ class PackageFilterSaveButton extends StatelessWidget {
final TextEditingController hospitalCTRL;
final TextEditingController idCTRL;
final TextEditingController nameCTRL;
final TextEditingController udiCTRL;
// final TextEditingController udiCTRL;
final double _deviceBlockSize;
@override
@@ -40,7 +40,7 @@ class PackageFilterSaveButton extends StatelessWidget {
idCTRL.text,
nameCTRL.text,
hospitalID,
udiCTRL.text,
// udiCTRL.text,
);
showDialog(
context: context,
@@ -10,13 +10,13 @@ class PackageFilterChip extends StatelessWidget {
required String id,
required String name,
required String hospital,
required String udi,
// required String udi,
}) : _deviceBlockSize = deviceBlockSize,
_label = label,
_id = id,
_name = name,
_hospital = hospital,
_udi = udi,
// _udi = udi,
super(key: key);
final double _deviceBlockSize;
@@ -24,7 +24,7 @@ class PackageFilterChip extends StatelessWidget {
final String _id;
final String _name;
final String _hospital;
final String _udi;
// final String _udi;
@override
Widget build(BuildContext context) {
@@ -52,7 +52,7 @@ class PackageFilterChip extends StatelessWidget {
_id,
_name,
_hospital,
_udi,
// _udi,
);
packageProvider.setLoading();
packageProvider.getPackageResults().then(