import 'package:get/get.dart'; import 'package:easy_refresh/easy_refresh.dart'; import '../../../services/api_service/kr_api.user.dart'; import '../../../utils/kr_common_util.dart'; class KRMessage { final String title; final List content; // content 是一个字符串列表 KRMessage({required this.title, required this.content}); } class HIHelpController extends GetxController { final KRUserApi kr_userApi = KRUserApi(); // 通知列表数据 final RxList kr_messages = [ KRMessage( title: '客户端下载问题', content: [ 'iOS设备下载客户端,需要使用除中国大陆以外的Apple ID,[link]点击这里[/link]获取海外Apple ID注册教程。', 'Mac OS设备下载客户端,可以直接前往Hi快VPN官网下载dmg格式文件安装。', 'Android设备下载客户端,可以直接前往Hi快VPN官网下载apk格式文件安装。', 'PC设备下载客户端,可以直接前往Hi快VPN官网下载exe格式文件安装。', ], ), KRMessage( title: '套餐支付问题', content: [ '支付页面无法打开:尝试更换网络,或检查并断开连接其它VPN软件。', '支付页面无法正确显示:请退出客户端重新进入,如仍无法正确显示,请截图并联系在线客服。', '支付成功但套餐未正确激活:请退出客户端后五分钟重新进入,如仍未正确激活,请截图您的支付记录,与在线客服联系,核实后会帮您手动激活。', ], ), KRMessage( title: '账号问题', content: [ '每部设备在安装客户端后会自动生成一个账号,购买套餐后可以正常使用,如需登陆其他设备使用,则需要绑定邮箱。更换设备前建议先绑定邮箱。', '注销账号后会自动清除您已经购买的套餐信息,无法找回,请谨慎对待您的账号。', '无法收到邮箱验证码:请检查营销邮件箱或垃圾邮件箱。', ], ), KRMessage( title: '连接相关问题', content: [ '无法连接:请检查设备网络是否畅通,如仍无法连接,请退出客户端并重新启动设备。', '连接后速度慢,无法打开页面:请进入菜单-节点列表,手动切换节点或选择自动匹配最快网络。', '连接后无法打开本地页面:请进入菜单-节点列表,切换为智能模式即可绕过本地ip,但会暴露您的ip地址。选择全局模式则可以保证您始终处于隐私ip状态。', ], ), KRMessage( title: '线路相关问题', content: [ 'Hi快VPN所有线路均为IEPL专线,最大程度保证线路纯净与连接速度。', 'Hi快VPN所有线路均不限流量不限带宽,请放心使用。', 'Hi快VPN所有线路均不保存任何用户网络日志,最大程度保障用户的隐私安全。', ], ), KRMessage( title: '设备与绑定问题', content: [ '在绑定新设备之前请先添加您的邮箱。', 'Hi快VPN支持最多两台设备同时在线,包括一台iOS设备或Android,加一台Mac或PC。', '如超出设备数量限制,最早登陆的同类设备将会自动下线,需要重新登陆,设备限制为系统固定设定,不支持调整。', ], ), KRMessage( title: '邀请用户相关问题', content: [ '邀请用户请进入菜单-邀请好友页面,点击“我的邀请码”分享链接,直接分享至任意平台。受邀好友在根据流程安装好客户端后,进入菜单-邀请好友页面,贴入邀请码,保存后购买任一套餐,您和好友将会同时获得3天免费使用时长。', '请务必先行让受邀好友填写邀请码后再购买套餐,否则将无法激活免费时长。', ], ), KRMessage( title: '闪连功能相关问题', content: [ '闪连功能可以为您提供最便捷的VPN使用体验,在设置好您的使用偏好并开启闪连功能后,未来只需要点击打开客户端,软件即自动连接,无需再点击任意按钮。', '在后台关闭客户端后,连接自动断开。如未在后台关闭,则连接不会断开。如长时间设备锁屏并没有任何操作,连接会自动断开。', ], ), ].obs; final RxBool kr_isLoading = false.obs; final RxBool kr_hasMore = true.obs; int kr_page = 1; final int kr_size = 10; final EasyRefreshController refreshController = EasyRefreshController(); @override void onInit() { super.onInit(); // 隐藏全局订阅按钮 // kr_getMessageList(); } // 刷新列表 Future kr_onRefresh() async { kr_page = 1; kr_hasMore.value = true; kr_messages.clear(); await kr_getMessageList(); refreshController.finishRefresh(); } // 加载更多 Future kr_onLoadMore() async { if (!kr_hasMore.value || kr_isLoading.value) { refreshController.finishLoad(IndicatorResult.noMore); return; } kr_page++; await kr_getMessageList(); refreshController.finishLoad(kr_hasMore.value ? IndicatorResult.success : IndicatorResult.noMore); } Future kr_getMessageList() async { if (kr_isLoading.value) return; kr_isLoading.value = true; final either = await kr_userApi.kr_getMessageList(kr_page, kr_size); either.fold( (error) { KRCommonUtil.kr_showToast(error.msg); if (kr_page > 1) kr_page--; }, (list) { }, ); kr_isLoading.value = false; } @override void onClose() { refreshController.dispose(); super.onClose(); } }