import 'dart:io';

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';

import 'package:bot_toast/bot_toast.dart';
import 'package:flutter_rating_bar/flutter_rating_bar.dart';
import 'package:get/get.dart';
import 'package:power_logger/power_logger.dart';

import 'package:aku_new_community/base/base_style.dart';
import 'package:aku_new_community/ui/manager/house_keeping/house_keeping_func.dart';
import 'package:aku_new_community/utils/headers.dart';
import 'package:aku_new_community/widget/bee_scaffold.dart';
import 'package:aku_new_community/widget/buttons/bottom_button.dart';
import 'package:aku_new_community/widget/picker/grid_image_picker.dart';

class EvaluatePage extends StatefulWidget {
  final int id;

  EvaluatePage({Key? key, required this.id}) : super(key: key);

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

class _EvaluatePageState extends State<EvaluatePage> {
  late TextEditingController _textEditingController;
  int _rating = 10;
  List<File> _files = [];

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

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

  @override
  Widget build(BuildContext context) {
    return BeeScaffold(
      bodyColor: Colors.white,
      title: '评价',
      body: ListView(
        padding: EdgeInsets.symmetric(horizontal: 42.w, vertical: 52.w),
        children: [
          '请您对本次服务进行评价'.text.color(ktextSubColor).size(28.sp).make(),
          50.w.heightBox,
          Row(
            crossAxisAlignment: CrossAxisAlignment.start,
            children: [
              '综合评价'.text.color(ktextSubColor).size(28.sp).make(),
              35.w.widthBox,
              RatingBar(
                  ratingWidget: RatingWidget(
                    full: Icon(
                      CupertinoIcons.star_fill,
                      color: kDarkPrimaryColor,
                    ),
                    half: Icon(
                      CupertinoIcons.star_lefthalf_fill,
                      color: kDarkPrimaryColor,
                    ),
                    empty: Icon(
                      CupertinoIcons.star,
                      color: kDarkSubColor,
                    ),
                  ),
                  itemSize: 35.w,
                  itemCount: 5,
                  initialRating: 0,
                  allowHalfRating: true,
                  itemPadding: EdgeInsets.symmetric(horizontal: 15.w),
                  onRatingUpdate: (rating) {
                    _rating = (rating * 2).toInt();
                  })
            ],
          ),
          60.w.heightBox,
          '请输入内容'.text.black.size(28.sp).make(),
          24.w.heightBox,
          Container(
            padding: EdgeInsets.symmetric(horizontal: 22.w, vertical: 32.w),
            decoration: BoxDecoration(
              border: Border.all(color: Color(0xFFD4CFBE), width: 1.w),
              borderRadius: BorderRadius.circular(8.w),
            ),
            child: TextField(
              onChanged: (value) {
                setState(() {});
              },
              controller: _textEditingController,
              decoration: InputDecoration(
                contentPadding: EdgeInsets.zero,
                isDense: true,
                border: InputBorder.none,
                hintText: '您对本次服务满意吗?',
                hintStyle: TextStyle(
                  color: ktextSubColor,
                ),
              ),
              maxLines: 10,
              minLines: 6,
            ),
          ),
          10.w.heightBox,
          GridImagePicker(onChange: (file) {
            _files.addAll(file);
          }),
        ],
      ),
      bottomNavi: BottomButton(
          onPressed: () async {
            Function cancel = BotToast.showLoading();
            List<String> _urls = [];
            try {
              _urls = await HouseKeepingFunc.uploadHouseKeepingEvaluationPhotos(
                  _files);
              bool result = await HouseKeepingFunc.houseKeepingEvaluation(
                  widget.id, _rating, _textEditingController.text, _urls);
              if (result) {
                //需两次退栈操作
                Get.back();
                Get.back();
              }
            } catch (e) {
              LoggerData.addData(e);
            }
            cancel();
          },
          child: '提交'.text.size(32.sp).black.bold.make()),
    );
  }
}