import 'package:farmer_client/widgets/DefaultButton.dart';
import 'package:farmer_client/widgets/layout/BasicPage.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:fluttertoast/fluttertoast.dart';
import 'package:get/get.dart';

import '../../models/app.dart';
import '../../models/entities/person.dart';
import '../../services/user.dart';

class UserInfo extends BasicPage {
  late String name ;
  late String phone;
  late TextEditingController _cName;
  late TextEditingController _cPhone;
  AppController userInfo = AppController.t;


  @override
  void beforeShow() {
    super.beforeShow();
    _cName = TextEditingController(text: userInfo.user().nickName.toString());
    _cPhone = TextEditingController(text:userInfo.user().phone.toString());
    name=userInfo.user().nickName.toString();
    phone=userInfo.user().phone.toString();
  }

  bool disableLogin = false;
  RegExp exp = RegExp(r'^1[3456789]\d{9}$');

  Map<String, dynamic> data = {

  };


  void handleOk() {
    if (name == '' && phone == '') {
      Fluttertoast.showToast(msg: '请输入正确的信息');
      return;

    } else if (phone==''&&!exp.hasMatch(phone)) {
      Fluttertoast.showToast(msg: '请输入正确的手机号');
      return;
    } else {
      data={
        ...userInfo.user().toJson(),
        'avatar':userInfo.user().avatar ?? '',
        'nickName': name,
        'phone': phone
      };
      updateInfo(userInfo.user().personId.toString(),data).then((value) {
        // 尝试获取一次人员信息
        getCurrent().then((person) {
          userInfo.user(Person.fromJson(person));
          Fluttertoast.showToast(msg: '保存成功');

          Get.back();

        }).catchError((e) {
          print(e);
        });

      });
    }
  }


  @override
  Widget builder(BuildContext context) {
    naviTitle = '个人信息';
    return Container(
      height: 700.h,
      color: const Color(0xFFffffff),
      padding: EdgeInsets.all(15.w),
      child: Column(
        crossAxisAlignment: CrossAxisAlignment.start,
        children: [
          Container(
            width: 345.w,
            margin: EdgeInsets.fromLTRB(0, 0, 0, 40.h),
            padding: EdgeInsets.symmetric(vertical: 15.h, horizontal: 0),
            decoration: BoxDecoration(
              color: const Color(0xFFFFFFFF),
              boxShadow: [
                BoxShadow(
                  color: const Color(0x1F000000),
                  offset: Offset(0, 1.w),
                  blurRadius: 0,
                ),
              ],
            ),
            child: Row(
                mainAxisAlignment: MainAxisAlignment.spaceBetween,
                children: [
                  Container(
                    width: 63.w,
                    height: 63.w,
                    decoration: BoxDecoration(
                      shape: BoxShape.circle,
                      image: userInfo.user().avatar!=null?
                      DecorationImage(
                        image: NetworkImage(userInfo.user().avatar.toString()),
                        fit: BoxFit.cover,
                      ): DecorationImage(
                          image: AssetImage('images/userMoren.png')
                      ),
                    ),
                  ),

                ]),
          ),
          Text(
            '姓名:',
            style: TextStyle(
                color: const Color(0xFF333333),
                fontSize: 17.sp,
                letterSpacing: 2,
                fontWeight: FontWeight.bold),
          ),
          Container(
            width: 345.w,
              margin: EdgeInsets.fromLTRB(0, 10.h, 0, 40.h),
              padding: EdgeInsets.symmetric(vertical: 19.h, horizontal: 0),
              decoration: BoxDecoration(
                color: const Color(0xFFFFFFFF),
                boxShadow: [
                  BoxShadow(
                    color: const Color(0x1F000000),
                    offset: Offset(0, 1.w),
                    blurRadius: 0,
                  ),
                ],
              ),
              child: Column(
                children: [
                  Row(
                      mainAxisAlignment: MainAxisAlignment.spaceBetween,
                      children: [
                        Container(
                          width: 327.w,
                          child: TextField(
                            controller: _cName,
                            style: TextStyle(
                                color: const Color(0xFF333333),
                                fontSize: 17.sp,
                                letterSpacing: 2,
                                fontWeight: FontWeight.bold),
                            decoration: const InputDecoration(
                              isCollapsed: true,
                              hintText: '请输入您的姓名',
                              border: InputBorder.none,
                              counterText: '', //去掉计数
                              floatingLabelBehavior:
                              FloatingLabelBehavior.never,
                            ),
                            onChanged: (e) {

                                name = e;
                                print(name);
                            },
                          ),
                        ),
                        GestureDetector(
                          onTap: () {
                              name = '';
                            _cName.clear();
                          },
                          child: Image.asset(
                            'images/icons/cancel.png',
                            width: 18.w,
                            height: 18.w,
                          ),
                        ),
                      ]),
                ],
              )),
          Text(
            '手机号:',
            style: TextStyle(
                color: const Color(0xFF333333),
                fontSize: 17.sp,
                letterSpacing: 2,
                fontWeight: FontWeight.bold),
          ),
          Container(
            width: 345.w,
              margin: EdgeInsets.fromLTRB(0, 10.h, 0, 40.h),
              padding: EdgeInsets.symmetric(vertical: 19.h, horizontal: 0),
              decoration: BoxDecoration(
                color: const Color(0xFFFFFFFF),
                boxShadow: [
                  BoxShadow(
                    color: const Color(0x1F000000),
                    offset: Offset(0, 1.w),
                    blurRadius: 0,
                  ),
                ],
              ),
              child: Column(
                children: [
                  Row(
                      mainAxisAlignment: MainAxisAlignment.spaceBetween,
                      children: [
                        SizedBox(
                          width: 327.w,
                          child: TextField(
                            keyboardType: TextInputType.number,
                            controller: _cPhone,
                            maxLength: 11,
                            style: TextStyle(
                                color: const Color(0xFF333333),
                                fontSize: 17.sp,
                                letterSpacing: 2,
                                fontWeight: FontWeight.bold),
                            decoration: const InputDecoration(
                              isCollapsed: true,
                              hintText: '请输入您的手机号',
                              border: InputBorder.none,
                              counterText: '', //去掉计数
                              floatingLabelBehavior:
                              FloatingLabelBehavior.never,
                            ),
                            onChanged: (e) {
                                phone = e;
                            },
                          ),
                        ),
                        GestureDetector(
                          onTap: () {
                              phone = '';
                            _cPhone.clear();
                          },
                          child: Image.asset(
                            'images/icons/cancel.png',
                            width: 18.w,
                            height: 18.w,
                          ),
                        ),
                      ]),
                ],
              )),
          const Spacer(),
          DefaultButton(
            color: const Color(0xffffffff),
            backColor: const Color(0xFFFF703B),
            width: 345.w,
            height: 49.h,
            text: '保存',
            onPressed: handleOk,
            margin: const EdgeInsets.all(0),
            fontSize: 20.sp,
            radius: 24.5.w,
          ),
        ],
      ),
    );
  }
}