b+8
This commit is contained in:
@@ -1,8 +1,10 @@
|
||||
import 'package:fcs/domain/entities/market.dart';
|
||||
import 'package:fcs/domain/entities/package.dart';
|
||||
import 'package:fcs/domain/entities/user.dart';
|
||||
import 'package:fcs/helpers/theme.dart';
|
||||
import 'package:fcs/pages/market/market_editor.dart';
|
||||
import 'package:fcs/pages/market/model/market_model.dart';
|
||||
import 'package:fcs/pages/package/model/package_model.dart';
|
||||
import 'package:fcs/pages/package/tracking_id_page.dart';
|
||||
import 'package:fcs/pages/main/util.dart';
|
||||
import 'package:fcs/pages/widgets/barcode_scanner.dart';
|
||||
@@ -19,7 +21,9 @@ import 'package:provider/provider.dart';
|
||||
|
||||
class PackageEditor extends StatefulWidget {
|
||||
final Package package;
|
||||
PackageEditor({this.package});
|
||||
final User consignee;
|
||||
final User sender;
|
||||
PackageEditor({this.package, this.consignee, this.sender});
|
||||
|
||||
@override
|
||||
_PackageEditorState createState() => _PackageEditorState();
|
||||
@@ -260,17 +264,24 @@ class _PackageEditorState extends State<PackageEditor> {
|
||||
setState(() {
|
||||
_isLoading = true;
|
||||
});
|
||||
|
||||
PackageModel packageModel =
|
||||
Provider.of<PackageModel>(context, listen: false);
|
||||
try {
|
||||
this._package.trackingID = _trackingIDCtl.text;
|
||||
this._package.market = selectedMarket;
|
||||
this._package.desc = _descCtl.text;
|
||||
this._package.remark = _remarkCtl.text;
|
||||
this._package.photoFiles = _isNew
|
||||
Package package=await packageModel.getPackageByTrackingID(_trackingIDCtl.text);
|
||||
package.trackingID = _trackingIDCtl.text;
|
||||
package.market = selectedMarket;
|
||||
package.desc = _descCtl.text;
|
||||
package.remark = _remarkCtl.text;
|
||||
package.photoFiles = _isNew
|
||||
? multiImgController.getAddedFile
|
||||
: multiImgController.getUpdatedFile;
|
||||
package.fcsID=widget.consignee.fcsID;
|
||||
package.senderFCSID=widget.sender?.fcsID;
|
||||
|
||||
Navigator.pop<Package>(context, this._package);
|
||||
await packageModel.updateProcessing(package,
|
||||
multiImgController.getAddedFile, multiImgController.getDeletedUrl);
|
||||
|
||||
Navigator.pop<Package>(context, package);
|
||||
} catch (e) {
|
||||
showMsgDialog(context, "Error", e.toString());
|
||||
} finally {
|
||||
|
||||
@@ -3,6 +3,7 @@ import 'package:fcs/domain/entities/processing.dart';
|
||||
import 'package:fcs/domain/entities/user.dart';
|
||||
import 'package:fcs/helpers/theme.dart';
|
||||
import 'package:fcs/pages/main/util.dart';
|
||||
import 'package:fcs/pages/package/package_info.dart';
|
||||
import 'package:fcs/pages/user_search/user_serach.dart';
|
||||
import 'package:fcs/pages/widgets/display_text.dart';
|
||||
import 'package:fcs/pages/widgets/fcs_id_icon.dart';
|
||||
@@ -27,8 +28,8 @@ class _ProcesingEditorState extends State<ProcesingEditor> {
|
||||
Processing processing = Processing();
|
||||
bool _isLoading = false;
|
||||
bool _isNew;
|
||||
User user;
|
||||
User shipper;
|
||||
User consignee;
|
||||
User sender;
|
||||
List<Package> packages = [];
|
||||
|
||||
@override
|
||||
@@ -37,11 +38,11 @@ class _ProcesingEditorState extends State<ProcesingEditor> {
|
||||
_isNew = widget.processing == null;
|
||||
if (!_isNew) {
|
||||
processing = widget.processing;
|
||||
user = User(
|
||||
consignee = User(
|
||||
fcsID: processing.userID,
|
||||
name: processing.userName,
|
||||
phoneNumber: processing.userPhoneNumber);
|
||||
shipper = User(
|
||||
sender = User(
|
||||
fcsID: processing.fcsID,
|
||||
name: processing.shipperName,
|
||||
phoneNumber: processing.shipperPhoneNumber);
|
||||
@@ -55,7 +56,7 @@ class _ProcesingEditorState extends State<ProcesingEditor> {
|
||||
children: <Widget>[
|
||||
Expanded(
|
||||
child: DisplayText(
|
||||
text: user != null ? user.fcsID : "",
|
||||
text: consignee != null ? consignee.fcsID : "",
|
||||
labelTextKey: "processing.fcs.id",
|
||||
icon: FcsIDIcon(),
|
||||
)),
|
||||
@@ -63,21 +64,21 @@ class _ProcesingEditorState extends State<ProcesingEditor> {
|
||||
icon: Icon(Icons.search, color: primaryColor),
|
||||
onPressed: () => searchUser(context, callbackUserSelect: (u) {
|
||||
setState(() {
|
||||
this.user = u;
|
||||
this.consignee = u;
|
||||
});
|
||||
})),
|
||||
],
|
||||
);
|
||||
|
||||
final phoneNumberBox = DisplayText(
|
||||
text: user != null ? user.phoneNumber : "",
|
||||
text: consignee != null ? consignee.phoneNumber : "",
|
||||
labelTextKey: "processing.phone",
|
||||
maxLines: 2,
|
||||
iconData: Icons.phone,
|
||||
);
|
||||
|
||||
final namebox = DisplayText(
|
||||
text: user != null ? user.name : "",
|
||||
text: consignee != null ? consignee.name : "",
|
||||
labelTextKey: "processing.consignee.name",
|
||||
maxLines: 2,
|
||||
iconData: Icons.person,
|
||||
@@ -97,7 +98,7 @@ class _ProcesingEditorState extends State<ProcesingEditor> {
|
||||
children: <Widget>[
|
||||
Expanded(
|
||||
child: DisplayText(
|
||||
text: shipper != null ? shipper.fcsID : "",
|
||||
text: sender != null ? sender.fcsID : "",
|
||||
labelTextKey: "processing.fcs.id",
|
||||
icon: FcsIDIcon(),
|
||||
)),
|
||||
@@ -105,21 +106,21 @@ class _ProcesingEditorState extends State<ProcesingEditor> {
|
||||
icon: Icon(Icons.search, color: primaryColor),
|
||||
onPressed: () => searchUser(context, callbackUserSelect: (u) {
|
||||
setState(() {
|
||||
this.shipper = u;
|
||||
this.sender = u;
|
||||
});
|
||||
})),
|
||||
],
|
||||
);
|
||||
|
||||
final shipperPhoneNumberBox = DisplayText(
|
||||
text: shipper != null ? shipper.phoneNumber : "",
|
||||
text: sender != null ? sender.phoneNumber : "",
|
||||
labelTextKey: "processing.phone",
|
||||
maxLines: 2,
|
||||
iconData: Icons.phone,
|
||||
);
|
||||
|
||||
final shipperNamebox = DisplayText(
|
||||
text: shipper != null ? shipper.name : "",
|
||||
text: sender != null ? sender.name : "",
|
||||
labelTextKey: "processing.shipper.name",
|
||||
maxLines: 2,
|
||||
iconData: Icons.person,
|
||||
@@ -146,9 +147,17 @@ class _ProcesingEditorState extends State<ProcesingEditor> {
|
||||
color: primaryColor,
|
||||
),
|
||||
onPressed: () async {
|
||||
if (this.consignee == null) {
|
||||
showMsgDialog(context, "Warning", "Please select 'Consignee'");
|
||||
return;
|
||||
}
|
||||
Package _package = await Navigator.push<Package>(
|
||||
context,
|
||||
CupertinoPageRoute(builder: (context) => PackageEditor()),
|
||||
CupertinoPageRoute(
|
||||
builder: (context) => PackageEditor(
|
||||
sender: this.sender,
|
||||
consignee: this.consignee,
|
||||
)),
|
||||
);
|
||||
_addPackage(_package);
|
||||
// _savePackage(_package);
|
||||
@@ -224,64 +233,17 @@ class _ProcesingEditorState extends State<ProcesingEditor> {
|
||||
|
||||
List<Widget> _getPackages(BuildContext context, List<Package> packages) {
|
||||
return packages.map((p) {
|
||||
return Container(
|
||||
decoration: BoxDecoration(
|
||||
border: Border(
|
||||
bottom: BorderSide(color: Colors.grey[300]),
|
||||
),
|
||||
),
|
||||
child: InkWell(
|
||||
onTap: () async {
|
||||
Package _package = await Navigator.of(context).push<Package>(
|
||||
CupertinoPageRoute(
|
||||
builder: (context) => PackageEditor(package: p)));
|
||||
// setState(() {
|
||||
// _savePackage(_package);
|
||||
// });
|
||||
_savePackage(_package);
|
||||
},
|
||||
child: Row(
|
||||
children: <Widget>[
|
||||
Expanded(
|
||||
child: new Padding(
|
||||
padding: const EdgeInsets.symmetric(vertical: 5.0),
|
||||
child: new Row(
|
||||
children: <Widget>[
|
||||
new Padding(
|
||||
padding: new EdgeInsets.symmetric(
|
||||
horizontal: 30.0 - 15.0 / 2),
|
||||
child: Stack(
|
||||
alignment: AlignmentDirectional.bottomEnd,
|
||||
children: [
|
||||
Icon(
|
||||
Octicons.package,
|
||||
color: primaryColor,
|
||||
size: 30,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
new Expanded(
|
||||
child: new Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: <Widget>[
|
||||
new Text(
|
||||
p.trackingID,
|
||||
style: new TextStyle(fontSize: 15.0),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
IconButton(
|
||||
icon: Icon(Icons.remove, color: primaryColor),
|
||||
onPressed: () => _removePackage(p),
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
return InkWell(
|
||||
onTap: () async {
|
||||
Package _package = await Navigator.of(context).push<Package>(
|
||||
CupertinoPageRoute(
|
||||
builder: (context) => PackageInfo(package: p)));
|
||||
_savePackage(_package);
|
||||
},
|
||||
child: DisplayText(
|
||||
labelTextKey: "processing.tracking.id",
|
||||
iconData: MaterialCommunityIcons.barcode_scan,
|
||||
text: p.trackingID,
|
||||
),
|
||||
);
|
||||
}).toList();
|
||||
@@ -331,10 +293,12 @@ class _ProcesingEditorState extends State<ProcesingEditor> {
|
||||
|
||||
isDataChanged() {
|
||||
if (_isNew) {
|
||||
return this.packages.isNotEmpty || user != null || shipper != null;
|
||||
return this.packages.isNotEmpty || consignee != null || sender != null;
|
||||
} else {
|
||||
Processing _processing = Processing(
|
||||
userID: user.fcsID, fcsID: shipper.fcsID, packages: this.packages);
|
||||
userID: consignee.fcsID,
|
||||
fcsID: sender.fcsID,
|
||||
packages: this.packages);
|
||||
return widget.processing.isChangedForEdit(_processing);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user