import 'dart:convert';

import 'package:dio/dio.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:huixiang/community/community_view/community_dynamic.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:huixiang/retrofit/data/article.dart';
import 'package:huixiang/retrofit/data/base_data.dart';
import 'package:huixiang/retrofit/data/comunity_comment.dart';
import 'package:huixiang/retrofit/data/page.dart';
import 'package:huixiang/retrofit/retrofit_api.dart';
import 'package:huixiang/view_widget/classic_header.dart';
import 'package:huixiang/view_widget/my_appbar.dart';
import 'package:huixiang/view_widget/my_footer.dart';
import 'package:pull_to_refresh/pull_to_refresh.dart';
import 'package:shared_preferences/shared_preferences.dart';

class ReleasePage extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    return _ReleasePage();
  }
}

class _ReleasePage extends State<ReleasePage> {
  RefreshController refreshController = RefreshController();
  ApiService apiService;
  int pageNum = 0;
  String userId;

  List<Article> articles = [];

  @override
  void initState() {
    super.initState();

    _onRefresh();
  }

  _onRefresh() async {
    pageNum = 0;
    setState(() {});
  }

  queryCommunity() async {
    if (apiService == null) {
      SharedPreferences value = await SharedPreferences.getInstance();
      userId = value.getString('userId');
      apiService = ApiService(
        Dio(),
        context: context,
        token: value.getString("token"),
      );
    }
    pageNum += 1;
    BaseData<PageInfo<ComunityComment>> baseData = await apiService.trendList({
      "onlyFollow": false,
      "onlyMe": true,
      "pageNum": pageNum,
      "pageSize": 10,
      "searchKey": ""
    }).catchError((error) {
      refreshController.refreshFailed();
      refreshController.loadFailed();
    });

    refreshController.refreshCompleted();
    refreshController.loadComplete();
    if (baseData.isSuccess) {
      if (pageNum == 1) {
        articles.clear();
      }
      baseData.data.list.forEach((element) {
        var article = Article();
        article.id = element.id;
        article.content = jsonEncode(element.subjectInfo);
        article.mainTitle =element.subject;
        article.isFollow = element.selfFollow;
        article.authorHeadImg = element.memberInfo?.avatar;
        article.authorName = element.memberInfo?.nickname;
        article.createTime = element.createTime;
        article.updateUser = element.memberInfo?.mid;
        article.viewers = element?.viewers;
        article.likes = element?.likes;
        article.comments = element?.comments;
        articles.add(article);
      });
      // print("comments: ${comments.length}");
      if (int.tryParse(baseData.data.total) < (pageNum * 10)) {
        refreshController.loadNoData();
      }
    }
  }

  @override
  Widget build(BuildContext context) {
    return FutureBuilder(
      future: queryCommunity(),
      builder: (context, position) {
        return Scaffold(
          appBar: MyAppBar(
            background: Color(0xFFFFFFFF),
            leadingColor: Colors.black,
            title: "动态",
            titleColor: Colors.black,
            titleSize: 18.sp,
          ),
          body: SmartRefresher(
              controller: refreshController,
              enablePullDown: true,
              enablePullUp: true,
              physics: BouncingScrollPhysics(),
              header: MyHeader(),
              footer: CustomFooter(
                builder: (context, mode) {
                  return MyFooter(mode);
                },
              ),
              onRefresh: _onRefresh,
              onLoading: () {
                setState(() {});
              },
              child: ListView.builder(
                physics: NeverScrollableScrollPhysics(),
                itemBuilder: (context, position) {
                  return InkWell(
                    child: CommunityDynamic(
                      articles[position],
                      1,
                      exitFull: (){setState(() {
                        _onRefresh();
                      });},
                      removalDynamic: () {
                        setState(() {
                          _onRefresh();
                        });
                      },
                    ),
                    onTap: () {
                      Navigator.of(context).pushNamed(
                        '/router/community_details',
                        arguments: {
                          "businessId": articles[position].id,"userId":userId,
                        },
                      ).then((value) {
                        _onRefresh();
                      });
                    },
                  );
                },
                itemCount: articles.length,
              )),
        );
      },
    );
  }
}