update carton
This commit is contained in:
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user