add shipments

This commit is contained in:
Sai Naw Wun
2020-10-19 05:13:49 +06:30
parent 4f8bde40b0
commit c619ae3f22
57 changed files with 1886 additions and 724 deletions

View File

@@ -27,10 +27,12 @@ class DefaultDeliveryAddress extends StatelessWidget {
Row(
children: [
Expanded(
child: DisplayText(
labelTextKey: this.labelKey ?? "delivery_address",
iconData: iconData ?? MaterialCommunityIcons.truck_fast,
),
child: this.labelKey == null
? Container()
: DisplayText(
labelTextKey: this.labelKey,
iconData: iconData ?? MaterialCommunityIcons.truck_fast,
),
),
onTap == null
? Container()

View File

@@ -9,9 +9,17 @@ class LocalDropdown<T> extends StatelessWidget {
final IconData iconData;
final T selectedValue;
final List<T> values;
final Function(T) display;
final String labelKey;
const LocalDropdown(
{Key key, this.callback, this.iconData, this.selectedValue, this.values})
{Key key,
this.callback,
this.iconData,
this.selectedValue,
this.values,
this.labelKey,
this.display})
: super(key: key);
@override
@@ -32,7 +40,7 @@ class LocalDropdown<T> extends StatelessWidget {
padding: const EdgeInsets.only(right: 18.0),
child: LocalText(
context,
"shipment.type",
labelKey,
color: Colors.black54,
fontSize: 16,
),
@@ -49,14 +57,21 @@ class LocalDropdown<T> extends StatelessWidget {
callback(newValue);
},
isExpanded: true,
items: values.map<DropdownMenuItem<T>>((T value) {
return DropdownMenuItem<T>(
value: value,
child: Text(value==null? "":value.toString(),
overflow: TextOverflow.ellipsis,
style: TextStyle(color: primaryColor)),
);
}).toList(),
items: values == null
? []
: values.map<DropdownMenuItem<T>>((T value) {
return DropdownMenuItem<T>(
value: value,
child: Text(
value == null
? ""
: display != null
? display(value)
: value.toString(),
overflow: TextOverflow.ellipsis,
style: TextStyle(color: primaryColor)),
);
}).toList(),
),
],
),

View File

@@ -10,6 +10,7 @@ class LocalPopupMenuButton extends StatefulWidget {
final PopupMenuCallback popupMenuCallback;
final List<LocalPopupMenu> popmenus;
final bool multiSelect;
final bool selectable;
final IconData buttonIcon;
const LocalPopupMenuButton(
@@ -17,6 +18,7 @@ class LocalPopupMenuButton extends StatefulWidget {
this.popupMenuCallback,
this.popmenus,
this.buttonIcon,
this.selectable = true,
this.multiSelect = false})
: super(key: key);
@@ -39,25 +41,27 @@ class _LocalPopupMenuButtonState extends State<LocalPopupMenuButton> {
return PopupMenuButton<LocalPopupMenu>(
elevation: 3.2,
onSelected: (selected) {
if (!widget.multiSelect) {
setState(() {
popmenus.forEach((e) {
if (e.id != selected.id)
e.selected = false;
else
e.selected = true;
if (widget.selectable) {
if (!widget.multiSelect) {
setState(() {
popmenus.forEach((e) {
if (e.id != selected.id)
e.selected = false;
else
e.selected = true;
});
});
});
selected.selected = true;
} else {
setState(() {
popmenus.forEach((e) {
if (e.id == selected.id) e.selected = !e.selected;
selected.selected = true;
} else {
setState(() {
popmenus.forEach((e) {
if (e.id == selected.id) e.selected = !e.selected;
});
});
});
selected.selected = !selected.selected;
selected.selected = !selected.selected;
}
}
if (widget.popupMenuCallback != null)
if (selected.enabled && widget.popupMenuCallback != null)
widget.popupMenuCallback(selected);
},
icon: Container(
@@ -92,11 +96,14 @@ class _LocalPopupMenuButtonState extends State<LocalPopupMenuButton> {
)),
itemBuilder: (BuildContext context) {
return popmenus.map((LocalPopupMenu choice) {
if (choice == null) return null;
return PopupMenuItem<LocalPopupMenu>(
value: choice,
child: Row(
children: <Widget>[
LocalText(context, choice.textKey, color: primaryColor),
LocalText(context, choice.textKey,
color:
choice?.enabled ?? true ? primaryColor : Colors.grey),
SizedBox(
width: 10,
),
@@ -115,6 +122,7 @@ class _LocalPopupMenuButtonState extends State<LocalPopupMenuButton> {
bool _needHighlight() {
popmenus.forEach((e) {
if (e == null) return false;
if (e.selected && e.highlight) return true;
});
return false;

View File

@@ -3,6 +3,11 @@ class LocalPopupMenu {
String textKey;
bool selected;
bool highlight;
bool enabled;
LocalPopupMenu(
{this.id, this.textKey, this.selected = false, this.highlight = false});
{this.id,
this.textKey,
this.selected = false,
this.highlight = false,
this.enabled = true});
}