import 'package:fcs/domain/vo/delivery_address.dart';
import 'package:fcs/pages/delivery_address/model/delivery_address_model.dart';
import 'package:fcs/pages/widgets/bottom_up_page_route.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';

import 'delivery_address_editor.dart';

class DeliveryAddressRow extends StatelessWidget {
  final DeliveryAddress shippingAddress;
  final int index;

  const DeliveryAddressRow({Key key, this.shippingAddress, this.index})
      : super(key: key);

  @override
  Widget build(BuildContext context) {
    var deliveryAddressModel = Provider.of<DeliveryAddressModel>(context);
    return Container(
      padding: EdgeInsets.only(left: 10, right: 10),
      child: Column(
        children: <Widget>[
          Row(
            children: <Widget>[
              Expanded(
                child: new Padding(
                  padding: const EdgeInsets.symmetric(vertical: 10.0),
                  child: Row(
                    children: <Widget>[
                      InkWell(
                        onTap: () {
                          Navigator.pop(context, shippingAddress);
                        },
                        child: new Column(
                          crossAxisAlignment: CrossAxisAlignment.start,
                          mainAxisAlignment: MainAxisAlignment.start,
                          children: <Widget>[
                            Padding(
                              padding: const EdgeInsets.only(left: 8.0),
                              child: new Text(
                                shippingAddress.fullName == null
                                    ? ''
                                    : shippingAddress.fullName,
                                style: new TextStyle(
                                    fontSize: 15.0,
                                    color: Colors.black,
                                    fontWeight: FontWeight.bold),
                              ),
                            ),
                            Padding(
                              padding: const EdgeInsets.only(left: 8.0),
                              child: new Text(
                                shippingAddress.addressLine1 == null
                                    ? ''
                                    : shippingAddress.addressLine1,
                                style: new TextStyle(
                                    fontSize: 14.0, color: Colors.grey),
                              ),
                            ),
                            Padding(
                              padding: const EdgeInsets.only(left: 8.0),
                              child: new Text(
                                shippingAddress.addressLine2 == null
                                    ? ''
                                    : shippingAddress.addressLine2,
                                style: new TextStyle(
                                    fontSize: 14.0, color: Colors.grey),
                              ),
                            ),
                            Padding(
                              padding: const EdgeInsets.only(left: 8.0),
                              child: new Text(
                                shippingAddress.city == null
                                    ? ''
                                    : shippingAddress.city,
                                style: new TextStyle(
                                    fontSize: 14.0, color: Colors.grey),
                              ),
                            ),
                            Padding(
                              padding: const EdgeInsets.only(left: 8.0),
                              child: new Text(
                                shippingAddress.state == null
                                    ? ''
                                    : shippingAddress.state,
                                style: new TextStyle(
                                    fontSize: 14.0, color: Colors.grey),
                              ),
                            ),
                            Padding(
                              padding: const EdgeInsets.only(left: 8.0),
                              child: new Text(
                                shippingAddress.country == null
                                    ? ''
                                    : shippingAddress.country,
                                style: new TextStyle(
                                    fontSize: 14.0, color: Colors.grey),
                              ),
                            ),
                            Padding(
                              padding: const EdgeInsets.only(left: 8.0),
                              child: new Text(
                                shippingAddress.phoneNumber == null
                                    ? ''
                                    : "Phone:${shippingAddress.phoneNumber}",
                                style: new TextStyle(
                                    fontSize: 14.0, color: Colors.grey),
                              ),
                            ),
                          ],
                        ),
                      ),
                    ],
                  ),
                ),
              ),
              IconButton(
                  padding: EdgeInsets.only(right: 30),
                  icon: Icon(Icons.edit, color: Colors.black45),
                  onPressed: () {
                    Navigator.push(
                      context,
                      BottomUpPageRoute(DeliveryAddressEditor(
                          deliveryAddress: shippingAddress)),
                    );
                  }),
              IconButton(
                  padding: EdgeInsets.only(right: 30),
                  icon: Icon(Icons.delete, color: Colors.black45),
                  onPressed: () async {
                    await deliveryAddressModel
                        .deleteDeliveryAddress(shippingAddress);
                  })
            ],
          ),
          index == null
              ? Container()
              : index == deliveryAddressModel.deliveryAddresses.length - 1
                  ? Container()
                  : Divider(color: Colors.black)
        ],
      ),
    );
  }
}
