update carton and cargo type
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
// ignore_for_file: use_build_context_synchronously
|
||||
|
||||
import 'package:fcs/domain/entities/cargo_type.dart';
|
||||
import 'package:fcs/helpers/theme.dart';
|
||||
import 'package:fcs/pages/main/util.dart';
|
||||
@@ -6,6 +8,7 @@ import 'package:fcs/pages/widgets/local_app_bar.dart';
|
||||
import 'package:fcs/pages/widgets/progress.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_vector_icons/flutter_vector_icons.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
import '../widgets/local_text.dart';
|
||||
@@ -13,32 +16,34 @@ import 'model/shipment_rate_model.dart';
|
||||
|
||||
class CargoEditor extends StatefulWidget {
|
||||
final CargoType? cargo;
|
||||
CargoEditor({this.cargo});
|
||||
const CargoEditor({super.key, this.cargo});
|
||||
|
||||
@override
|
||||
_CargoEditorState createState() => _CargoEditorState();
|
||||
}
|
||||
|
||||
class _CargoEditorState extends State<CargoEditor> {
|
||||
TextEditingController _descController = new TextEditingController();
|
||||
TextEditingController _rateController = new TextEditingController();
|
||||
TextEditingController _displayIndexController = new TextEditingController();
|
||||
TextEditingController descController = TextEditingController();
|
||||
TextEditingController rateController = TextEditingController();
|
||||
TextEditingController displayIndexController = TextEditingController();
|
||||
|
||||
bool _isLoading = false;
|
||||
late CargoType _cargo;
|
||||
bool _isNew = false;
|
||||
final _cargoFormKey = GlobalKey<FormState>();
|
||||
bool _isDefault = false;
|
||||
bool _isMixCargo = false;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
if (widget.cargo != null) {
|
||||
_cargo = widget.cargo!;
|
||||
_descController.text = _cargo.name ?? "";
|
||||
_rateController.text = _cargo.rate.toStringAsFixed(2);
|
||||
_displayIndexController.text = _cargo.displayIndex.toString();
|
||||
descController.text = _cargo.name ?? "";
|
||||
rateController.text = _cargo.rate.toStringAsFixed(2);
|
||||
displayIndexController.text = _cargo.displayIndex.toString();
|
||||
_isDefault = _cargo.isDefault;
|
||||
_isMixCargo = _cargo.isMixCargo;
|
||||
} else {
|
||||
_isNew = true;
|
||||
}
|
||||
@@ -53,8 +58,8 @@ class _CargoEditorState extends State<CargoEditor> {
|
||||
Widget build(BuildContext context) {
|
||||
final typeBox = InputText(
|
||||
labelTextKey: 'cargo.type',
|
||||
iconData: Icons.text_format,
|
||||
controller: _descController,
|
||||
iconData: Ionicons.text,
|
||||
controller: descController,
|
||||
autovalidateMode: AutovalidateMode.onUserInteraction,
|
||||
validator: (value) {
|
||||
if (value == null || value.isEmpty) {
|
||||
@@ -66,8 +71,8 @@ class _CargoEditorState extends State<CargoEditor> {
|
||||
|
||||
final rateBox = InputText(
|
||||
labelTextKey: 'cargo.rate',
|
||||
iconData: Icons.attach_money,
|
||||
controller: _rateController,
|
||||
iconData: Fontisto.dollar,
|
||||
controller: rateController,
|
||||
textInputType: TextInputType.number,
|
||||
autovalidateMode: AutovalidateMode.onUserInteraction,
|
||||
validator: (value) {
|
||||
@@ -80,8 +85,8 @@ class _CargoEditorState extends State<CargoEditor> {
|
||||
|
||||
final displayIndexBox = InputText(
|
||||
labelTextKey: 'cargo.display_index',
|
||||
iconData: Icons.numbers,
|
||||
controller: _displayIndexController,
|
||||
iconData: FontAwesome.sort_numeric_asc,
|
||||
controller: displayIndexController,
|
||||
textInputType: TextInputType.number,
|
||||
autovalidateMode: AutovalidateMode.onUserInteraction,
|
||||
// validator: (value) {
|
||||
@@ -93,7 +98,7 @@ class _CargoEditorState extends State<CargoEditor> {
|
||||
);
|
||||
|
||||
final defaultBox = Padding(
|
||||
padding: const EdgeInsets.symmetric(vertical: 20),
|
||||
padding: const EdgeInsets.symmetric(vertical: 10),
|
||||
child: Row(mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [
|
||||
Flexible(
|
||||
child: Column(
|
||||
@@ -112,7 +117,7 @@ class _CargoEditorState extends State<CargoEditor> {
|
||||
scale: 0.7,
|
||||
alignment: Alignment.centerRight,
|
||||
child: CupertinoSwitch(
|
||||
activeColor: primaryColor,
|
||||
activeTrackColor: primaryColor,
|
||||
value: _isDefault,
|
||||
onChanged: (v) {
|
||||
setState(() {
|
||||
@@ -122,6 +127,34 @@ class _CargoEditorState extends State<CargoEditor> {
|
||||
]),
|
||||
);
|
||||
|
||||
final mixCargoBox =
|
||||
Row(mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [
|
||||
Flexible(
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
LocalText(
|
||||
context,
|
||||
'cargo.is_mix',
|
||||
color: Colors.black54,
|
||||
fontSize: 15,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Transform.scale(
|
||||
scale: 0.7,
|
||||
alignment: Alignment.centerRight,
|
||||
child: CupertinoSwitch(
|
||||
activeTrackColor: primaryColor,
|
||||
value: _isMixCargo,
|
||||
onChanged: (v) {
|
||||
setState(() {
|
||||
_isMixCargo = v;
|
||||
});
|
||||
}))
|
||||
]);
|
||||
|
||||
return LocalProgress(
|
||||
inAsyncCall: _isLoading,
|
||||
child: Scaffold(
|
||||
@@ -160,14 +193,16 @@ class _CargoEditorState extends State<CargoEditor> {
|
||||
typeBox,
|
||||
rateBox,
|
||||
displayIndexBox,
|
||||
SizedBox(height: 10),
|
||||
defaultBox,
|
||||
mixCargoBox,
|
||||
SizedBox(height: 30),
|
||||
],
|
||||
),
|
||||
),
|
||||
fcsButton(context, getLocalString(context, "btn.save"),
|
||||
callack: _save),
|
||||
SizedBox(height: 10)
|
||||
SizedBox(height: 30)
|
||||
],
|
||||
),
|
||||
),
|
||||
@@ -186,18 +221,19 @@ class _CargoEditorState extends State<CargoEditor> {
|
||||
try {
|
||||
var shipmentRateModel =
|
||||
Provider.of<ShipmentRateModel>(context, listen: false);
|
||||
CargoType _cargo = CargoType(
|
||||
name: _descController.text,
|
||||
rate: double.parse(_rateController.text),
|
||||
displayIndex: _displayIndexController.text == ''
|
||||
CargoType cargo = CargoType(
|
||||
name: descController.text,
|
||||
rate: double.parse(rateController.text),
|
||||
displayIndex: displayIndexController.text == ''
|
||||
? 0
|
||||
: int.parse(_displayIndexController.text),
|
||||
isDefault: _isDefault);
|
||||
: int.parse(displayIndexController.text),
|
||||
isDefault: _isDefault,
|
||||
isMixCargo: _isMixCargo);
|
||||
if (_isNew) {
|
||||
await shipmentRateModel.addCargoType(_cargo);
|
||||
await shipmentRateModel.addCargoType(cargo);
|
||||
} else {
|
||||
_cargo.id = this._cargo.id;
|
||||
await shipmentRateModel.updateCargoType(_cargo);
|
||||
cargo.id = _cargo.id;
|
||||
await shipmentRateModel.updateCargoType(cargo);
|
||||
}
|
||||
Navigator.pop(context);
|
||||
} catch (e) {
|
||||
@@ -220,7 +256,7 @@ class _CargoEditorState extends State<CargoEditor> {
|
||||
try {
|
||||
var shipmentRateModel =
|
||||
Provider.of<ShipmentRateModel>(context, listen: false);
|
||||
await shipmentRateModel.deleteCargoType(this._cargo.id!);
|
||||
await shipmentRateModel.deleteCargoType(_cargo.id!);
|
||||
Navigator.pop(context);
|
||||
} catch (e) {
|
||||
showMsgDialog(context, "Error", e.toString());
|
||||
@@ -233,11 +269,19 @@ class _CargoEditorState extends State<CargoEditor> {
|
||||
|
||||
isDataChanged() {
|
||||
if (_isNew) {
|
||||
return _descController.text != "" || _rateController.text != "";
|
||||
return descController.text != "" ||
|
||||
rateController.text != "" ||
|
||||
displayIndexController.text != "" ||
|
||||
_isDefault != false ||
|
||||
_isMixCargo != false;
|
||||
} else {
|
||||
CargoType _cargo = CargoType(
|
||||
name: _descController.text, rate: double.parse(_rateController.text));
|
||||
return this._cargo.isChangedForEdit(_cargo);
|
||||
CargoType cargo = CargoType(
|
||||
name: descController.text,
|
||||
rate: double.parse(rateController.text),
|
||||
displayIndex: int.parse(displayIndexController.text),
|
||||
isDefault: _isDefault,
|
||||
isMixCargo: _isMixCargo);
|
||||
return _cargo.isChangedForEdit(cargo);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user