import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:zhiying_base_widget/dialog/global_dialog/intellect_search_goods_dialog/model/intellect_dialog_data_model.dart';
import 'package:zhiying_base_widget/dialog/global_dialog/intellect_search_goods_dialog/model/no_goods_dialog_style_model.dart';
import 'package:cached_network_image/cached_network_image.dart';
import 'package:zhiying_comm/zhiying_comm.dart';

import 'model/Intellect_search_set_model.dart';

class IntellectSearchNoGoodsDialog extends StatefulWidget {
  final IntellectDialogDataModel model;
  final IntellectSearchSetModel setModel;

  const IntellectSearchNoGoodsDialog({Key key, this.model, this.setModel}) : super(key: key);

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

class _IntellectSearchNoGoodsDialogState extends State<IntellectSearchNoGoodsDialog> {
  TextEditingController _textEditingController;

  NoGoodsDialogStyleModel _styleModel;

  var searchText;

  @override
  void initState() {
    _textEditingController = TextEditingController();
    _getClipBoardData();
    super.initState();
  }

  ///获取粘贴板内容
  _getClipBoardData() async {
    ClipboardData data = await Clipboard.getData(Clipboard.kTextPlain);
    _textEditingController.text = data.text.trim();
    searchText = data.text.trim();
    requestStyle();
    setState(() {});
  }

  void requestStyle() {
    NetUtil.request("/api/v1/cfg/clipboard_unidentified", onSuccess: (data) {
      _styleModel = NoGoodsDialogStyleModel.fromJson(json.decode(data['clipboard_unidentified']));
      if (_styleModel?.iconList != null && widget?.setModel?.platform != null) {
        for (var index = _styleModel?.iconList?.length - 1; index >= 0; index--) {
          bool isExits = false;
          for (var item in widget?.setModel?.platform) {
            if (_styleModel?.iconList[index].pvd == item) {
              isExits = true;
            }
          }
          if (!isExits) {
            _styleModel?.iconList?.removeAt(index);
          }
        }
      }
      setState(() {});
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        backgroundColor: Colors.transparent,
        body: InkWell(
          onTap: () {
            Navigator.of(context).pop();
          },
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              Stack(
                children: <Widget>[
                  Container(
                    margin: EdgeInsets.only(top: 19, left: 42.5, right: 42.5),
                    padding: EdgeInsets.only(top: 26, left: 15, right: 15, bottom: 24),
                    decoration: BoxDecoration(color: HexColor.fromHex(_styleModel?.bgColor ?? ""), borderRadius: BorderRadius.circular(16)),
                    width: double.infinity,
                    child: Column(
                      children: <Widget>[_buildTopItem(), _buildBottomItem()],
                    ),
                  ),
                  Container(
                    height: 38,
                    child: Center(
                        child: Container(
                      height: 38,
                      width: 108,
                      child: CachedNetworkImage(
                        imageUrl: _styleModel?.titleImg ?? "",
                      ),
                    )),
                  ),
                ],
              ),
              SizedBox(
                height: 16,
              ),
              IconButton(
                  iconSize: 36,
                  icon: Icon(
                    Icons.cancel,
                    color: Colors.white,
                  ),
                  onPressed: () {
                    Navigator.pop(context);
                  })
            ],
          ),
        ));
  }

  _buildTopItem() {
    return Container(
      decoration: BoxDecoration(),
      child: Column(
        children: <Widget>[
          Text(
            _styleModel?.moduleList?.title?.content ?? "",
            style: TextStyle(color: HexColor.fromHex(_styleModel?.moduleList?.title?.textColor ?? ""), fontSize: 15),
          ),
          Container(
            margin: EdgeInsets.only(top: 12),
            decoration: BoxDecoration(color: HexColor.fromHex(_styleModel?.moduleList?.content?.bgColor ?? ""), borderRadius: BorderRadius.circular(10)),
            child: TextField(
              controller: _textEditingController,
              textAlign: TextAlign.start,
              style: TextStyle(color: HexColor.fromHex(_styleModel?.moduleList?.content?.textColor ?? ''), fontSize: 11),
              decoration: InputDecoration(
                contentPadding: EdgeInsets.only(left: 10, top: 10, bottom: 4),
                border: InputBorder.none,
              ),
              maxLines: 8,
            ),
          )
        ],
      ),
    );
  }

  _buildBottomItem() {
    return Column(
      children: <Widget>[
        SizedBox(
          height: 24,
        ),
        Row(
          children: <Widget>[
            Expanded(
              child: InkWell(
                child: Container(
                  decoration: BoxDecoration(color: HexColor.fromHex(_styleModel?.moduleList?.btn?.bgColor ?? ""), borderRadius: BorderRadius.circular(50)),
                  child: Center(
                      child: Padding(
                    padding: const EdgeInsets.all(12.0),
                    child: Text(
                      _styleModel?.moduleList?.btn?.content ?? "",
                      style: TextStyle(color: HexColor.fromHex(_styleModel?.moduleList?.btn?.textColor), fontSize: 12),
                    ),
                  )),
                ),
                onTap: () {
                  RouterUtil.route(
                          SkipModel.fromJson(_styleModel.moduleList.btn.skipInfo.toJson()), {"keywords": searchText, "type": _styleModel.moduleList.btn.skipInfo.pvd}, context)
                      .then((_) {
                    Navigator.pop(context);
                  });
                },
              ),
            )
          ],
        ),
        SizedBox(
          height: 16,
        ),
        Row(
          mainAxisAlignment: MainAxisAlignment.spaceEvenly,
          children: <Widget>[
            Container(
              height: 1,
              width: 68.5,
              color: HexColor.fromHex(_styleModel?.moduleList?.segment?.textColor ?? ""),
            ),
            Text(
              _styleModel?.moduleList?.segment?.content ?? "",
              style: TextStyle(color: HexColor.fromHex(_styleModel?.moduleList?.segment?.textColor ?? "")),
            ),
            Container(
              height: 1,
              width: 68.5,
              color: HexColor.fromHex(_styleModel?.moduleList?.segment?.textColor ?? ""),
            ),
          ],
        ),
        SizedBox(
          height: 24,
        ),
        Container(
          height: 50,
          child: ListView.builder(scrollDirection: Axis.horizontal, shrinkWrap: true, itemCount: _styleModel?.iconList?.length ?? 0, itemBuilder: _buildBottomListItem),
        )
      ],
    );
  }

  Widget _buildBottomListItem(BuildContext context, int index) {
    var item = _styleModel.iconList[index];

    return Container(
        margin: EdgeInsets.only(left: 11, right: 11),
        child: InkWell(
          child: Column(
            children: <Widget>[
              Container(
                child: Image.network(
                  item.image ?? "",
                  width: 30,
                  height: 30,
                  fit: BoxFit.fill,
                ),
              ),
              SizedBox(
                height: 2,
              ),
              Text(
                item.title ?? "",
                style: TextStyle(fontSize: 11, color: HexColor.fromHex(item.textColor ?? "")),
              )
            ],
          ),
          onTap: () {
            RouterUtil.route(SkipModel.fromJson(item.skipInfo.toJson()), {"keywords": searchText, "type": item.pvd}, context).then((value) {
              Navigator.pop(context);
            });
          },
        ));
  }

  @override
  void dispose() {
    Clipboard.setData(ClipboardData(text: ""));
    super.dispose();
  }
}
