import 'package:dio/dio.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:huixiang/retrofit/data/base_data.dart';
import 'package:huixiang/retrofit/data/follow_list.dart';
import 'package:huixiang/retrofit/data/page.dart';
import 'package:huixiang/retrofit/retrofit_api.dart';
import 'package:huixiang/utils/font_weight.dart';
import 'package:huixiang/view_widget/classic_header.dart';
import 'package:huixiang/view_widget/custom_image.dart';
import 'package:huixiang/view_widget/my_footer.dart';
import 'package:huixiang/view_widget/no_data_view.dart';
import 'package:huixiang/view_widget/round_button.dart';
import 'package:pull_to_refresh/pull_to_refresh.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';

class FansPage extends StatefulWidget {
  final Function refresh;

  FansPage(
      this.refresh
  );

  @override
  State<StatefulWidget> createState() {
    return _FansPage();
  }
}

class _FansPage extends State<FansPage>
    with SingleTickerProviderStateMixin, AutomaticKeepAliveClientMixin {
  RefreshController _refreshController;
  int pageNum = 1;
  List<ListData> list = [];
  ApiService apiService;

  @override
  void initState() {
    super.initState();
    _refreshController = RefreshController();

    SharedPreferences.getInstance().then((value) {
      apiService =
          ApiService(Dio(), context: context, token: value.getString("token"));
      _queryFollowList();
    });
  }

  ///我的关注列表
  _queryFollowList() async {
    SharedPreferences sharedPreferences = await SharedPreferences.getInstance();
    if (apiService == null)
      apiService = ApiService(
        Dio(),
        context: context,
        token: sharedPreferences.getString("token"),
        showLoading: false,
      );
    BaseData<PageInfo<ListData>> baseData = await apiService.followList({
      "isMyFans": true,
      "pageNum": 1,
      "pageSize": 100,
    }).catchError((error) {
      _refreshController.refreshFailed();
      _refreshController.loadFailed();
    });

    _refreshController.refreshCompleted();
    _refreshController.loadComplete();
    if (baseData != null && baseData.isSuccess) {
      if (pageNum == 1) {
        list.clear();
      }
      list.addAll(baseData.data.list);
      print("list: ${list.length}");
      if (int.tryParse(baseData.data.total) < (pageNum * 10)) {
        _refreshController.loadNoData();
      }
      setState(() {});
    }
  }

  //关注/取关会员
  _vipFollow(followId,isFollow) async {
    BaseData baseData = await apiService.follow(followId).catchError((onError) {});
    if (baseData != null && baseData.isSuccess) {
      widget.refresh();
      _queryFollowList();
      SmartDialog.showToast(isFollow?"取关成功":"关注成功", alignment: Alignment.center);
    } else {
      SmartDialog.showToast(baseData.msg, alignment: Alignment.center);
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Container(
        margin: EdgeInsets.only(top: 2),
        color: Colors.white,
        child: SmartRefresher(
            enablePullDown: true,
            enablePullUp: false,
            header: MyHeader(),
            footer: CustomFooter(
              builder: (context, mode) {
                return MyFooter(mode);
              },
            ),
            controller: _refreshController,
            onRefresh: (){_queryFollowList();},
            physics: BouncingScrollPhysics(),
            child: (list == null || list.length == 0)? NoDataView(
              src: "assets/image/fen_si.webp",
              isShowBtn: false,
              text: "目前暂无粉丝,听说多发动态可以涨粉哦~",
              fontSize: 16.sp,
              margin: EdgeInsets.only(top: 120.h,left: 60.w,right: 60.w),
            ):ListView.builder(
              itemCount: list == null ? 0 : list.length,
              padding: EdgeInsets.symmetric(vertical: 8.h),
              shrinkWrap: true,
              physics: NeverScrollableScrollPhysics(),
              scrollDirection: Axis.vertical,
              itemBuilder: (context, position) {
                return GestureDetector(
                  onTap: () {},
                  child: fansItem(list[position]),
                );
              },
            )
            //     NoDataView(
            //   isShowBtn: false,
            //   text: "共关注0人",
            //   fontSize: 16.sp,
            //   margin: EdgeInsets.only(top: 120.h),
            // ),
            ),
      ),
    );
  }

  Widget fansItem(ListData list) {
    return Container(
      margin: EdgeInsets.symmetric(horizontal: 16.w, vertical: 16.h),
      child: Row(
        mainAxisAlignment: MainAxisAlignment.spaceAround,
        crossAxisAlignment: CrossAxisAlignment.center,
        children: [
          MImage(
            list != null ? (list.avatar ?? "") : "",
            width: 44,
            height: 44,
            isCircle: true,
            fit: BoxFit.cover,
            errorSrc: "assets/image/default_1.webp",
            fadeSrc: "assets/image/default_1.webp",
          ),
          SizedBox(
            width: 8,
          ),
          Expanded(
            flex: 1,
              child: Text(
            list != null ? (list.nickname ?? "") : "",
            style: TextStyle(
              color: Color(0xFF1A1A1A),
              fontSize: 14.sp,
              fontWeight: MyFontWeight.medium,
            ),
          )),
          Container(
            width: 56.w,
            height: 25.h,
            alignment: Alignment.center,
            // decoration: BoxDecoration(
            //   borderRadius: BorderRadius.circular(11.w),
            // ),
            child: GestureDetector(
              onTap: () {
                setState(() {
                    _vipFollow(list.mid,list?.isFollow ?? false);
                });
              },
              child: RoundButton(
                backgroup: (list?.isFollow ?? false)
                    ? Color(0xFFE6E6E6)
                    : Color(0xFF32A060),
                textColor: (list?.isFollow ?? false)
                    ? Color(0xFF808080)
                    : Colors.white,
                text: (list?.isFollow ?? false) ? "已关注" : "关注",
                radius: 20,
                icons: Icon(
                  (list?.isFollow ?? false)
                      ? Icons.check
                      : Icons.add,
                  color: (list?.isFollow ?? false)
                      ? Color(0xFF808080)
                      : Colors.white,
                  size: 14,
                ),
              ),
            ),
          ),
        ],
      ),
    );
  }

  @override
  bool get wantKeepAlive => true;
}