import 'package:bot_toast/bot_toast.dart'; import 'package:flutter/material.dart'; import 'package:flutter_easyrefresh/easy_refresh.dart'; import 'package:project_telephony/utils/headers.dart'; import 'package:provider/provider.dart'; import '../../base/base_style.dart'; import '../../constants/api.dart'; import '../../model/contant_list_model.dart'; import '../../model/network/api_client.dart'; import '../../model/network/base_model.dart'; import '../../model/sms_content_model.dart'; import '../../providers/user_provider.dart'; import '../../utils/toast/cloud_toast.dart'; import '../widget/centertipsalterwidget.dart'; import 'add_sms_page.dart'; class AnswerIdleList extends StatefulWidget { final EasyRefreshController refreshController; final bool isIdle; final int num; const AnswerIdleList( {Key? key, required this.refreshController, required this.isIdle,required this.num}) : super(key: key); @override _AnswerIdleListState createState() => _AnswerIdleListState(); } class _AnswerIdleListState extends State with AutomaticKeepAliveClientMixin { final userProvider = Provider.of(Get.context!, listen: false); List textList = ['现在无法接听。有什么事吗?', '自定义短信内容']; List _model = []; List answerList=[]; List textListSMS = []; List smsIdList = []; int isCheck = 0; bool val = false; // final EasyRefreshController _easyRefreshController = EasyRefreshController(); @override Widget build(BuildContext context) { return Column( children: [ _getText(), 32.hb, widget.isIdle ? val ? Expanded( // width: 662.w, // height: 800.w, child: EasyRefresh.custom( firstRefresh: true, controller: widget.refreshController, header: MaterialHeader(), // footer: MaterialFooter(), onRefresh: () async { await userProvider.updateUserInfo(); print("这是数据$answerList"); // userProvider.updateRefSms(); // updateList(); setState(() {}); }, slivers: [ SliverList( delegate: SliverChildBuilderDelegate((context, index) { return _getBox(answerList[index], index); }, childCount: answerList.length)), ])) : _getEmptyList() : Expanded( // width: 662.w, // height: 800.w, child: EasyRefresh.custom( firstRefresh: true, controller: widget.refreshController, header: MaterialHeader(), // footer: MaterialFooter(), onRefresh: () async { await userProvider.updateUserInfo(); print("这是数据$answerList"); // userProvider.updateRefSms(); // updateList(); setState(() {}); }, slivers: [ SliverList( delegate: SliverChildBuilderDelegate((context, index) { return _getBox(answerList[index], index); }, childCount: answerList.length)) ])) ], ); } updateList() async { if (userProvider.isLogin) { // textListSMS.clear(); // smsIdList.clear(); int i = 0; // contentRef var base = await apiClient.request(API.content.findByStatus, data: {'status': 1}); if (base.code == 0) { _model=(base.data as List) .map((e) => SmsContentModel.fromJson(e)) .toList(); } else { CloudToast.show(base.msg); } for (var model in _model) { textListSMS.add(model.content); smsIdList.add(model.id); if (model.isChecked == 1) { isCheck = i; } i++; } textListSMS.add("自定义短信内容"); } else { textListSMS = textList; } } _getText() { return Container( height: 128.w, // margin: EdgeInsets.only(top: 32.w, left: 64.w, right: 64.w), padding: EdgeInsets.only(left: 40.w, top: 45.w), child: ListTile( title: Text( "功能讲解", style: TextStyle(fontWeight: FontWeight.bold, fontSize: 36.sp), ), subtitle: Text( widget.isIdle ? "您给朋友去电接听后所发送的短信":"朋友给你来电接听后所发送的短信", style: TextStyle(color: const Color(0xFF999999), fontSize: 28.sp), ), trailing: widget.isIdle ? Switch( value: val, onChanged: (value) async { // if(!value){ // // } // await prefs.setBool("kg", value); // print("这是数据${prefs.getBool("kg")}"); setState(() { val = value; }); }) : const SizedBox()), ); } _getBox(ContantListModel item,int index) { return GestureDetector( onTap: () async { if (item.content != "自定义短信内容") { BaseModel res = await apiClient.request(API.content.checked, data: {'id': item.id, 'status': 1}); if (res.code == 0) { setState(() {}); userProvider.updateUserInfo(); userProvider.updateConSms(); widget.refreshController.callRefresh(); } else { CloudToast.show(res.msg); } } else { if (userProvider.userInfo.isVip == 1) { if (answerList.length > 5) { BotToast.showText(text: '自定义数量已达上限,请先删除不需要的短信'); } else { Get.to(AddSmsPage( status: 1, ploneBack: (String textContent) { widget.refreshController.callRefresh(); }, )); } } else { BotToast.showText(text: '请先开通会员'); } } setState(() {}); }, onLongPress: () { if (item.content != "自定义短信内容") { if (answerList.length == 2 || isCheck == index) { if (answerList.length == 2) { BotToast.showText(text: '最后一条内容不可删除'); } else if (isCheck == index) { BotToast.showText(text: '当前为选中内容,不可删除'); } } else { showDialog( context: context, builder: (context) { return Centertipsalterwidget( desText: '你确定要删除这个短信模版吗,删除之后无法还原。', title: '删除短信模板', id: item.id, callback: (bool status) { widget.refreshController.callRefresh(); }, ); }); } } setState(() {}); }, child: Container( // width: 686.w, height: 128.w, margin: EdgeInsets.only(top: 32.w, left: 64.w, right: 64.w), padding: EdgeInsets.only(left: 40.w, top: 45.w), decoration: BoxDecoration( borderRadius: BorderRadius.circular(16), gradient: LinearGradient( begin: Alignment.centerLeft, end: Alignment.centerRight, colors: [ index == isCheck ? const Color(0xFF1890FF) : const Color(0xFFF9F9F9), index == isCheck ? const Color(0xFF74BCFF) : const Color(0xFFF9F9F9), ]), ), child: Text( item.content, style: TextStyle( fontSize: BaseStyle.fontSize28, color: index == isCheck ? const Color(0xFFF9F9F9) : BaseStyle.color333333, fontWeight: FontWeight.bold), ), ), ); } _getEmptyList() { return Column( crossAxisAlignment: CrossAxisAlignment.center, children: [ 234.hb, Image.asset( Assets.images.emptylist.path, width: 240.w, height: 212.w, fit: BoxFit.fill, ), 48.hb, Text( "功能已关闭", style: TextStyle( color: const Color(0xFF999999), fontWeight: FontWeight.bold, fontSize: 36.sp), ), 16.hb, Text( "去电接听后将不会发送短信", style: TextStyle(color: const Color(0xFF999999), fontSize: 28.sp), ), ], ); } @override bool get wantKeepAlive => true; }