update carton

This commit is contained in:
Thinzar Win
2021-01-11 19:35:26 +06:30
parent 8a813023f4
commit db07e01f85
19 changed files with 211 additions and 137 deletions

View File

@@ -9,34 +9,44 @@ import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
typedef OnAdded();
class DeliveryAddressSelection extends StatelessWidget {
class DeliveryAddressSelection extends StatefulWidget {
final DeliveryAddress deliveryAddress;
final List<DeliveryAddress> deliveryAddresses;
final User user;
final OnAdded onAdded;
const DeliveryAddressSelection(
{Key key,
this.deliveryAddress,
this.deliveryAddresses,
this.user,
this.onAdded})
: super(key: key);
const DeliveryAddressSelection({
Key key,
this.deliveryAddress,
this.user,
}) : super(key: key);
Future<List<DeliveryAddress>> _getDeliverAddresses(
BuildContext context) async {
@override
_DeliveryAddressSelectionState createState() =>
_DeliveryAddressSelectionState();
}
class _DeliveryAddressSelectionState extends State<DeliveryAddressSelection> {
List<DeliveryAddress> _deliveryAddresses = [];
@override
void initState() {
_getDeliverAddresses();
super.initState();
}
_getDeliverAddresses() async {
var addressModel =
Provider.of<DeliveryAddressModel>(context, listen: false);
var _deliveryAddresses = await addressModel.getDeliveryAddresses(user.id);
return _deliveryAddresses;
var deliveryAddresses =
await addressModel.getDeliveryAddresses(widget.user.id);
setState(() {
this._deliveryAddresses = deliveryAddresses;
});
}
@override
Widget build(BuildContext context) {
if (user != null) {}
if (widget.user != null) {}
return Scaffold(
appBar: AppBar(
centerTitle: true,
@@ -52,12 +62,10 @@ class DeliveryAddressSelection extends StatelessWidget {
floatingActionButton: FloatingActionButton.extended(
onPressed: () async {
bool updated = await Navigator.of(context).push(CupertinoPageRoute(
builder: (context) => DeliveryAddressEditor(
user: user,
)));
if (updated && onAdded != null) {
onAdded();
Navigator.pop(context);
builder: (context) =>
DeliveryAddressEditor(user: widget.user)));
if (updated ?? false) {
_getDeliverAddresses();
}
},
icon: Icon(Icons.add),
@@ -71,37 +79,46 @@ class DeliveryAddressSelection extends StatelessWidget {
separatorBuilder: (c, i) => Divider(
color: primaryColor,
),
itemCount: deliveryAddresses.length,
itemCount: _deliveryAddresses.length,
itemBuilder: (context, index) {
return _row(context, deliveryAddresses[index]);
return _row(context, _deliveryAddresses[index]);
}),
));
}
_row(BuildContext context, DeliveryAddress _deliveryAddress) {
return InkWell(
onTap: () => _select(context, _deliveryAddress),
child: Row(
children: [
Padding(
return Row(
children: [
InkWell(
onTap: () => _select(context, _deliveryAddress),
child: Padding(
padding: const EdgeInsets.all(10.0),
child: Icon(Icons.check,
color: deliveryAddress != null &&
_deliveryAddress.id == deliveryAddress.id
color: widget.deliveryAddress != null &&
_deliveryAddress.id == widget.deliveryAddress.id
? primaryColor
: Colors.black26),
),
Expanded(
child: DeliveryAddressRow(
key: ValueKey(_deliveryAddress.id),
deliveryAddress: _deliveryAddress,
)),
],
),
),
Expanded(
child: DeliveryAddressRow(
key: ValueKey(_deliveryAddress.id),
deliveryAddress: _deliveryAddress,
selectionCallback: (d) => _edit(context, _deliveryAddress))),
],
);
}
_select(BuildContext context, DeliveryAddress _deliveryAddress) {
Navigator.pop(context, _deliveryAddress);
}
_edit(BuildContext context, DeliveryAddress deliveryAddress) async {
bool updated = await Navigator.of(context).push(CupertinoPageRoute(
builder: (context) => DeliveryAddressEditor(
user: widget.user, deliveryAddress: deliveryAddress)));
if (updated ?? false) {
_getDeliverAddresses();
}
}
}