update package and carton selection

This commit is contained in:
tzw
2024-03-04 17:09:47 +06:30
parent c66734d386
commit 1c4a9c2112
11 changed files with 236 additions and 237 deletions

View File

@@ -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(