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'; import 'package:intl/intl.dart'; import 'package:provider/provider.dart'; import '../../config/routes.dart'; import '../../providers/connectivity.dart'; import '../../widgets/Global/internet_error.dart'; class PackageAddScreen extends StatefulWidget { @override _PackageAddScreenState createState() => _PackageAddScreenState(); } class _PackageAddScreenState extends State { final _packageUdiFocusNode = FocusNode(); final _descriptionFocusNode = FocusNode(); TextEditingController descriptionCTRL = new TextEditingController(); // TextEditingController udiCTRL = new TextEditingController(); TextEditingController nameCTRL = new TextEditingController(); TextEditingController dateCTRL = new TextEditingController(); final _form = GlobalKey(); bool isInit = true; PackageFilterObject? filters; int curLabelVal = 1; @override void initState() { descriptionCTRL.text = ''; // udiCTRL.text = ''; nameCTRL.text = ''; dateCTRL.text = DateFormat('y-M-d').format(DateTime.now()); super.initState(); } @override void didChangeDependencies() async { if (isInit) { var packageProviderObject = Provider.of(context); packageProviderObject.resetItemVals(); packageProviderObject.getItemFilters().then( (result) { setState( () { isInit = false; }, ); }, ); } super.didChangeDependencies(); } @override Widget build(BuildContext context) { final _media = MediaQuery.of(context); final double _devicewidth = _media.size.width; final double _deviceBlockSize = _devicewidth / 100; return Consumer( builder: (context, packageProvider, _) { return SafeArea( child: GestureDetector( onTap: () { FocusManager.instance.primaryFocus?.unfocus(); }, child: Scaffold( appBar: AppBar( titleSpacing: -10, title: Text( 'Packages', style: TextStyle( color: Colors.white, ), ), backgroundColor: Colors.black, leading: IconButton( icon: Icon( Icons.keyboard_arrow_left, color: Colors.white, size: 35, ), onPressed: () { packageProvider.resetLoadingButton(); Navigator.of(context) .pushReplacementNamed(Routes.packageResultScreen); }, ), ), body: Consumer( builder: (ct, connection, _) { return connection.conStatus != 'offline' ? isInit ? Center( child: CircularProgressIndicator( color: Colors.black, ), ) : Form( key: _form, child: Padding( padding: EdgeInsets.all(20), child: ListView( children: [ Text( 'Add a Package', style: TextStyle( fontWeight: FontWeight.w700, fontSize: 6 * _deviceBlockSize, letterSpacing: 3, ), ), SizedBox( height: 20, ), TextFormField( validator: (val) { if (val!.isEmpty) { return 'Name required!'; } return null; }, controller: nameCTRL, decoration: InputDecoration( icon: Icon( FontAwesomeIcons.alignLeft, size: 7 * _deviceBlockSize, ), labelStyle: TextStyle( fontWeight: FontWeight.w100, fontSize: 4 * _deviceBlockSize, ), isDense: true, labelText: 'Package Name', contentPadding: EdgeInsets.symmetric( vertical: 2, horizontal: 3, ), ), style: TextStyle( fontWeight: FontWeight.w700, fontSize: 5 * _deviceBlockSize, ), keyboardType: TextInputType.text, textInputAction: TextInputAction.next, onFieldSubmitted: (_) { FocusScope.of(context) .requestFocus(_packageUdiFocusNode); }, ), 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, // ), Container( margin: EdgeInsets.symmetric(vertical: 5), child: Text( 'Items included', style: TextStyle( color: kPurple, letterSpacing: 2, fontSize: 5 * _deviceBlockSize, ), ), ), Consumer( builder: (ctx, packageProvider, _) => ListView.builder( physics: NeverScrollableScrollPhysics(), shrinkWrap: true, itemBuilder: (ctx, index) => AddItemBox( text: 'Select Items Included', iconColor: kPurpleSub, deviceBlockSize: _deviceBlockSize, values: packageProvider.itemValues[index], vals: packageProvider.itemVals, initialItemValue: packageProvider.initialItemValue, index: index, hasRemoveButton: packageProvider .itemValues.length > 1 ? true : false, ), itemCount: packageProvider.itemValues.length, ), ), SizedBox( height: 30, ), TextFormField( controller: descriptionCTRL, decoration: InputDecoration( icon: Icon( FontAwesomeIcons.alignLeft, size: 7 * _deviceBlockSize, ), labelStyle: TextStyle( fontWeight: FontWeight.w100, fontSize: 4 * _deviceBlockSize, ), isDense: true, labelText: 'Description', contentPadding: EdgeInsets.symmetric( vertical: 2, horizontal: 3), ), style: TextStyle( fontWeight: FontWeight.w700, fontSize: 5 * _deviceBlockSize, ), keyboardType: TextInputType.multiline, focusNode: _descriptionFocusNode, minLines: 1, maxLines: 5, ), SizedBox( height: 70, ), PackageAddSaveButton( form: _form, itemValues: Provider.of( context, listen: false, ).itemValues, nameCTRL: nameCTRL, // udiCTRL: udiCTRL, dateValue: dateCTRL.text, descriptionCTRL: descriptionCTRL, deviceBlockSize: _deviceBlockSize, ), SizedBox( height: 100, ), ], ), ), ) : ConnectionErrorBox(); }, ), ), ), ); }, ); } }