import 'dart:typed_data';

import 'package:flutter/material.dart';
import 'package:zhiying_base_widget/models/app_config_model.dart';
import 'package:flutter_swiper/flutter_swiper.dart';
import 'package:zhiying_base_widget/widgets/home/home_quick_entry/cached_network_image_util.dart';
import 'package:zhiying_comm/zhiying_comm.dart';

class GuidePage extends StatefulWidget {
  final GuideData model;
  final List<Uint8List> imageDatas;
  final List<Uint8List> bgImageDatas;

  const GuidePage(this.model, this.imageDatas, this.bgImageDatas, {Key key}) : super(key: key);

  @override
  State<StatefulWidget> createState() => _GuidePageState();
}

class _GuidePageState extends State<GuidePage> {
  @override
  Widget build(BuildContext context) {
    bool isShowIndicator = (widget.model?.indicatorType ?? '0') == '1';
    List<int> list = List.generate(widget.imageDatas?.length, (index) => index);
    return WillPopScope(
      onWillPop: () async => false, // 拦截Android返回键
      child: Material(
        child: Swiper(
          itemBuilder: (BuildContext context, int index) {
            // return CachedNetworkImage(imageUrl: widget.model.images[index],fit: BoxFit.cover,);
            Uint8List bgImage;
            if (widget.bgImageDatas.length > index) {
              bgImage = widget?.bgImageDatas[index];
            }

            return Stack(
              alignment: Alignment.center,
              children: <Widget>[
                Container(
                    width: double.infinity,
                    height: double.infinity,
                    decoration: BoxDecoration(
                        image: DecorationImage(
                            image: Image.memory(
                              bgImage,
                            ).image,
                            fit: BoxFit.fill)),
                    child: Center(
                        child: Image.memory(
                      widget.imageDatas[index],
                      fit: BoxFit.fitWidth,
                    ))),
                index == widget?.bgImageDatas?.length - 1
                    ? Positioned(
                        left: 0,
                        right: 0,
                        bottom: 110,
                        child: Center(
                          child: Row(
                            mainAxisAlignment: MainAxisAlignment.center,
                            children: <Widget>[
                              Container(
                                alignment: Alignment.center,
                                height: 46,
                                width: 180,
                                decoration: BoxDecoration(
                                    color: HexColor.fromHex(widget?.model?.btnBgColor ?? ""),
                                    borderRadius: BorderRadius.circular(45),
                                    boxShadow: [BoxShadow(color: HexColor.fromHex(widget?.model?.btnBgColor), offset: Offset(1, 2), blurRadius: 6)]),
                                child: Text(
                                  widget?.model?.btnText ?? "",
                                  style: TextStyle(color: HexColor.fromHex(widget?.model?.btnTextColor ?? ""), fontSize: 16, height: 1.1),
                                ),
                              ),
                            ],
                          ),
                        ),
                      )
                    : Container()
              ],
            );
          },
          loop: false,
          itemCount: widget.imageDatas?.length ?? 0,
          pagination: widget?.model?.indicatorType != "1"
              ? null
              : widget?.model?.indicatorCssType == "2"
                  ? SwiperCustomPagination(builder: (BuildContext context, SwiperPluginConfig config) {
                      return Align(
                        alignment: Alignment(0.0, 1),
                        child: Row(
                          mainAxisAlignment: MainAxisAlignment.center,
                          crossAxisAlignment: CrossAxisAlignment.center,
                          children: list.map((index) {
                            return SafeArea(
                              child: Container(
                                margin: EdgeInsets.only(bottom: 40, left: 5, right: 5),
                                height: 4,
                                width: 20,
                                decoration: BoxDecoration(
                                    borderRadius: BorderRadius.circular(10),
                                    color: index == config.activeIndex
                                        ? HexColor.fromHex(widget?.model?.indicatorChooseColor)
                                        : HexColor.fromHex(widget?.model?.indicatorUnchooseColor)),
                              ),
                            );
                          }).toList(),
                        ),
                      );
                    })
                  : SwiperCustomPagination(builder: (BuildContext context, SwiperPluginConfig config) {
                      return Align(
                        alignment: Alignment(0.0, 1),
                        child: Row(
                          mainAxisAlignment: MainAxisAlignment.center,
                          crossAxisAlignment: CrossAxisAlignment.center,
                          children: list.map((index) {
                            return SafeArea(
                              child: Container(
                                margin: EdgeInsets.only(bottom: 40, left: 5, right: 5),
                                height: 10,
                                width: 10,
                                decoration: BoxDecoration(
                                    borderRadius: BorderRadius.circular(10),
                                    color: index == config.activeIndex
                                        ? HexColor.fromHex(widget?.model?.indicatorChooseColor)
                                        : HexColor.fromHex(widget?.model?.indicatorUnchooseColor)),
                              ),
                            );
                          }).toList(),
                        ),
                      );
                    }),
          onIndexChanged: (index) {},
          onTap: (index) {
            if (index == widget.model.guideCss.length - 1) {
              Navigator.pop(context, true);
            }
          },
        ),
      ),
    );
  }
}