update package and carton selection
This commit is contained in:
@@ -13,10 +13,12 @@ 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 '../main/util.dart';
|
||||
import 'carton_package_form.dart';
|
||||
import 'carton_info.dart';
|
||||
import 'mix_carton/mix_carton_form.dart';
|
||||
import 'model/package_selection_model.dart';
|
||||
import 'widget/carton_row.dart';
|
||||
|
||||
class CartonEditor extends StatefulWidget {
|
||||
@@ -38,6 +40,7 @@ class _CartonEditorState extends State<CartonEditor> {
|
||||
User? _consignee;
|
||||
User? _sender;
|
||||
Carton? _carton;
|
||||
bool _hasPackages = true;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
@@ -140,6 +143,12 @@ class _CartonEditorState extends State<CartonEditor> {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!_hasPackages) {
|
||||
showMsgDialog(
|
||||
context, "Error", "No packages in sender and consignee");
|
||||
return;
|
||||
}
|
||||
|
||||
Navigator.push(
|
||||
context,
|
||||
CupertinoPageRoute(
|
||||
@@ -170,10 +179,12 @@ class _CartonEditorState extends State<CartonEditor> {
|
||||
)),
|
||||
IconButton(
|
||||
icon: Icon(Icons.search, color: Colors.black),
|
||||
onPressed: () => searchUser(context, onUserSelect: (u) {
|
||||
onPressed: () => searchUser(context, onUserSelect: (u) async {
|
||||
setState(() {
|
||||
this._consignee = u;
|
||||
});
|
||||
|
||||
_checkPackages();
|
||||
}, popPage: true)),
|
||||
],
|
||||
);
|
||||
@@ -197,11 +208,12 @@ class _CartonEditorState extends State<CartonEditor> {
|
||||
|
||||
final consigneeBox = Container(
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
consigneeSearchBox,
|
||||
consigneefcsIDBox,
|
||||
consigneePhoneBox,
|
||||
consigneeNameBox
|
||||
consigneeNameBox,
|
||||
],
|
||||
),
|
||||
);
|
||||
@@ -216,10 +228,12 @@ class _CartonEditorState extends State<CartonEditor> {
|
||||
)),
|
||||
IconButton(
|
||||
icon: Icon(Icons.search, color: Colors.black),
|
||||
onPressed: () => searchUser(context, onUserSelect: (u) {
|
||||
onPressed: () => searchUser(context, onUserSelect: (u) async {
|
||||
setState(() {
|
||||
this._sender = u;
|
||||
});
|
||||
|
||||
_checkPackages();
|
||||
}, popPage: true)),
|
||||
],
|
||||
);
|
||||
@@ -243,6 +257,7 @@ class _CartonEditorState extends State<CartonEditor> {
|
||||
|
||||
final senderBox = Container(
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
senderSearchBox,
|
||||
senderIDBox,
|
||||
@@ -268,14 +283,24 @@ class _CartonEditorState extends State<CartonEditor> {
|
||||
cartonTypeBox,
|
||||
isFromPackages
|
||||
? Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
LocalTitle(textKey: "box.select.sender_and_consignee"),
|
||||
Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Flexible(child: senderBox),
|
||||
Flexible(child: consigneeBox)
|
||||
],
|
||||
),
|
||||
!_hasPackages
|
||||
? Padding(
|
||||
padding: const EdgeInsets.only(top: 5),
|
||||
child: Text("No packages in sender and consignee",
|
||||
style: TextStyle(
|
||||
color: dangerColor, fontSize: 13)),
|
||||
)
|
||||
: const SizedBox()
|
||||
],
|
||||
)
|
||||
: Container(),
|
||||
@@ -290,6 +315,18 @@ class _CartonEditorState extends State<CartonEditor> {
|
||||
);
|
||||
}
|
||||
|
||||
_checkPackages() async {
|
||||
if (_sender != null && _consignee != null) {
|
||||
var p = await context
|
||||
.read<PackageSelectionModel>()
|
||||
.getPackagesBySenderAndConsigneeId(
|
||||
senderId: _sender!.id ?? "", consigneeId: _consignee!.id ?? "");
|
||||
setState(() {
|
||||
_hasPackages = p.isNotEmpty;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
List<Widget> _getCartons(BuildContext context, List<Carton> cartons) {
|
||||
return cartons.map((c) {
|
||||
return InkWell(
|
||||
|
||||
Reference in New Issue
Block a user