import 'dart:convert';

import 'package:cached_network_image/cached_network_image.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:zhiying_base_widget/widgets/base_state/base_state.dart';
import 'package:zhiying_base_widget/widgets/wallet/wallet_data/model/wallet_header_model.dart';
import 'package:zhiying_base_widget/widgets/wallet/wallet_data/wallet_data_bloc.dart';
import 'package:zhiying_base_widget/widgets/wallet/wallet_data/wallet_data_sk.dart';
import 'package:zhiying_comm/zhiying_comm.dart';
import 'package:provider/provider.dart';

class WalletData extends StatefulWidget {
  final Map<String, dynamic> data;

  WalletData(this.data, {Key key}) : super(key: key);

  @override
  _WalletDataState createState() => _WalletDataState();
}

class _WalletDataState extends BaseWidgetState<WalletData> {
  Map<String, dynamic> data;
  WalletDataBloc _bloc;

  Map<String, dynamic> dataModel;

  @override
  void initState() {
    super.initState();
    data = widget.data;
    _bloc = WalletDataBloc();
    _bloc.loadHeaderData();
  }

  @override
  void dispose() {
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    WalletHeaderModel model;

    return StreamBuilder(
      stream: _bloc.outData,
      builder: (context, asn) {
        dataModel = asn.data;
        if (data.containsKey('data')) {
          Map<String, dynamic> temp = json.decode(data['data']);
          model = WalletHeaderModel.fromJson(temp);
        } else {
          return WalletDataSkeleton();
        }
        return Container(
            width: double.infinity,
            child: dataModel == null
                ? WalletDataSkeleton()
                : Container(
                    margin: EdgeInsets.only(left: 12.5, right: 12.5, top: 10),
                    padding: EdgeInsets.only(left: 18, right: 13),
                    decoration: BoxDecoration(image: DecorationImage(image: CachedNetworkImageProvider(model?.headerImg ?? ""), fit: BoxFit.fill)),
                    height: 145,
                    child: Column(
                      mainAxisAlignment: MainAxisAlignment.spaceEvenly,
                      children: <Widget>[
                        Row(
                          mainAxisAlignment: MainAxisAlignment.spaceBetween,
                          children: <Widget>[
                            Row(
                              children: <Widget>[
                                CachedNetworkImage(
                                  imageUrl: model?.headerAvatar ?? "",
                                  height: 33,
                                  width: 26,
                                  fit: BoxFit.fill,
                                ),
                                Padding(
                                  padding: const EdgeInsets.all(8.0),
                                  child: Column(
                                    crossAxisAlignment: CrossAxisAlignment.start,
                                    children: <Widget>[
                                      Text(
                                        model?.headerCashOutText ?? "",
                                        style: TextStyle(fontSize: 12.5, color: HexColor.fromHex(model?.headerCashOutTextColor ?? "")),
                                      ),
                                      Text(
                                        dataModel.containsKey(model.headerCashOutKey) ? dataModel[model.headerCashOutKey] : "",
                                        style: TextStyle(
                                          fontSize: 20,
                                          color: HexColor.fromHex(model.headerCashOutTextColor),
                                          fontFamily: 'Din-Bold',
                                          package: 'zhiying_comm',
                                        ),
                                      ),
                                    ],
                                  ),
                                )
                              ],
                            ),
                            GestureDetector(
                              onTap: () {
                                RouterUtil.route(model, model.toJson(), context);
                              },
                              child: Container(
                                decoration: BoxDecoration(
                                  borderRadius: BorderRadius.circular(10),
                                  image: DecorationImage(image: CachedNetworkImageProvider(model.headerCashOutBtnImg ?? ''), fit: BoxFit.fill),
                                ),
                                child: Padding(
                                  padding: EdgeInsets.only(left: 14.5, right: 14.5, top: 10, bottom: 10),
                                  child: Text(
                                    model.headerCashOutBtnText,
                                    style: TextStyle(color: HexColor.fromHex(model.headerCashOutBtnTextColor)),
                                  ),
                                ),
                              ),
                            )
                          ],
                        ),
                        Divider(
                          height: 1,
                        ),
                        Row(mainAxisAlignment: MainAxisAlignment.spaceAround, children: _buildTopListItem(model))
                      ],
                    ),
                  ));
      },
    );
  }

  ///构建顶部Item
  _buildTopListItem(WalletHeaderModel model) {
    List<Widget> listWidget = List();
    for (var item in model.headerBottomList) {
      listWidget.add(Column(
        mainAxisSize: MainAxisSize.min,
        children: <Widget>[
          Text(
            dataModel.containsKey(item.valueKey) ? dataModel[item.valueKey] : "",
            style: TextStyle(color: HexColor.fromHex(item.valueColor), fontSize: 15, fontFamily: 'Din-Bold', package: 'zhiying_comm'),
          ),
          Text(
            item.text,
            style: TextStyle(color: HexColor.fromHex(item.textColor), fontSize: 11),
          ),
        ],
      ));
    }
    return listWidget;
  }

  @override
  void refreshWidget(String value) {
    _bloc.loadHeaderData();
  }

}