删除埋点,im和客服
This commit is contained in:
@@ -5,7 +5,6 @@ import 'package:get/get.dart';
|
||||
import 'package:jydj/assets_tool/images.dart';
|
||||
import 'package:jydj/hj_page/pre_sale/pre_sale_provider.dart';
|
||||
import 'package:jydj/hj_utils/api_service/vid_service.dart';
|
||||
import 'package:jydj/hj_utils/holiday_theme.dart';
|
||||
import 'package:jydj/hj_utils/light_model.dart';
|
||||
import 'package:jydj/hj_utils/store_keys.dart';
|
||||
import 'package:jydj/tools_base/global_store/store.dart';
|
||||
@@ -17,7 +16,6 @@ import 'package:jydj/tools_base/widget/common_alert.dart';
|
||||
|
||||
import '../../config/config.dart';
|
||||
import '../../hj_model/user/user_info_model.dart';
|
||||
import '../../routers/jump_router.dart';
|
||||
import '../main_page/provider/msg_provider.dart';
|
||||
import '../web_page/h5_page.dart';
|
||||
import 'collec_history_buy/col_his_buy_page.dart';
|
||||
@@ -61,11 +59,10 @@ class MineMainLogic extends GetxController with GetTickerProviderStateMixin {
|
||||
("账号凭证", 'mine_menu_9.png'.mineImgPath, () => Get.dialog(MineAccountIdentityPage())),
|
||||
("锁屏密码", 'mine_menu_10.png'.mineImgPath, _toggleLockPassword),
|
||||
("我的消息", 'mine_menu_11.png'.mineImgPath, () => menuTapEvent(3)),
|
||||
("在线客服", 'mine_menu_12.png'.mineImgPath, pushToCustomService),
|
||||
];
|
||||
|
||||
List<IconBean> iconList = [
|
||||
IconBean(HolidayTheme.theme.appIcon, Config.appName),
|
||||
IconBean('ic_launcher.webp'.commonImgPath, Config.appName),
|
||||
IconBean('icon_1.webp'.appImgPath, "爱音乐"),
|
||||
IconBean('icon_2.webp'.appImgPath, "爱阅读"),
|
||||
IconBean('icon_3.webp'.appImgPath, "支付宝"),
|
||||
@@ -187,6 +184,6 @@ class MineMainLogic extends GetxController with GetTickerProviderStateMixin {
|
||||
changeIcon(int index) async {
|
||||
if (!await CommonAlert.show(content: '您确定要更换图标吗?')) return;
|
||||
const platform = MethodChannel(DeviceInfoService.requestChannel);
|
||||
platform.invokeMethod('changeIcon', {"iconIndex": index == 0 ? holidayTheme.iconIndex : index});
|
||||
platform.invokeMethod('changeIcon', {"iconIndex": index});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,7 +8,6 @@ import 'package:jydj/config/address.dart';
|
||||
import 'package:jydj/config/config.dart';
|
||||
import 'package:jydj/hj_page/main_page/provider/msg_provider.dart';
|
||||
import 'package:jydj/hj_page/pre_sale/pre_sale_provider.dart';
|
||||
import 'package:jydj/im_manager/im_notification.dart';
|
||||
import 'package:jydj/hj_utils/screen.dart';
|
||||
import 'package:jydj/routers/jump_router.dart';
|
||||
import 'package:jydj/tools_base/global_store/store.dart';
|
||||
@@ -17,10 +16,8 @@ import 'package:jydj/tools_base/toast.dart';
|
||||
import 'package:jydj/tools_base/widget/net_image_widget.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
import '../../hj_utils/holiday_theme.dart';
|
||||
import '../../hj_utils/widget_util.dart';
|
||||
import '../../tools_base/banner/ads_grid_view.dart';
|
||||
import '../../track_event_manager/track_manager.dart';
|
||||
import 'home_mine_logic.dart';
|
||||
import 'widgets/mine_info_widget.dart';
|
||||
import 'widgets/vip_entry_card.dart';
|
||||
@@ -65,14 +62,14 @@ class HomeMinePage extends StatelessWidget {
|
||||
);
|
||||
}
|
||||
|
||||
//顶部背景:优先后台下发,兜底节日/默认图
|
||||
//顶部背景:优先后台下发,兜底默认图
|
||||
Widget _buildBg() {
|
||||
final bg = Config.mineBg;
|
||||
if (bg != null && bg.isNotEmpty) {
|
||||
return NetworkImageLoader(imageUrl: bg, borderRadius: 0);
|
||||
}
|
||||
return Image.asset(
|
||||
holidayTheme.openHoliday ? HolidayTheme.theme.mineBg : 'mine_bg.webp'.mineImgPath,
|
||||
'mine_bg.webp'.mineImgPath,
|
||||
);
|
||||
}
|
||||
|
||||
@@ -98,7 +95,6 @@ class HomeMinePage extends StatelessWidget {
|
||||
8,
|
||||
autoStyle: true,
|
||||
padding: EdgeInsets.symmetric(horizontal: 16, vertical: 12),
|
||||
exposureModel: AdExposureModel(pageType: TrackEventPageType.mine),
|
||||
),
|
||||
Container(
|
||||
margin: EdgeInsets.symmetric(horizontal: 16),
|
||||
@@ -148,22 +144,12 @@ class HomeMinePage extends StatelessWidget {
|
||||
"mine_notification.png".mineImgPath,
|
||||
width: 28,
|
||||
),
|
||||
Consumer<ImMsgProvider>(
|
||||
builder: (ctx, imPro, child) {
|
||||
if (!imPro.hasUnreadCount) return const SizedBox.shrink();
|
||||
return Positioned(
|
||||
right: 2,
|
||||
top: 2,
|
||||
child: Container(
|
||||
width: 8,
|
||||
height: 8,
|
||||
decoration: BoxDecoration(
|
||||
color: Color(0xfff74f49),
|
||||
borderRadius: BorderRadius.all(Radius.circular(6)),
|
||||
),
|
||||
),
|
||||
);
|
||||
},
|
||||
Consumer<MineMsgProvider>(
|
||||
builder: (context, model, child) => Positioned(
|
||||
right: 2,
|
||||
top: 2,
|
||||
child: model.buildTipsView(),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
@@ -249,7 +235,7 @@ class HomeMinePage extends StatelessWidget {
|
||||
//永久官方地址:地址未下发时不渲染,避免点击/复制空串
|
||||
Widget _buildGroundUrl() {
|
||||
final url = Address.groundUrl;
|
||||
if (url == null || url.isEmpty) return const SizedBox.shrink();
|
||||
if (url.isEmpty) return const SizedBox.shrink();
|
||||
return GestureDetector(
|
||||
onTap: () => launchUrlToWeb(url),
|
||||
onLongPress: () {
|
||||
@@ -269,31 +255,10 @@ class HomeMinePage extends StatelessWidget {
|
||||
padding: EdgeInsets.symmetric(horizontal: 16, vertical: 12),
|
||||
child: Row(
|
||||
children: [
|
||||
Stack(
|
||||
children: [
|
||||
InkWell(
|
||||
enableFeedback: false,
|
||||
onTap: () => logic.menuTapEvent(3),
|
||||
child: Image.asset("mine_notification.png".mineImgPath, width: 24),
|
||||
),
|
||||
Consumer<ImMsgProvider>(
|
||||
builder: (ctx, imPro, child) {
|
||||
if (!imPro.hasUnreadCount) return const SizedBox.shrink();
|
||||
return Positioned(
|
||||
right: 2,
|
||||
top: 2,
|
||||
child: Container(
|
||||
width: 8,
|
||||
height: 8,
|
||||
decoration: BoxDecoration(
|
||||
color: Color(0xfff74f49),
|
||||
borderRadius: BorderRadius.all(Radius.circular(6)),
|
||||
),
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
],
|
||||
InkWell(
|
||||
enableFeedback: false,
|
||||
onTap: () => logic.menuTapEvent(3),
|
||||
child: Image.asset("mine_notification.png".mineImgPath, width: 24),
|
||||
),
|
||||
Spacer(),
|
||||
InkWell(
|
||||
|
||||
@@ -145,7 +145,7 @@ class MineAccountIdentityPage extends StatelessWidget {
|
||||
height: 30,
|
||||
padding: EdgeInsets.symmetric(horizontal: 18, vertical: 3),
|
||||
child: Text(
|
||||
'${Config.appName} 官网地址 ${Address.groundUrl ?? ""}',
|
||||
'${Config.appName} 官网地址 ${Address.groundUrl}',
|
||||
style: TextStyle(
|
||||
color: Colors.white.withValues(alpha: .55),
|
||||
fontSize: 12,
|
||||
|
||||
@@ -143,7 +143,5 @@ MineWithdrawalRecordLogic instanceController(RecordType type) {
|
||||
return RechargeRecordController();
|
||||
case RecordType.income:
|
||||
return IncomeRecordController();
|
||||
default:
|
||||
throw '$type 没有找到';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import 'package:easy_rich_text/easy_rich_text.dart';
|
||||
import 'package:flutter/gestures.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||
@@ -13,7 +12,6 @@ import 'package:provider/provider.dart';
|
||||
|
||||
import '../../../assets_tool/app_colors.dart';
|
||||
import '../../../hj_utils/widget_util.dart';
|
||||
import '../../../routers/jump_router.dart';
|
||||
import 'in_come_entity.dart';
|
||||
import 'mine_withdrawal_record_page.dart';
|
||||
import 'withdrawal_logic.dart';
|
||||
@@ -359,18 +357,6 @@ class WithdrawalPage extends StatelessWidget {
|
||||
),
|
||||
)),
|
||||
),
|
||||
10.sizeBoxH,
|
||||
EasyRichText(
|
||||
'提现中如有问题,请联系 在线客服',
|
||||
defaultStyle: textStyle(12, Colors.white.withValues(alpha: .8), FontWeight.w400),
|
||||
patternList: [
|
||||
EasyRichTextPattern(
|
||||
targetString: '在线客服',
|
||||
style: TextStyle(color: Color(0xffFFD460)),
|
||||
recognizer: TapGestureRecognizer()..onTap = pushToCustomService,
|
||||
),
|
||||
],
|
||||
),
|
||||
34.sizeBoxH,
|
||||
],
|
||||
)
|
||||
|
||||
@@ -2,13 +2,15 @@ import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
|
||||
import '../../../hj_utils/api_service/mine_service.dart';
|
||||
import 'message_center_sub_page.dart';
|
||||
|
||||
class MessageCenterLogic extends GetxController with GetTickerProviderStateMixin {
|
||||
MessageCenterLogic get to => Get.find<MessageCenterLogic>();
|
||||
|
||||
late TabController tabController = TabController(length: titleArr.length, vsync: this);
|
||||
|
||||
List<String> titleArr = ['私信', '评论', '公告'];
|
||||
List<String> titleArr = ['评论', '公告'];
|
||||
List<MessageType> typeArr = [MessageType.comment, MessageType.thumb]; //与 titleArr 一一对应
|
||||
|
||||
void getUnReadNum() async {
|
||||
await MineService.getUnreadNum();
|
||||
|
||||
@@ -1,8 +1,5 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:jydj/im_manager/chat_detail_page/Im_ad_view.dart';
|
||||
import 'package:jydj/im_manager/chat_detail_page/chat_session_list_view.dart';
|
||||
import 'package:jydj/im_manager/im_ad/im_ad_manager.dart';
|
||||
import 'package:jydj/tools_base/widget/keep_alive_widget.dart';
|
||||
|
||||
import 'message_center_logic.dart';
|
||||
@@ -54,25 +51,7 @@ class MessageCenterPage extends StatelessWidget {
|
||||
controller: logic.tabController,
|
||||
children: logic.titleArr
|
||||
.asMap()
|
||||
.map((key, value) {
|
||||
final type = MessageType.values[key];
|
||||
// 私信 Tab 走 IM 会话列表 + 顶部 banner 广告,其余走原有 HTTP 消息
|
||||
if (type == MessageType.session) {
|
||||
return MapEntry(
|
||||
key,
|
||||
CustomScrollView(slivers: [
|
||||
SliverToBoxAdapter(
|
||||
child: ImAdView(
|
||||
padding: EdgeInsets.symmetric(vertical: 12, horizontal: 12),
|
||||
position: ImAdManager.kPosListBanner,
|
||||
),
|
||||
),
|
||||
const ChatSessionListView(),
|
||||
]).keepAlive,
|
||||
);
|
||||
}
|
||||
return MapEntry(key, MessageCenterSubPage(type).keepAlive);
|
||||
})
|
||||
.map((key, value) => MapEntry(key, MessageCenterSubPage(logic.typeArr[key]).keepAlive))
|
||||
.values
|
||||
.toList()),
|
||||
),
|
||||
|
||||
@@ -157,7 +157,5 @@ MineFollowSubLogic instanceController(FollowType type, {int? uid}) {
|
||||
return TopicController(uid);
|
||||
case FollowType.actress:
|
||||
return ActressController(uid);
|
||||
default:
|
||||
throw 'type 没有定义';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -280,9 +280,6 @@ class _GesturePasswordWidgetState extends State<GesturePasswordWidget> {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
//预览小点的边长:每行 singleLineCount 个 10px 的点 + 之间 8px 间距。必须按 singleLineCount 算,
|
||||
//写死值(原来是 56)比内容宽时 Wrap 默认贴左上,整块预览会偏左偏上,且换行数只对 3x3 成立
|
||||
final previewSize = 10.0 * widget.singleLineCount + 8 * (widget.singleLineCount - 1);
|
||||
return Column(
|
||||
children: [
|
||||
/*SizedBox(
|
||||
|
||||
@@ -141,7 +141,7 @@ class _BankCardHomePageState extends State<BankCardHomePage> {
|
||||
child: ListView.builder(
|
||||
padding: EdgeInsets.only(top: 10, bottom: 80),
|
||||
shrinkWrap: true,
|
||||
itemCount: aliList.length ?? 0,
|
||||
itemCount: aliList.length,
|
||||
itemBuilder: (BuildContext context, int index) {
|
||||
return _buildCardView(index, aliList[index]);
|
||||
},
|
||||
|
||||
@@ -3,7 +3,6 @@ import 'package:get/get.dart';
|
||||
import 'package:jydj/hj_utils/screen.dart';
|
||||
|
||||
import '../../../hj_utils/permission_util.dart';
|
||||
import '../../../routers/jump_router.dart';
|
||||
import 'bing_phone_page.dart';
|
||||
import 'mine_scan_login_page.dart';
|
||||
|
||||
@@ -21,10 +20,6 @@ class MineFindAccountPage extends StatelessWidget {
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
'title': '联系客服',
|
||||
'ontap': () => pushToCustomService(),
|
||||
}
|
||||
];
|
||||
MineFindAccountPage({super.key});
|
||||
|
||||
|
||||
@@ -3,7 +3,6 @@ import 'package:jydj/assets_tool/app_colors.dart';
|
||||
import 'package:jydj/routers/jump_router.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:jydj/assets_tool/images.dart';
|
||||
import 'package:jydj/config/config.dart';
|
||||
import 'package:jydj/tools_base/toast.dart';
|
||||
import 'package:jydj/hj_utils/screen.dart';
|
||||
|
||||
@@ -82,7 +82,5 @@ MineSettingProfilePage instanceSettingProfileController(SettingProfileType type)
|
||||
return SettingNickNameController();
|
||||
case SettingProfileType.slogan:
|
||||
return SettingSloganController();
|
||||
default:
|
||||
throw '';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -144,7 +144,7 @@ class MineSharePage extends StatelessWidget {
|
||||
height: 30,
|
||||
padding: EdgeInsets.symmetric(horizontal: 18, vertical: 3),
|
||||
child: Text(
|
||||
'${Config.appName} 官网地址 ${Address.groundUrl ?? ""}',
|
||||
'${Config.appName} 官网地址 ${Address.groundUrl}',
|
||||
style: TextStyle(
|
||||
color: Colors.white.withValues(alpha: .55),
|
||||
fontSize: 12,
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
import 'package:easy_rich_text/easy_rich_text.dart';
|
||||
import 'package:flutter/gestures.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||
import 'package:get/get.dart';
|
||||
@@ -11,7 +9,6 @@ import 'package:jydj/tools_base/loading/loading_center_widget.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
import '../../../hj_utils/widget_util.dart';
|
||||
import '../../../routers/jump_router.dart';
|
||||
import '../make_money/mine_withdrawal_record_page.dart';
|
||||
import 'charge_user_header.dart';
|
||||
import 'mine_charge_coin_logic.dart';
|
||||
@@ -98,16 +95,9 @@ class MineChargeCoinPage extends StatelessWidget {
|
||||
),
|
||||
SliverToBoxAdapter(child: 18.sizeBoxH),
|
||||
SliverToBoxAdapter(
|
||||
child: EasyRichText(
|
||||
'*如提示【交易失败】【账户风险】等,可重新发起订单,或在15分钟后重试支付。如支付未到账,请反馈客服订单号',
|
||||
defaultStyle: TextStyle(color: Color(0xff666666), fontSize: 12),
|
||||
patternList: [
|
||||
EasyRichTextPattern(
|
||||
targetString: '反馈客服订单号',
|
||||
style: TextStyle(color: Color(0xffFFD460), fontWeight: FontWeight.w500),
|
||||
recognizer: TapGestureRecognizer()..onTap = () => pushToCustomService(),
|
||||
)
|
||||
],
|
||||
child: Text(
|
||||
'*如提示【交易失败】【账户风险】等,可重新发起订单,或在15分钟后重试支付。',
|
||||
style: TextStyle(color: Color(0xff666666), fontSize: 12),
|
||||
).paddingSymmetric(horizontal: 16),
|
||||
),
|
||||
],
|
||||
@@ -122,7 +112,7 @@ class MineChargeCoinPage extends StatelessWidget {
|
||||
);
|
||||
}
|
||||
|
||||
// 底部支付按钮 + 客服入口
|
||||
// 底部支付按钮
|
||||
Widget _buildBottomBar(MineChargeCoinLogic controller) {
|
||||
return Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
@@ -140,19 +130,6 @@ class MineChargeCoinPage extends StatelessWidget {
|
||||
),
|
||||
),
|
||||
),
|
||||
12.sizeBoxH,
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
Text('权益长期有效 I 支持帐号找回 I ', style: textStyle(12, Color(0xffBFBFC1), FontWeight.w400)),
|
||||
GestureDetector(
|
||||
onTap: () {
|
||||
pushToCustomService();
|
||||
},
|
||||
child: Text('在线客服', style: textStyle(12, Color(0xffFFD460), FontWeight.w400)),
|
||||
)
|
||||
],
|
||||
),
|
||||
// 垫上虚拟导航栏高度,避免底部内容被遮挡(edge-to-edge)
|
||||
(16 + screen.paddingBottom).sizeBoxH,
|
||||
],
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
import 'dart:math' as math;
|
||||
|
||||
import 'package:carousel_slider/carousel_slider.dart';
|
||||
import 'package:easy_rich_text/easy_rich_text.dart';
|
||||
import 'package:flutter/gestures.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:jydj/assets_tool/images.dart';
|
||||
@@ -12,7 +10,6 @@ import 'package:jydj/tools_base/unique_tag_mixin.dart';
|
||||
import 'package:jydj/tools_base/widget/net_image_widget.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
import '../../../routers/jump_router.dart';
|
||||
import '../../pre_sale/pre_sale_entry.dart';
|
||||
import '../make_money/mine_withdrawal_record_page.dart';
|
||||
import 'charge_user_header.dart';
|
||||
@@ -189,57 +186,6 @@ class _MineChargeVipPageState extends State<MineChargeVipPage> with UniqueTagMix
|
||||
);
|
||||
}
|
||||
|
||||
//核心权益:横向滚动卡片(左图标 + 右文案)—— B 改版
|
||||
Widget _buildCorePrivileges(List<NewPrivilege> list) {
|
||||
if (list.isEmpty) return const SizedBox.shrink();
|
||||
return Column(
|
||||
children: [
|
||||
const VipCoreSectionTitleImage(),
|
||||
16.sizeBoxH,
|
||||
SizedBox(
|
||||
height: 92,
|
||||
child: ListView.separated(
|
||||
clipBehavior: Clip.none,
|
||||
scrollDirection: Axis.horizontal,
|
||||
padding: const EdgeInsets.fromLTRB(16, 2, 16, 26),
|
||||
itemCount: list.length,
|
||||
separatorBuilder: (_, __) => 8.sizeBoxW,
|
||||
itemBuilder: (_, index) => VipCorePrivilegeCard(list[index]),
|
||||
),
|
||||
),
|
||||
16.sizeBoxH,
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
//核心权益:4 列金边方卡 —— A / DISABLED 旧版
|
||||
Widget _buildClassicCorePrivileges(List<NewPrivilege> list) {
|
||||
if (list.isEmpty) return const SizedBox.shrink();
|
||||
return Column(
|
||||
children: [
|
||||
const VipSectionTitle("我的核心权益", classic: true),
|
||||
16.sizeBoxH,
|
||||
GridView.builder(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 14),
|
||||
shrinkWrap: true,
|
||||
physics: const NeverScrollableScrollPhysics(),
|
||||
gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(
|
||||
crossAxisCount: 4,
|
||||
crossAxisSpacing: 8,
|
||||
mainAxisSpacing: 8,
|
||||
childAspectRatio: 1,
|
||||
),
|
||||
itemCount: list.length,
|
||||
itemBuilder: (_, index) => FittedBox(
|
||||
fit: BoxFit.contain,
|
||||
child: SizedBox(width: 72, height: 72, child: VipCorePrivilegeCard(list[index], classic: true)),
|
||||
),
|
||||
),
|
||||
16.sizeBoxH,
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
//更多权益:深色圆角容器 + 四列网格 + 展开/收起 —— B 改版
|
||||
Widget _buildMorePrivileges(List<NewPrivilege> list) {
|
||||
if (list.isEmpty) return const SizedBox.shrink();
|
||||
@@ -274,7 +220,7 @@ class _MineChargeVipPageState extends State<MineChargeVipPage> with UniqueTagMix
|
||||
);
|
||||
}
|
||||
|
||||
//底部支付区域:只有按钮跟选中卡走,渐变底和客服文案是静态的
|
||||
//底部支付区域:只有按钮跟选中卡走,渐变底是静态的
|
||||
Widget _buildPay({required bool classic}) {
|
||||
return Container(
|
||||
padding: EdgeInsets.symmetric(horizontal: 16),
|
||||
@@ -294,18 +240,6 @@ class _MineChargeVipPageState extends State<MineChargeVipPage> with UniqueTagMix
|
||||
id: MineChargeVipLogic.kSelection,
|
||||
builder: (logic) => VipPayButton(logic, classic: classic),
|
||||
),
|
||||
12.sizeBoxH,
|
||||
EasyRichText(
|
||||
'权益长期有效 I 支持帐号找回 I 在线客服',
|
||||
patternList: [
|
||||
EasyRichTextPattern(
|
||||
targetString: '在线客服',
|
||||
style: TextStyle(color: Color(0xFFFFC000), fontSize: 12),
|
||||
recognizer: TapGestureRecognizer()..onTap = () => pushToCustomService(),
|
||||
)
|
||||
],
|
||||
defaultStyle: TextStyle(color: Color(0xffBFBFC1), fontSize: 12),
|
||||
),
|
||||
// 垫上虚拟导航栏高度,避免底部内容被遮挡(edge-to-edge)
|
||||
(12 + screen.paddingBottom).sizeBoxH,
|
||||
],
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
import 'dart:convert';
|
||||
|
||||
import 'package:easy_rich_text/easy_rich_text.dart';
|
||||
import 'package:flutter/gestures.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||
import 'package:get/get.dart';
|
||||
@@ -154,21 +152,6 @@ class _OnlinePayPageState extends State<OnlinePayPage> {
|
||||
),
|
||||
),
|
||||
),
|
||||
18.sizeBoxH,
|
||||
//客服入口
|
||||
Center(
|
||||
child: EasyRichText(
|
||||
'支付问题反馈,点击联系 在线客服',
|
||||
defaultStyle: textStyle(12, Colors.white.withValues(alpha: .6), FontWeight.w500),
|
||||
patternList: [
|
||||
EasyRichTextPattern(
|
||||
targetString: '在线客服',
|
||||
style: textStyle(12, Color(0xffFFD460), FontWeight.w500),
|
||||
recognizer: TapGestureRecognizer()..onTap = () => pushToCustomService(),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
@@ -4,7 +4,6 @@ import 'package:jydj/assets_tool/app_colors.dart';
|
||||
import 'package:jydj/hj_utils/screen.dart';
|
||||
import 'package:jydj/tools_base/widget/common_dialog.dart';
|
||||
|
||||
import '../../../routers/jump_router.dart';
|
||||
import '../../../tools_base/global_store/store.dart';
|
||||
|
||||
class PaySuccessAlert extends StatelessWidget {
|
||||
@@ -34,7 +33,7 @@ class PaySuccessAlert extends StatelessWidget {
|
||||
0.5.line,
|
||||
12.sizeBoxH,
|
||||
Text(
|
||||
'''1.订单支付后,一般会在1-10分钟内到账,如超时未到账,请联系在线客服为您处理。
|
||||
'''1.订单支付后,一般会在1-10分钟内到账。
|
||||
2.受特殊行业限制,如支付失败可尝试重新发起订单,系统将会随机切换备用的支付通道。
|
||||
3.本APP有稳定的广告收益,产品稳定安全,请放心充值使用,如遇报毒提示忽略即可。''',
|
||||
style: TextStyle(
|
||||
@@ -43,24 +42,6 @@ class PaySuccessAlert extends StatelessWidget {
|
||||
height: 1.8,
|
||||
),
|
||||
),
|
||||
12.sizeBoxH,
|
||||
InkWell(enableFeedback: false,
|
||||
onTap: () => pushToCustomService(),
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
Text(
|
||||
'支付遇到问题',
|
||||
style: TextStyle(color: Color(0xff999999), fontSize: 14),
|
||||
),
|
||||
2.sizeBoxW,
|
||||
Icon(
|
||||
Icons.arrow_forward_ios_outlined,
|
||||
size: 14,
|
||||
color: Colors.white,
|
||||
)
|
||||
],
|
||||
)),
|
||||
24.sizeBoxH,
|
||||
InkWell(enableFeedback: false,
|
||||
onTap: () {
|
||||
|
||||
@@ -3,8 +3,6 @@ import 'package:get/get.dart';
|
||||
import 'package:jydj/assets_tool/app_colors.dart';
|
||||
import 'package:jydj/assets_tool/images.dart';
|
||||
import 'package:jydj/hj_utils/screen.dart';
|
||||
import 'package:jydj/hj_utils/widget_util.dart';
|
||||
import 'package:jydj/routers/jump_router.dart';
|
||||
import 'package:jydj/tools_base/global_store/store.dart';
|
||||
import 'package:jydj/tools_base/loading/loading_center_widget.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
@@ -148,25 +146,6 @@ class CoinPayBottomSheet extends StatelessWidget {
|
||||
);
|
||||
},
|
||||
),
|
||||
16.sizeBoxH,
|
||||
Text.rich(
|
||||
TextSpan(
|
||||
style: const TextStyle(fontSize: 12, height: 18 / 12, color: Color(0xff656565)),
|
||||
children: [
|
||||
const TextSpan(text: '*如提示【交易失败】【账户风险】等,可重新发起订单,或在15分钟后重试支付。如支付未到账,请'),
|
||||
WidgetSpan(
|
||||
alignment: PlaceholderAlignment.middle,
|
||||
child: GestureDetector(
|
||||
onTap: pushToCustomService,
|
||||
child: const Text(
|
||||
'反馈客服订单号',
|
||||
style: TextStyle(fontSize: 12, height: 18 / 12, color: Color(0xffFFD460)),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
18.sizeBoxH,
|
||||
],
|
||||
),
|
||||
@@ -234,7 +213,7 @@ class CoinPayBottomSheet extends StatelessWidget {
|
||||
);
|
||||
}
|
||||
|
||||
/// 立即支付 + 在线客服
|
||||
/// 立即支付
|
||||
Widget _buildBottomBar(MineChargeCoinLogic logic) {
|
||||
return Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
@@ -259,17 +238,6 @@ class CoinPayBottomSheet extends StatelessWidget {
|
||||
),
|
||||
),
|
||||
),
|
||||
12.sizeBoxH,
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
Text('支付问题反馈,点击联系 ', style: textStyle(12, const Color(0xffBFBFC1), FontWeight.w400)),
|
||||
GestureDetector(
|
||||
onTap: pushToCustomService,
|
||||
child: Text('在线客服', style: textStyle(12, const Color(0xffFFD460), FontWeight.w400)),
|
||||
),
|
||||
],
|
||||
),
|
||||
16.sizeBoxH,
|
||||
],
|
||||
);
|
||||
|
||||
@@ -26,13 +26,13 @@ class _MineQAPageState extends State<MineQAPage> {
|
||||
{
|
||||
"question": "怎么找回账号?",
|
||||
"answer":
|
||||
"本平台登录会自动创建账号,需保存账号凭证或绑定手机号码,才能记录之前的账号信息。受行业限制,APP无法正常使用时需升级,未绑定手机号码会导致账号信息丢失。请及时绑定手机号码或保存账号凭证,以免VIP信息丢失,造成巨大财产损失!账号丢失的用户可在 『我的』页面-账号找回,原账号的VIP信息会转移至新账号上。『账号凭证』『手机绑定』都没有的情况下,如账号VIP信息丢失,可以提供VIP支付充值凭证截图联系在线客服为您查询核实恢复VIP。",
|
||||
"本平台登录会自动创建账号,需保存账号凭证或绑定手机号码,才能记录之前的账号信息。受行业限制,APP无法正常使用时需升级,未绑定手机号码会导致账号信息丢失。请及时绑定手机号码或保存账号凭证,以免VIP信息丢失,造成巨大财产损失!账号丢失的用户可在 『我的』页面-账号找回,原账号的VIP信息会转移至新账号上。",
|
||||
'isOpen': false
|
||||
},
|
||||
{
|
||||
"question": "怎么支付不成功?",
|
||||
"answer":
|
||||
"1.因超时支付无法到账,请重新发起。\n2.每天发起支付不能超过5次,连续发起且未支付,账号可能被加入黑名单。\n3.支付通道在夜间比较忙碌,尝试多次发起,后台会为您自动切换不同支付通道。\n4.若充值成功,用户权益通常会在数分钟内到账,请刷新APP或重启。\n6.若支付成功并重启APP后依然没有到账,请联系在线客服并提供付款成功凭证截图。",
|
||||
"1.因超时支付无法到账,请重新发起。\n2.每天发起支付不能超过5次,连续发起且未支付,账号可能被加入黑名单。\n3.支付通道在夜间比较忙碌,尝试多次发起,后台会为您自动切换不同支付通道。\n4.若充值成功,用户权益通常会在数分钟内到账,请刷新APP或重启。",
|
||||
'isOpen': false
|
||||
},
|
||||
{"question": "收到手机报毒提醒?", "answer": "本平台有主要收益为广告赞助,且保证APP安全无毒,因平台主要展示内容为色情属于特殊行业,某些杀毒软件会误报毒提醒,如遇此类提醒请忽略继续使用。", 'isOpen': false},
|
||||
|
||||
@@ -4,7 +4,6 @@ import 'package:jydj/hj_utils/screen.dart';
|
||||
import 'package:jydj/tools_base/loading/loading_center_widget.dart';
|
||||
import 'package:jydj/tools_base/unique_tag_mixin.dart';
|
||||
import 'package:jydj/tools_base/widget/keep_alive_widget.dart';
|
||||
import 'package:jydj/track_event_manager/track_manager.dart';
|
||||
|
||||
import 'lou_feng_ad_logic.dart';
|
||||
import 'widget/recommend_app_page.dart';
|
||||
@@ -92,8 +91,5 @@ class _LouFengAdPageState extends State<LouFengAdPage> with UniqueTagMixin {
|
||||
);
|
||||
}
|
||||
|
||||
Widget _adView(LouFengAdLogic logic, int index) => RecommendAppPage(
|
||||
logic.configs[index],
|
||||
exposureModel: AdExposureModel(tabIndex: index, pageType: TrackEventPageType.appList),
|
||||
);
|
||||
Widget _adView(LouFengAdLogic logic, int index) => RecommendAppPage(logic.configs[index]);
|
||||
}
|
||||
|
||||
@@ -34,8 +34,8 @@ class MoreFreeVideoLogic extends GetxController with GetTickerProviderStateMixin
|
||||
dataSource.clear();
|
||||
refreshController?.refreshCompleted();
|
||||
}
|
||||
res?.hasNext ?? false ? refreshController?.loadComplete() : refreshController?.loadNoData();
|
||||
dataSource.addAll(res?.list ?? []);
|
||||
res.hasNext ?? false ? refreshController?.loadComplete() : refreshController?.loadNoData();
|
||||
dataSource.addAll(res.list ?? []);
|
||||
page += 1;
|
||||
update();
|
||||
}
|
||||
|
||||
@@ -4,7 +4,6 @@ import 'package:jydj/tools_base/widget/keep_alive_widget.dart';
|
||||
|
||||
import '../../../tools_base/indicator/custom_tab_indicator.dart';
|
||||
import 'lou_feng_ad_page.dart';
|
||||
import 'mine_income_page.dart';
|
||||
|
||||
class WelfareHomePage extends StatefulWidget {
|
||||
|
||||
|
||||
@@ -3,15 +3,13 @@ import 'package:jydj/hj_model/mine/happy/happy_model.dart';
|
||||
import 'package:jydj/hj_model/splash/ads_model.dart';
|
||||
import 'package:jydj/hj_utils/screen.dart';
|
||||
import 'package:jydj/tools_base/banner/ads_banner.dart';
|
||||
import 'package:jydj/track_event_manager/track_manager.dart';
|
||||
|
||||
import '../../../../tools_base/banner/ads_item.dart';
|
||||
|
||||
class RecommendAppPage extends StatelessWidget {
|
||||
final AdTabConfig model;
|
||||
final AdExposureModel? exposureModel;
|
||||
|
||||
const RecommendAppPage(this.model, {super.key, this.exposureModel});
|
||||
const RecommendAppPage(this.model, {super.key});
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return CustomScrollView(
|
||||
@@ -24,10 +22,7 @@ class RecommendAppPage extends StatelessWidget {
|
||||
borderRadius: BorderRadius.circular(8),
|
||||
child: AspectRatio(
|
||||
aspectRatio: 343 / 143,
|
||||
child: AdsBanner(
|
||||
model.bannerAds ?? [],
|
||||
exposureModel: exposureModel?..adType = AdType.bigBanner,
|
||||
),
|
||||
child: AdsBanner(model.bannerAds ?? []),
|
||||
),
|
||||
),
|
||||
),
|
||||
@@ -113,8 +108,6 @@ class RecommendAppPage extends StatelessWidget {
|
||||
_buildVItem(AdsInfoModel item, int index) {
|
||||
return AdsItem(
|
||||
adInfo: item,
|
||||
exposureModel: exposureModel?..adType = AdType.smallIcon,
|
||||
clickType: 0,
|
||||
);
|
||||
}
|
||||
|
||||
@@ -126,8 +119,6 @@ class RecommendAppPage extends StatelessWidget {
|
||||
AdsItem(
|
||||
adInfo: item,
|
||||
showType: AdShowType.hor,
|
||||
exposureModel: exposureModel?..adType = AdType.smallIcon,
|
||||
clickType: 0,
|
||||
),
|
||||
12.sizeBoxH,
|
||||
],
|
||||
@@ -138,8 +129,6 @@ class RecommendAppPage extends StatelessWidget {
|
||||
return AdsItem(
|
||||
adInfo: item,
|
||||
showType: AdShowType.vImgText,
|
||||
exposureModel: exposureModel?..adType = AdType.smallBanner,
|
||||
clickType: 0,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -614,7 +614,7 @@ class _TaskItemState extends State<TaskItem> {
|
||||
/// 任务按钮点击:红包雨 → 跳转 link;未完成 → 去完成;待领取 → 领奖
|
||||
void _onBtnTap(DailyTask task, String btnText) {
|
||||
if (btnText == '领红包' || btnText == '待开启') {
|
||||
pushToPageByLink(task.link, id: task.id);
|
||||
pushToPageByLink(task.link);
|
||||
return;
|
||||
}
|
||||
switch (task.status) {
|
||||
@@ -623,7 +623,7 @@ class _TaskItemState extends State<TaskItem> {
|
||||
Get.to(MineChargeCoinPage());
|
||||
return;
|
||||
}
|
||||
pushToPageByLink(task.link, id: task.id);
|
||||
pushToPageByLink(task.link);
|
||||
_doTask(task);
|
||||
break;
|
||||
case 1:
|
||||
|
||||
@@ -8,9 +8,7 @@ import 'package:jydj/hj_utils/screen.dart';
|
||||
import 'package:jydj/tools_base/global_store/store.dart';
|
||||
import 'package:jydj/tools_base/loading/loading_center_widget.dart';
|
||||
|
||||
import '../../../routers/jump_router.dart';
|
||||
import '../../../tools_base/loading/loading_helper.dart';
|
||||
import '../../../tools_base/widget/common_dialog.dart';
|
||||
import '../../../tools_base/widget/net_image_widget.dart';
|
||||
import 'integral_exchange_logic.dart';
|
||||
|
||||
@@ -105,90 +103,8 @@ class IntegralExchangePage extends StatelessWidget {
|
||||
final res = await MineService.integralExchange(model.id ?? '');
|
||||
LoadingHelper.dismissLoading();
|
||||
if (res) {
|
||||
if (model.type == 5) {
|
||||
Get.dialog(InputAddressAlert(model: model));
|
||||
} else {
|
||||
showToast('兑换成功~');
|
||||
}
|
||||
showToast('兑换成功~');
|
||||
globalStore.refreshWallet();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class InputAddressAlert extends StatefulWidget {
|
||||
// final Function()? confirmCallback;
|
||||
final IntegralExchangeModel model;
|
||||
const InputAddressAlert({super.key, required this.model});
|
||||
|
||||
@override
|
||||
State<InputAddressAlert> createState() => _InputAddressAlertState();
|
||||
}
|
||||
|
||||
class _InputAddressAlertState extends State<InputAddressAlert> {
|
||||
final nameCtr = TextEditingController();
|
||||
final addressCtr = TextEditingController();
|
||||
final phoneCtr = TextEditingController();
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return CommonDialog(
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
Text(
|
||||
'温馨提示',
|
||||
style: TextStyle(color: Color(0xffffffff), fontSize: 18.sp, fontWeight: FontWeight.w800),
|
||||
),
|
||||
20.h.sizeBoxH,
|
||||
Divider(
|
||||
height: 1,
|
||||
color: Colors.white.withValues(alpha: .1),
|
||||
),
|
||||
20.h.sizeBoxH,
|
||||
Container(
|
||||
width: double.infinity,
|
||||
height: 45.h,
|
||||
alignment: Alignment.center,
|
||||
padding: EdgeInsets.symmetric(horizontal: 13.w),
|
||||
child: Text(
|
||||
"兑换成功!",
|
||||
style: TextStyle(color: Color(0x8CFFFFFF), fontSize: 18),
|
||||
textAlign: TextAlign.center,
|
||||
),
|
||||
),
|
||||
5.h.sizeBoxH,
|
||||
Container(
|
||||
width: double.infinity,
|
||||
height: 45.h,
|
||||
alignment: Alignment.center,
|
||||
padding: EdgeInsets.symmetric(horizontal: 13.w),
|
||||
child: Text(
|
||||
"请联系客服填写收货地址",
|
||||
style: TextStyle(color: Color(0x8CFFFFFF), fontSize: 18),
|
||||
textAlign: TextAlign.center,
|
||||
),
|
||||
),
|
||||
20.h.sizeBoxH,
|
||||
Padding(
|
||||
padding: EdgeInsets.symmetric(horizontal: 15.w),
|
||||
child: GestureDetector(
|
||||
onTap: () async {
|
||||
pushToCustomService();
|
||||
},
|
||||
child: Container(
|
||||
decoration: BoxDecoration(color: Color(0xffFFC000), borderRadius: BorderRadius.circular(6)),
|
||||
height: 48,
|
||||
alignment: Alignment.center,
|
||||
child: Text(
|
||||
'联系客服',
|
||||
style: TextStyle(color: Colors.white, fontSize: 18.sp, fontWeight: FontWeight.w500),
|
||||
),
|
||||
),
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,7 +3,6 @@ import 'package:flutter/services.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:jydj/assets_tool/images.dart';
|
||||
import 'package:jydj/hj_model/video_model.dart';
|
||||
import 'package:jydj/hj_utils/holiday_theme.dart';
|
||||
import 'package:jydj/hj_utils/screen.dart';
|
||||
import 'package:jydj/tools_base/global_store/store.dart';
|
||||
import 'package:jydj/tools_base/toast.dart';
|
||||
@@ -13,9 +12,7 @@ import '../../home/widget/user_avatar.dart';
|
||||
import '../../home/widget/user_name_view.dart';
|
||||
import '../collec_history_buy/col_his_buy_page.dart';
|
||||
import '../home_mine_logic.dart';
|
||||
import '../mine_following/mine_following_view.dart';
|
||||
import '../mine_setting/mine_setting_page.dart';
|
||||
import '../mine_video_cache/video_cache_page.dart';
|
||||
import '../mine_vip/mine_charge_coin_page.dart';
|
||||
import '../mine_vip/mine_charge_vip_page.dart';
|
||||
import '../welfare/sign_daily_page.dart';
|
||||
@@ -157,7 +154,7 @@ class MineTaskMenuWidget extends StatelessWidget {
|
||||
InkWell(
|
||||
enableFeedback: false,
|
||||
onTap: () => Get.to(() => MineChargeVipPage(), preventDuplicates: false),
|
||||
child: _buildItem("", HolidayTheme.theme.vipEnter, 0),
|
||||
child: _buildItem("", 'mine_vip_enter.webp'.mineImgPath, 0),
|
||||
),
|
||||
InkWell(
|
||||
enableFeedback: false,
|
||||
@@ -167,14 +164,14 @@ class MineTaskMenuWidget extends StatelessWidget {
|
||||
},
|
||||
child: _buildItem(
|
||||
"余额:${(globalStore.wallet?.amount ?? 0) + (globalStore.wallet?.income ?? 0)}",
|
||||
HolidayTheme.theme.coin,
|
||||
'mine_gold_enter.webp'.mineImgPath,
|
||||
15,
|
||||
),
|
||||
),
|
||||
InkWell(
|
||||
enableFeedback: false,
|
||||
onTap: _openAiGirlFriendDetail,
|
||||
child: _buildItem("", HolidayTheme.theme.aiEnter, 0),
|
||||
child: _buildItem("", 'mine_ai_enter.webp'.mineImgPath, 0),
|
||||
),
|
||||
];
|
||||
return Stack(
|
||||
|
||||
@@ -145,7 +145,7 @@ class _MineShareQRViewState extends State<MineShareQRView> {
|
||||
borderRadius: BorderRadius.circular(30),
|
||||
),
|
||||
child: Text(
|
||||
'${Config.appName} 官网地址 ${Address.groundUrl ?? ""}',
|
||||
'${Config.appName} 官网地址 ${Address.groundUrl}',
|
||||
style: TextStyle(
|
||||
color: Colors.white.withValues(alpha: .55),
|
||||
fontSize: 12,
|
||||
|
||||
Reference in New Issue
Block a user