b+8
This commit is contained in:
@@ -560,7 +560,7 @@
|
|||||||
"processing.create":"New Processing",
|
"processing.create":"New Processing",
|
||||||
"processing.update":"Update Processing",
|
"processing.update":"Update Processing",
|
||||||
"processing.consignee.name":"Consignee name",
|
"processing.consignee.name":"Consignee name",
|
||||||
"processing.shipper.name":"Shipper name",
|
"processing.shipper.name":"Sender name",
|
||||||
"processing.package.select.btn":"Select",
|
"processing.package.select.btn":"Select",
|
||||||
"processing.package.create":"New Package",
|
"processing.package.create":"New Package",
|
||||||
"processing.package.update":"Update Package",
|
"processing.package.update":"Update Package",
|
||||||
|
|||||||
@@ -14,16 +14,18 @@ class Config {
|
|||||||
final String reportURL;
|
final String reportURL;
|
||||||
final Level level;
|
final Level level;
|
||||||
final String reportProjectID;
|
final String reportProjectID;
|
||||||
|
final String bucketName;
|
||||||
|
|
||||||
factory Config(
|
factory Config(
|
||||||
{@required Flavor flavor,
|
{@required Flavor flavor,
|
||||||
@required String apiURL,
|
@required String apiURL,
|
||||||
@required String reportURL,
|
@required String reportURL,
|
||||||
@required String reportProjectID,
|
@required String reportProjectID,
|
||||||
|
@required String bucketName,
|
||||||
Color color: Colors.blue,
|
Color color: Colors.blue,
|
||||||
Level level: Level.SEVERE}) {
|
Level level: Level.SEVERE}) {
|
||||||
_instance ??= Config._internal(flavor, FlavorNames[flavor.index], color,
|
_instance ??= Config._internal(flavor, FlavorNames[flavor.index], color,
|
||||||
apiURL, reportURL, level, reportProjectID);
|
apiURL, reportURL, level, reportProjectID, bucketName);
|
||||||
|
|
||||||
Logger.root.level = level;
|
Logger.root.level = level;
|
||||||
Logger.root.onRecord.listen((record) {
|
Logger.root.onRecord.listen((record) {
|
||||||
@@ -35,7 +37,7 @@ class Config {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Config._internal(this.flavor, this.name, this.color, this.apiURL,
|
Config._internal(this.flavor, this.name, this.color, this.apiURL,
|
||||||
this.reportURL, this.level, this.reportProjectID);
|
this.reportURL, this.level, this.reportProjectID, this.bucketName);
|
||||||
|
|
||||||
static Config get instance {
|
static Config get instance {
|
||||||
return _instance;
|
return _instance;
|
||||||
|
|||||||
@@ -115,6 +115,7 @@ class Package {
|
|||||||
'tracking_id': trackingID,
|
'tracking_id': trackingID,
|
||||||
'market': market,
|
'market': market,
|
||||||
'fcs_id': fcsID,
|
'fcs_id': fcsID,
|
||||||
|
'sender_fcs_id': senderFCSID,
|
||||||
"desc": desc,
|
"desc": desc,
|
||||||
"remark": remark,
|
"remark": remark,
|
||||||
"photo_urls": photoUrls
|
"photo_urls": photoUrls
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
|
|
||||||
|
import 'package:fcs/config.dart';
|
||||||
import 'package:firebase_auth/firebase_auth.dart';
|
import 'package:firebase_auth/firebase_auth.dart';
|
||||||
import 'package:firebase_storage/firebase_storage.dart';
|
import 'package:firebase_storage/firebase_storage.dart';
|
||||||
import 'package:logging/logging.dart';
|
import 'package:logging/logging.dart';
|
||||||
@@ -39,7 +40,9 @@ Future<String> uploadStorage(String path, File file, {String fileName}) async {
|
|||||||
fileName = Uuid().v4();
|
fileName = Uuid().v4();
|
||||||
}
|
}
|
||||||
StorageReference storageReference =
|
StorageReference storageReference =
|
||||||
FirebaseStorage.instance.ref().child('$path/$fileName');
|
FirebaseStorage(storageBucket: Config.instance.bucketName)
|
||||||
|
.ref()
|
||||||
|
.child('$path/$fileName');
|
||||||
StorageUploadTask uploadTask = storageReference.putFile(file);
|
StorageUploadTask uploadTask = storageReference.putFile(file);
|
||||||
await uploadTask.onComplete;
|
await uploadTask.onComplete;
|
||||||
String downloadUrl = await storageReference.getDownloadURL();
|
String downloadUrl = await storageReference.getDownloadURL();
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ void main() {
|
|||||||
apiURL: "https://asia-northeast1-fcs-dev1.cloudfunctions.net/API",
|
apiURL: "https://asia-northeast1-fcs-dev1.cloudfunctions.net/API",
|
||||||
reportURL: "http://petrok.mokkon.com:8091",
|
reportURL: "http://petrok.mokkon.com:8091",
|
||||||
reportProjectID: "fcs-dev",
|
reportProjectID: "fcs-dev",
|
||||||
|
bucketName: "gs://fcs-dev1-us",
|
||||||
level: Level.ALL);
|
level: Level.ALL);
|
||||||
runApp(App());
|
runApp(App());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,9 +9,10 @@ void main() {
|
|||||||
Config(
|
Config(
|
||||||
flavor: Flavor.DEV,
|
flavor: Flavor.DEV,
|
||||||
color: Colors.blue,
|
color: Colors.blue,
|
||||||
reportURL: "http://192.168.100.11:8080",
|
reportURL: "http://petrok.mokkon.com:8091",
|
||||||
reportProjectID: "fcs-dev",
|
reportProjectID: "fcs-dev",
|
||||||
apiURL: "http://192.168.100.11:7777",
|
apiURL: "http://192.168.1.155:7777",
|
||||||
|
bucketName: "gs://fcs-dev1-us",
|
||||||
level: Level.ALL);
|
level: Level.ALL);
|
||||||
runApp(App());
|
runApp(App());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ void main() {
|
|||||||
apiURL: "https://asia-northeast1-fcs-prod1.cloudfunctions.net/API",
|
apiURL: "https://asia-northeast1-fcs-prod1.cloudfunctions.net/API",
|
||||||
reportURL: "http://petrok.mokkon.com:8092",
|
reportURL: "http://petrok.mokkon.com:8092",
|
||||||
reportProjectID: "fcs-prod",
|
reportProjectID: "fcs-prod",
|
||||||
|
bucketName: "gs://fcs-prod1",
|
||||||
level: Level.ALL);
|
level: Level.ALL);
|
||||||
runApp(App());
|
runApp(App());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -48,7 +48,10 @@ class _PackageInfoState extends State<PackageInfo> {
|
|||||||
initPackage(widget.package);
|
initPackage(widget.package);
|
||||||
}
|
}
|
||||||
|
|
||||||
initPackage(Package package) {
|
initPackage(Package pkg) async {
|
||||||
|
PackageModel packageModel =
|
||||||
|
Provider.of<PackageModel>(context, listen: false);
|
||||||
|
Package package = await packageModel.getPackageByTrackingID(pkg.trackingID);
|
||||||
setState(() {
|
setState(() {
|
||||||
_package = package;
|
_package = package;
|
||||||
multiImgController.setImageUrls = package.photoUrls;
|
multiImgController.setImageUrls = package.photoUrls;
|
||||||
@@ -63,38 +66,38 @@ class _PackageInfoState extends State<PackageInfo> {
|
|||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
String id = Provider.of<MainModel>(context).user.id;
|
String id = Provider.of<MainModel>(context).user.id;
|
||||||
bool owner = _package.userID == id;
|
bool owner = _package?.userID == id;
|
||||||
bool canChangeDeliveryAddress =
|
bool canChangeDeliveryAddress =
|
||||||
_package.status == package_received_status ||
|
_package?.status == package_received_status ||
|
||||||
_package.status == package_processed_status;
|
_package?.status == package_processed_status;
|
||||||
|
|
||||||
final trackingIdBox = DisplayText(
|
final trackingIdBox = DisplayText(
|
||||||
text: _package.trackingID,
|
text: _package?.trackingID??"",
|
||||||
labelTextKey: "package.tracking.id",
|
labelTextKey: "package.tracking.id",
|
||||||
iconData: MaterialCommunityIcons.barcode_scan,
|
iconData: MaterialCommunityIcons.barcode_scan,
|
||||||
);
|
);
|
||||||
var fcsIDBox = DisplayText(
|
var fcsIDBox = DisplayText(
|
||||||
text: _package.fcsID,
|
text: _package?.fcsID??"",
|
||||||
labelTextKey: "processing.fcs.id",
|
labelTextKey: "processing.fcs.id",
|
||||||
icon: FcsIDIcon(),
|
icon: FcsIDIcon(),
|
||||||
);
|
);
|
||||||
final customerNameBox = DisplayText(
|
final customerNameBox = DisplayText(
|
||||||
text: _package.userName,
|
text: _package?.userName??"",
|
||||||
labelTextKey: "package.create.name",
|
labelTextKey: "package.create.name",
|
||||||
iconData: Icons.perm_identity,
|
iconData: Icons.perm_identity,
|
||||||
);
|
);
|
||||||
final marketBox = DisplayText(
|
final marketBox = DisplayText(
|
||||||
text: _package.market ?? "-",
|
text: _package?.market ?? "-",
|
||||||
labelTextKey: "package.create.market",
|
labelTextKey: "package.create.market",
|
||||||
iconData: Icons.store,
|
iconData: Icons.store,
|
||||||
);
|
);
|
||||||
final descBox = DisplayText(
|
final descBox = DisplayText(
|
||||||
text: _package.desc ?? "-",
|
text: _package?.desc ?? "-",
|
||||||
labelTextKey: "package.edit.desc",
|
labelTextKey: "package.edit.desc",
|
||||||
iconData: MaterialCommunityIcons.message_text_outline,
|
iconData: MaterialCommunityIcons.message_text_outline,
|
||||||
);
|
);
|
||||||
final remarkBox = DisplayText(
|
final remarkBox = DisplayText(
|
||||||
text: _package.remark ?? "-",
|
text: _package?.remark ?? "-",
|
||||||
labelTextKey: "package.edit.remark",
|
labelTextKey: "package.edit.remark",
|
||||||
iconData: Entypo.new_message,
|
iconData: Entypo.new_message,
|
||||||
);
|
);
|
||||||
@@ -109,7 +112,7 @@ class _PackageInfoState extends State<PackageInfo> {
|
|||||||
callBack: _return,
|
callBack: _return,
|
||||||
);
|
);
|
||||||
final deliveryAddressBox = DefaultDeliveryAddress(
|
final deliveryAddressBox = DefaultDeliveryAddress(
|
||||||
deliveryAddress: _package.deliveryAddress,
|
deliveryAddress: _package?.deliveryAddress,
|
||||||
labelKey: "package.delivery.address",
|
labelKey: "package.delivery.address",
|
||||||
onTap: owner && canChangeDeliveryAddress
|
onTap: owner && canChangeDeliveryAddress
|
||||||
? () async {
|
? () async {
|
||||||
@@ -155,10 +158,10 @@ class _PackageInfoState extends State<PackageInfo> {
|
|||||||
widget.isSearchResult ? Container() : fcsIDBox,
|
widget.isSearchResult ? Container() : fcsIDBox,
|
||||||
widget.isSearchResult ? Container() : customerNameBox,
|
widget.isSearchResult ? Container() : customerNameBox,
|
||||||
widget.isSearchResult ? Container() : marketBox,
|
widget.isSearchResult ? Container() : marketBox,
|
||||||
_package.photoUrls.length == 0 ? Container() : img,
|
_package==null || _package.photoUrls.length == 0 ? Container() : img,
|
||||||
widget.isSearchResult ? Container() : descBox,
|
widget.isSearchResult ? Container() : descBox,
|
||||||
remarkBox,
|
remarkBox,
|
||||||
_package.status == package_received_status &&
|
_package?.status == package_received_status &&
|
||||||
widget.isCustomer
|
widget.isCustomer
|
||||||
? returnButton
|
? returnButton
|
||||||
: Container(),
|
: Container(),
|
||||||
@@ -166,8 +169,8 @@ class _PackageInfoState extends State<PackageInfo> {
|
|||||||
widget.isSearchResult
|
widget.isSearchResult
|
||||||
? Container()
|
? Container()
|
||||||
: StatusTree(
|
: StatusTree(
|
||||||
shipmentHistory: _package.shipmentHistory,
|
shipmentHistory: _package?.shipmentHistory,
|
||||||
currentStatus: _package.status),
|
currentStatus: _package?.status),
|
||||||
SizedBox(
|
SizedBox(
|
||||||
height: 20,
|
height: 20,
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
import 'package:fcs/domain/entities/market.dart';
|
import 'package:fcs/domain/entities/market.dart';
|
||||||
import 'package:fcs/domain/entities/package.dart';
|
import 'package:fcs/domain/entities/package.dart';
|
||||||
|
import 'package:fcs/domain/entities/user.dart';
|
||||||
import 'package:fcs/helpers/theme.dart';
|
import 'package:fcs/helpers/theme.dart';
|
||||||
import 'package:fcs/pages/market/market_editor.dart';
|
import 'package:fcs/pages/market/market_editor.dart';
|
||||||
import 'package:fcs/pages/market/model/market_model.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/package/tracking_id_page.dart';
|
||||||
import 'package:fcs/pages/main/util.dart';
|
import 'package:fcs/pages/main/util.dart';
|
||||||
import 'package:fcs/pages/widgets/barcode_scanner.dart';
|
import 'package:fcs/pages/widgets/barcode_scanner.dart';
|
||||||
@@ -19,7 +21,9 @@ import 'package:provider/provider.dart';
|
|||||||
|
|
||||||
class PackageEditor extends StatefulWidget {
|
class PackageEditor extends StatefulWidget {
|
||||||
final Package package;
|
final Package package;
|
||||||
PackageEditor({this.package});
|
final User consignee;
|
||||||
|
final User sender;
|
||||||
|
PackageEditor({this.package, this.consignee, this.sender});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
_PackageEditorState createState() => _PackageEditorState();
|
_PackageEditorState createState() => _PackageEditorState();
|
||||||
@@ -260,17 +264,24 @@ class _PackageEditorState extends State<PackageEditor> {
|
|||||||
setState(() {
|
setState(() {
|
||||||
_isLoading = true;
|
_isLoading = true;
|
||||||
});
|
});
|
||||||
|
PackageModel packageModel =
|
||||||
|
Provider.of<PackageModel>(context, listen: false);
|
||||||
try {
|
try {
|
||||||
this._package.trackingID = _trackingIDCtl.text;
|
Package package=await packageModel.getPackageByTrackingID(_trackingIDCtl.text);
|
||||||
this._package.market = selectedMarket;
|
package.trackingID = _trackingIDCtl.text;
|
||||||
this._package.desc = _descCtl.text;
|
package.market = selectedMarket;
|
||||||
this._package.remark = _remarkCtl.text;
|
package.desc = _descCtl.text;
|
||||||
this._package.photoFiles = _isNew
|
package.remark = _remarkCtl.text;
|
||||||
|
package.photoFiles = _isNew
|
||||||
? multiImgController.getAddedFile
|
? multiImgController.getAddedFile
|
||||||
: multiImgController.getUpdatedFile;
|
: 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) {
|
} catch (e) {
|
||||||
showMsgDialog(context, "Error", e.toString());
|
showMsgDialog(context, "Error", e.toString());
|
||||||
} finally {
|
} finally {
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import 'package:fcs/domain/entities/processing.dart';
|
|||||||
import 'package:fcs/domain/entities/user.dart';
|
import 'package:fcs/domain/entities/user.dart';
|
||||||
import 'package:fcs/helpers/theme.dart';
|
import 'package:fcs/helpers/theme.dart';
|
||||||
import 'package:fcs/pages/main/util.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/user_search/user_serach.dart';
|
||||||
import 'package:fcs/pages/widgets/display_text.dart';
|
import 'package:fcs/pages/widgets/display_text.dart';
|
||||||
import 'package:fcs/pages/widgets/fcs_id_icon.dart';
|
import 'package:fcs/pages/widgets/fcs_id_icon.dart';
|
||||||
@@ -27,8 +28,8 @@ class _ProcesingEditorState extends State<ProcesingEditor> {
|
|||||||
Processing processing = Processing();
|
Processing processing = Processing();
|
||||||
bool _isLoading = false;
|
bool _isLoading = false;
|
||||||
bool _isNew;
|
bool _isNew;
|
||||||
User user;
|
User consignee;
|
||||||
User shipper;
|
User sender;
|
||||||
List<Package> packages = [];
|
List<Package> packages = [];
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -37,11 +38,11 @@ class _ProcesingEditorState extends State<ProcesingEditor> {
|
|||||||
_isNew = widget.processing == null;
|
_isNew = widget.processing == null;
|
||||||
if (!_isNew) {
|
if (!_isNew) {
|
||||||
processing = widget.processing;
|
processing = widget.processing;
|
||||||
user = User(
|
consignee = User(
|
||||||
fcsID: processing.userID,
|
fcsID: processing.userID,
|
||||||
name: processing.userName,
|
name: processing.userName,
|
||||||
phoneNumber: processing.userPhoneNumber);
|
phoneNumber: processing.userPhoneNumber);
|
||||||
shipper = User(
|
sender = User(
|
||||||
fcsID: processing.fcsID,
|
fcsID: processing.fcsID,
|
||||||
name: processing.shipperName,
|
name: processing.shipperName,
|
||||||
phoneNumber: processing.shipperPhoneNumber);
|
phoneNumber: processing.shipperPhoneNumber);
|
||||||
@@ -55,7 +56,7 @@ class _ProcesingEditorState extends State<ProcesingEditor> {
|
|||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
Expanded(
|
Expanded(
|
||||||
child: DisplayText(
|
child: DisplayText(
|
||||||
text: user != null ? user.fcsID : "",
|
text: consignee != null ? consignee.fcsID : "",
|
||||||
labelTextKey: "processing.fcs.id",
|
labelTextKey: "processing.fcs.id",
|
||||||
icon: FcsIDIcon(),
|
icon: FcsIDIcon(),
|
||||||
)),
|
)),
|
||||||
@@ -63,21 +64,21 @@ class _ProcesingEditorState extends State<ProcesingEditor> {
|
|||||||
icon: Icon(Icons.search, color: primaryColor),
|
icon: Icon(Icons.search, color: primaryColor),
|
||||||
onPressed: () => searchUser(context, callbackUserSelect: (u) {
|
onPressed: () => searchUser(context, callbackUserSelect: (u) {
|
||||||
setState(() {
|
setState(() {
|
||||||
this.user = u;
|
this.consignee = u;
|
||||||
});
|
});
|
||||||
})),
|
})),
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
|
||||||
final phoneNumberBox = DisplayText(
|
final phoneNumberBox = DisplayText(
|
||||||
text: user != null ? user.phoneNumber : "",
|
text: consignee != null ? consignee.phoneNumber : "",
|
||||||
labelTextKey: "processing.phone",
|
labelTextKey: "processing.phone",
|
||||||
maxLines: 2,
|
maxLines: 2,
|
||||||
iconData: Icons.phone,
|
iconData: Icons.phone,
|
||||||
);
|
);
|
||||||
|
|
||||||
final namebox = DisplayText(
|
final namebox = DisplayText(
|
||||||
text: user != null ? user.name : "",
|
text: consignee != null ? consignee.name : "",
|
||||||
labelTextKey: "processing.consignee.name",
|
labelTextKey: "processing.consignee.name",
|
||||||
maxLines: 2,
|
maxLines: 2,
|
||||||
iconData: Icons.person,
|
iconData: Icons.person,
|
||||||
@@ -97,7 +98,7 @@ class _ProcesingEditorState extends State<ProcesingEditor> {
|
|||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
Expanded(
|
Expanded(
|
||||||
child: DisplayText(
|
child: DisplayText(
|
||||||
text: shipper != null ? shipper.fcsID : "",
|
text: sender != null ? sender.fcsID : "",
|
||||||
labelTextKey: "processing.fcs.id",
|
labelTextKey: "processing.fcs.id",
|
||||||
icon: FcsIDIcon(),
|
icon: FcsIDIcon(),
|
||||||
)),
|
)),
|
||||||
@@ -105,21 +106,21 @@ class _ProcesingEditorState extends State<ProcesingEditor> {
|
|||||||
icon: Icon(Icons.search, color: primaryColor),
|
icon: Icon(Icons.search, color: primaryColor),
|
||||||
onPressed: () => searchUser(context, callbackUserSelect: (u) {
|
onPressed: () => searchUser(context, callbackUserSelect: (u) {
|
||||||
setState(() {
|
setState(() {
|
||||||
this.shipper = u;
|
this.sender = u;
|
||||||
});
|
});
|
||||||
})),
|
})),
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
|
||||||
final shipperPhoneNumberBox = DisplayText(
|
final shipperPhoneNumberBox = DisplayText(
|
||||||
text: shipper != null ? shipper.phoneNumber : "",
|
text: sender != null ? sender.phoneNumber : "",
|
||||||
labelTextKey: "processing.phone",
|
labelTextKey: "processing.phone",
|
||||||
maxLines: 2,
|
maxLines: 2,
|
||||||
iconData: Icons.phone,
|
iconData: Icons.phone,
|
||||||
);
|
);
|
||||||
|
|
||||||
final shipperNamebox = DisplayText(
|
final shipperNamebox = DisplayText(
|
||||||
text: shipper != null ? shipper.name : "",
|
text: sender != null ? sender.name : "",
|
||||||
labelTextKey: "processing.shipper.name",
|
labelTextKey: "processing.shipper.name",
|
||||||
maxLines: 2,
|
maxLines: 2,
|
||||||
iconData: Icons.person,
|
iconData: Icons.person,
|
||||||
@@ -146,9 +147,17 @@ class _ProcesingEditorState extends State<ProcesingEditor> {
|
|||||||
color: primaryColor,
|
color: primaryColor,
|
||||||
),
|
),
|
||||||
onPressed: () async {
|
onPressed: () async {
|
||||||
|
if (this.consignee == null) {
|
||||||
|
showMsgDialog(context, "Warning", "Please select 'Consignee'");
|
||||||
|
return;
|
||||||
|
}
|
||||||
Package _package = await Navigator.push<Package>(
|
Package _package = await Navigator.push<Package>(
|
||||||
context,
|
context,
|
||||||
CupertinoPageRoute(builder: (context) => PackageEditor()),
|
CupertinoPageRoute(
|
||||||
|
builder: (context) => PackageEditor(
|
||||||
|
sender: this.sender,
|
||||||
|
consignee: this.consignee,
|
||||||
|
)),
|
||||||
);
|
);
|
||||||
_addPackage(_package);
|
_addPackage(_package);
|
||||||
// _savePackage(_package);
|
// _savePackage(_package);
|
||||||
@@ -224,64 +233,17 @@ class _ProcesingEditorState extends State<ProcesingEditor> {
|
|||||||
|
|
||||||
List<Widget> _getPackages(BuildContext context, List<Package> packages) {
|
List<Widget> _getPackages(BuildContext context, List<Package> packages) {
|
||||||
return packages.map((p) {
|
return packages.map((p) {
|
||||||
return Container(
|
return InkWell(
|
||||||
decoration: BoxDecoration(
|
|
||||||
border: Border(
|
|
||||||
bottom: BorderSide(color: Colors.grey[300]),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
child: InkWell(
|
|
||||||
onTap: () async {
|
onTap: () async {
|
||||||
Package _package = await Navigator.of(context).push<Package>(
|
Package _package = await Navigator.of(context).push<Package>(
|
||||||
CupertinoPageRoute(
|
CupertinoPageRoute(
|
||||||
builder: (context) => PackageEditor(package: p)));
|
builder: (context) => PackageInfo(package: p)));
|
||||||
// setState(() {
|
|
||||||
// _savePackage(_package);
|
|
||||||
// });
|
|
||||||
_savePackage(_package);
|
_savePackage(_package);
|
||||||
},
|
},
|
||||||
child: Row(
|
child: DisplayText(
|
||||||
children: <Widget>[
|
labelTextKey: "processing.tracking.id",
|
||||||
Expanded(
|
iconData: MaterialCommunityIcons.barcode_scan,
|
||||||
child: new Padding(
|
text: p.trackingID,
|
||||||
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),
|
|
||||||
)
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}).toList();
|
}).toList();
|
||||||
@@ -331,10 +293,12 @@ class _ProcesingEditorState extends State<ProcesingEditor> {
|
|||||||
|
|
||||||
isDataChanged() {
|
isDataChanged() {
|
||||||
if (_isNew) {
|
if (_isNew) {
|
||||||
return this.packages.isNotEmpty || user != null || shipper != null;
|
return this.packages.isNotEmpty || consignee != null || sender != null;
|
||||||
} else {
|
} else {
|
||||||
Processing _processing = Processing(
|
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);
|
return widget.processing.isChangedForEdit(_processing);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ name: fcs
|
|||||||
description: FCS Logistics
|
description: FCS Logistics
|
||||||
publish_to: 'none' # Remove this line if you wish to publish to pub.dev
|
publish_to: 'none' # Remove this line if you wish to publish to pub.dev
|
||||||
|
|
||||||
version: 1.0.5+7
|
version: 1.0.6+8
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=2.7.0 <3.0.0"
|
sdk: ">=2.7.0 <3.0.0"
|
||||||
|
|||||||
Reference in New Issue
Block a user