master
王亚玲 3 years ago
parent 58f08ecc1a
commit 3f4524a164

@ -60,6 +60,9 @@ class _App {
/// ///
String get find => '/app/user/content/find'; String get find => '/app/user/content/find';
///
String get findByStatus =>'/app/user/content/findByStatus';
///VIP ///VIP
String get updateVip => '/app/user/updateVip'; String get updateVip => '/app/user/updateVip';

@ -0,0 +1,21 @@
import 'package:json_annotation/json_annotation.dart';
import 'package:equatable/equatable.dart';
part 'contant_list_model.g.dart';
@JsonSerializable()
class ContantListModel extends Equatable{
final int id;
final String content;
final int is_checked;
factory ContantListModel.fromJson(Map<String, dynamic> json) =>_$ContantListModelFromJson(json);
const ContantListModel({
required this.id,
required this.content,
required this.is_checked,
});
@override
List<Object?> get props => [id,content,is_checked];
}

@ -0,0 +1,14 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'contant_list_model.dart';
// **************************************************************************
// JsonSerializableGenerator
// **************************************************************************
ContantListModel _$ContantListModelFromJson(Map<String, dynamic> json) =>
ContantListModel(
id: json['id'] as int,
content: json['content'] as String,
is_checked: json['is_checked'] as int,
);

@ -5,8 +5,9 @@ import 'package:flutter/foundation.dart';
import 'package:platform/platform.dart'; import 'package:platform/platform.dart';
import '../../constants/api.dart'; import '../../constants/api.dart';
import '../../utils/inner_model/base_list_model.dart';
import '../../utils/toast/cloud_toast.dart'; import '../../utils/toast/cloud_toast.dart';
import 'base_list_model.dart'; // import 'base_list_model.dart';
import 'base_model.dart'; import 'base_model.dart';
import 'net_interceptor.dart'; import 'net_interceptor.dart';

@ -75,7 +75,7 @@ class UserProvider extends ChangeNotifier {
notifyListeners(); notifyListeners();
} }
Future updateConSms() async { Future updateConSms(int num ) async {
final prefs = await SharedPreferences.getInstance(); final prefs = await SharedPreferences.getInstance();
final service = FlutterBackgroundService(); final service = FlutterBackgroundService();
var base = await apiClient.request(API.app.find, data: {'status': 1}); var base = await apiClient.request(API.app.find, data: {'status': 1});

@ -2,11 +2,13 @@ import 'package:bot_toast/bot_toast.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_easyrefresh/easy_refresh.dart'; import 'package:flutter_easyrefresh/easy_refresh.dart';
import 'package:project_telephony/ui/home/func/contant_func.dart';
import 'package:project_telephony/utils/headers.dart'; import 'package:project_telephony/utils/headers.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../../base/base_style.dart'; import '../../base/base_style.dart';
import '../../constants/api.dart'; import '../../constants/api.dart';
import '../../model/contant_list_model.dart';
import '../../model/network/api_client.dart'; import '../../model/network/api_client.dart';
import '../../model/network/base_model.dart'; import '../../model/network/base_model.dart';
import '../../providers/user_provider.dart'; import '../../providers/user_provider.dart';
@ -17,11 +19,11 @@ import 'add_sms_page.dart';
class AnswerIdleList extends StatefulWidget { class AnswerIdleList extends StatefulWidget {
final EasyRefreshController refreshController; final EasyRefreshController refreshController;
final bool isIdle; final bool isIdle;
final int num;
// final List contant; // final List contant;
const AnswerIdleList( const AnswerIdleList(
{Key? key, required this.refreshController, required this.isIdle}) {Key? key, required this.refreshController, required this.isIdle,required this.num})
: super(key: key); : super(key: key);
@override @override
@ -31,6 +33,7 @@ class AnswerIdleList extends StatefulWidget {
class _AnswerIdleListState extends State<AnswerIdleList> class _AnswerIdleListState extends State<AnswerIdleList>
with AutomaticKeepAliveClientMixin { with AutomaticKeepAliveClientMixin {
final userProvider = Provider.of<UserProvider>(Get.context!, listen: false); final userProvider = Provider.of<UserProvider>(Get.context!, listen: false);
List<ContantListModel> answerList=[];
List<String> textList = ['现在无法接听。有什么事吗?', '自定义短信内容']; List<String> textList = ['现在无法接听。有什么事吗?', '自定义短信内容'];
List<String> textListSMS = []; List<String> textListSMS = [];
List<int> smsIdList = []; List<int> smsIdList = [];
@ -56,16 +59,18 @@ class _AnswerIdleListState extends State<AnswerIdleList>
// footer: MaterialFooter(), // footer: MaterialFooter(),
onRefresh: () async { onRefresh: () async {
await userProvider.updateUserInfo(); await userProvider.updateUserInfo();
userProvider.updateRefSms(); answerList=await ContantFunc.getFindByStatus(widget.num);
updateList(); print("这是数据$answerList");
// userProvider.updateRefSms();
// updateList();
setState(() {}); setState(() {});
}, },
slivers: [ slivers: [
SliverList( SliverList(
delegate: delegate:
SliverChildBuilderDelegate((context, index) { SliverChildBuilderDelegate((context, index) {
return _getBox(textListSMS[index], index); return _getBox(answerList[index], index);
}, childCount: textListSMS.length)) }, childCount: answerList.length)),
])) ]))
: _getEmptyList() : _getEmptyList()
: Expanded( : Expanded(
@ -78,15 +83,18 @@ class _AnswerIdleListState extends State<AnswerIdleList>
// footer: MaterialFooter(), // footer: MaterialFooter(),
onRefresh: () async { onRefresh: () async {
await userProvider.updateUserInfo(); await userProvider.updateUserInfo();
userProvider.updateRefSms(); answerList=await ContantFunc.getFindByStatus(widget.num);
updateList(); print("这是数据$answerList");
// userProvider.updateRefSms();
// updateList();
setState(() {}); setState(() {});
}, },
slivers: [ slivers: [
SliverList( SliverList(
delegate: SliverChildBuilderDelegate((context, index) { delegate:
return _getBox(textListSMS[index], index); SliverChildBuilderDelegate((context, index) {
}, childCount: textListSMS.length)) return _getBox(answerList[index], index);
}, childCount: answerList.length))
])) ]))
], ],
); );
@ -101,19 +109,20 @@ class _AnswerIdleListState extends State<AnswerIdleList>
updateList() async { updateList() async {
if (userProvider.isLogin) { if (userProvider.isLogin) {
textListSMS.clear(); // textListSMS.clear();
smsIdList.clear(); // smsIdList.clear();
int i = 0; int i = 0;
// contentRef // contentRef
userProvider.userInfo.contentCon?.forEach((model) { userProvider.userInfo.contentCon?.forEach((model) {
textListSMS.add(model.content); // textListSMS.add(model.content);
smsIdList.add(model.id); // smsIdList.add(model.id);
if (model.isChecked == 1) { if (model.isChecked == 1) {
isCheck = i; isCheck = i;
} }
i++; i++;
}); });
textListSMS.add("自定义短信内容"); // "自定义短信内容"
} else { } else {
textListSMS = textList; textListSMS = textList;
} }
@ -151,12 +160,12 @@ class _AnswerIdleListState extends State<AnswerIdleList>
); );
} }
_getBox(String content, int index) { _getBox(ContantListModel item,int index) {
return GestureDetector( return GestureDetector(
onTap: () async { onTap: () async {
if (content != "自定义短信内容") { if (item.content != "自定义短信内容") {
BaseModel res = await apiClient.request(API.app.checked, BaseModel res = await apiClient.request(API.app.checked,
data: {'id': smsIdList[index], 'status': 1}); data: {'id': item.id, 'status': 1});
if (res.code == 0) { if (res.code == 0) {
setState(() {}); setState(() {});
userProvider.updateUserInfo(); userProvider.updateUserInfo();
@ -167,7 +176,7 @@ class _AnswerIdleListState extends State<AnswerIdleList>
} }
} else { } else {
if (userProvider.userInfo.isVip == 1) { if (userProvider.userInfo.isVip == 1) {
if (textListSMS.length > 5) { if (answerList.length > 5) {
BotToast.showText(text: '自定义数量已达上限,请先删除不需要的短信'); BotToast.showText(text: '自定义数量已达上限,请先删除不需要的短信');
} else { } else {
Get.to(AddSmsPage( Get.to(AddSmsPage(
@ -184,9 +193,9 @@ class _AnswerIdleListState extends State<AnswerIdleList>
setState(() {}); setState(() {});
}, },
onLongPress: () { onLongPress: () {
if (content != "自定义短信内容") { if (item.content != "自定义短信内容") {
if (textListSMS.length == 2 || isCheck == index) { if (answerList.length == 2 || isCheck == index) {
if (textListSMS.length == 2) { if (answerList.length == 2) {
BotToast.showText(text: '最后一条内容不可删除'); BotToast.showText(text: '最后一条内容不可删除');
} else if (isCheck == index) { } else if (isCheck == index) {
BotToast.showText(text: '当前为选中内容,不可删除'); BotToast.showText(text: '当前为选中内容,不可删除');
@ -198,7 +207,7 @@ class _AnswerIdleListState extends State<AnswerIdleList>
return Centertipsalterwidget( return Centertipsalterwidget(
desText: '你确定要删除这个短信模版吗,删除之后无法还原。', desText: '你确定要删除这个短信模版吗,删除之后无法还原。',
title: '删除短信模板', title: '删除短信模板',
id: smsIdList[index], id: item.id,
callback: (bool status) { callback: (bool status) {
widget.refreshController.callRefresh(); widget.refreshController.callRefresh();
}, },
@ -228,7 +237,7 @@ class _AnswerIdleListState extends State<AnswerIdleList>
]), ]),
), ),
child: Text( child: Text(
content, item.content,
style: TextStyle( style: TextStyle(
fontSize: BaseStyle.fontSize28, fontSize: BaseStyle.fontSize28,
color: index == isCheck color: index == isCheck

@ -25,7 +25,7 @@ class _ContentConnectPageState extends State<ContentConnectPage>
EasyRefreshController(); EasyRefreshController();
final EasyRefreshController _wasAnswerRefreshController = final EasyRefreshController _wasAnswerRefreshController =
EasyRefreshController(); EasyRefreshController();
int state=1;
@override @override
void initState() { void initState() {
_tabController = TabController(length: 2, initialIndex: 0, vsync: this); _tabController = TabController(length: 2, initialIndex: 0, vsync: this);
@ -71,8 +71,10 @@ class _ContentConnectPageState extends State<ContentConnectPage>
labelStyle:const TextStyle(fontWeight:FontWeight.bold), labelStyle:const TextStyle(fontWeight:FontWeight.bold),
onTap: (num) { onTap: (num) {
if(num==0){ if(num==0){
state=1;
_answerRefreshController.callRefresh(); _answerRefreshController.callRefresh();
}else{ }else{
state=3;
_wasAnswerRefreshController.callRefresh(); _wasAnswerRefreshController.callRefresh();
} }
}, },
@ -99,10 +101,12 @@ class _ContentConnectPageState extends State<ContentConnectPage>
// _getBox(), // _getBox(),
AnswerIdleList( AnswerIdleList(
// contant: const [], // contant: const [],
num: state,
refreshController: _answerRefreshController, isIdle: false, refreshController: _answerRefreshController, isIdle: false,
), ),
AnswerIdleList( AnswerIdleList(
// contant: const [], // contant: const [],
num: state,
refreshController: _wasAnswerRefreshController, isIdle: true, refreshController: _wasAnswerRefreshController, isIdle: true,
) )
])) ]))

@ -0,0 +1,20 @@
import 'package:project_telephony/constants/api.dart';
import 'package:project_telephony/model/contant_list_model.dart';
import 'package:project_telephony/model/network/api_client.dart';
import 'package:project_telephony/utils/inner_model/base_list_model.dart';
import '../../../utils/toast/cloud_toast.dart';
class ContantFunc {
static Future<List<ContantListModel>> getFindByStatus(int status) async {
BaseListModel res =
await apiClient.requestList(API.app.findByStatus, data:{'status': status});
if(res.code!=0) {
CloudToast.show(res.msg);
return [];
}else{
return res.nullSafetyList.map((e) => ContantListModel.fromJson(e)).toList();
}
}
}

@ -103,7 +103,7 @@ _getBotton(String bContent, context) {
// }); // });
CloudToast.show(res.msg); CloudToast.show(res.msg);
// BoxShadow.show(res.msg); // BoxShadow.show(res.msg);
}else{ } else{
CloudToast.show(res.msg); CloudToast.show(res.msg);
Navigator.pop(context); Navigator.pop(context);
} }

@ -0,0 +1,32 @@
import 'package:json_annotation/json_annotation.dart';
part 'base_list_model.g.dart';
@JsonSerializable()
class BaseListModel<T> {
final int code;
final String msg;
final List data;
BaseListModel({
required this.code,
required this.msg,
required this.data,
});
factory BaseListModel.fromJson(Map<String, dynamic> json) =>
_$BaseListModelFromJson(json);
List get nullSafetyList {
if (data.isEmpty) {
return [];
} else if (data.isEmpty) {
return [];
} else {
return data;
}
}
}

@ -0,0 +1,14 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'base_list_model.dart';
// **************************************************************************
// JsonSerializableGenerator
// **************************************************************************
BaseListModel<T> _$BaseListModelFromJson<T>(Map<String, dynamic> json) =>
BaseListModel<T>(
code: json['code'] as int,
msg: json['msg'] as String,
data: json['data'] as List<dynamic>,
);

@ -0,0 +1,36 @@
import 'package:dio/dio.dart';
import 'package:json_annotation/json_annotation.dart';
part 'base_model.g.dart';
@JsonSerializable()
class BaseModel<T> {
int code;
String msg;
dynamic data;
BaseModel({
required this.code,
required this.msg,
this.data,
});
List<T> map(T Function(dynamic json) f) {
if (data == null) return [];
return (data! as List<T>).map(f).toList();
}
factory BaseModel.unknown() => BaseModel(
code: -1,
msg: 'UNKNOW FAIL',
);
factory BaseModel.dioErr(DioError err) => BaseModel(
code: err.response?.statusCode ?? -1,
msg: err.message,
);
factory BaseModel.fromJson(Map<String, dynamic> json) =>
_$BaseModelFromJson(json) as BaseModel<T>;
}

@ -0,0 +1,13 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'base_model.dart';
// **************************************************************************
// JsonSerializableGenerator
// **************************************************************************
BaseModel<T> _$BaseModelFromJson<T>(Map<String, dynamic> json) => BaseModel<T>(
code: json['code'] as int,
msg: json['msg'] as String,
data: json['data'],
);
Loading…
Cancel
Save