mirror of
https://git.meshkee.com/applications/cssd.git
synced 2026-10-11 05:48:56 +03:30
2.1.0
This commit is contained in:
BIN
Binary file not shown.
@@ -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';
|
||||
}
|
||||
|
||||
@@ -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(),
|
||||
},
|
||||
);
|
||||
},
|
||||
|
||||
@@ -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,
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
@@ -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,
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -286,7 +286,7 @@ class _ItemFilterScreenState extends State<ItemFilterScreen> {
|
||||
print('access');
|
||||
} else {
|
||||
print(result);
|
||||
idCTRL.text = result;
|
||||
udiCTRL.text = result;
|
||||
}
|
||||
},
|
||||
);
|
||||
|
||||
@@ -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: () {
|
||||
|
||||
@@ -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'),
|
||||
|
||||
@@ -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();
|
||||
},
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -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,
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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'],
|
||||
|
||||
@@ -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
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user