logo和名称替换

This commit is contained in:
谢宇宁
2026-10-14 11:23:36 +07:00
parent 1cb514cd02
commit c5c04a7967
478 changed files with 8990 additions and 4948 deletions
@@ -1,8 +1,8 @@
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:hgmj/hj_utils/date_time_util.dart';
import 'package:hgmj/tools_base/loading/loading_center_widget.dart';
import 'package:hgmj/tools_base/refresh/pull_refresh.dart';
import 'package:wydj/hj_utils/date_time_util.dart';
import 'package:wydj/tools_base/loading/loading_center_widget.dart';
import 'package:wydj/tools_base/refresh/pull_refresh.dart';
import '../../../hj_model/mine/credit_record_model.dart';
import 'integral_record_logic.dart';
@@ -30,11 +30,13 @@ class _ExchangeVipPageState extends State<ExchangeVipPage> {
children: [
Expanded(
child: pullYsRefresh(
onInit: (controller) => _.refreshController = controller,
onInit: (controller) =>
_.refreshController = controller,
onRefresh: (controller) => _.loadData(),
onLoading: (controller) => _.loadMoreData(),
child: CustomScrollView(
keyboardDismissBehavior: ScrollViewKeyboardDismissBehavior.onDrag,
keyboardDismissBehavior:
ScrollViewKeyboardDismissBehavior.onDrag,
slivers: <Widget>[
...[
_buildHistoryTable(_),
@@ -92,7 +94,10 @@ class _ExchangeVipPageState extends State<ExchangeVipPage> {
children: [
Text(
item.desc ?? '',
style: const TextStyle(color: Colors.white, fontSize: 14, fontWeight: FontWeight.w500),
style: const TextStyle(
color: Colors.white,
fontSize: 14,
fontWeight: FontWeight.w500),
),
Text(
DateTimeUtil.utcTurnYear(item.createdAt),
@@ -105,7 +110,10 @@ class _ExchangeVipPageState extends State<ExchangeVipPage> {
"${item.integral ?? 0}积分",
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: TextStyle(color: Color(0xffFFC000), fontSize: 12, fontWeight: FontWeight.w500),
style: TextStyle(
color: Color(0xffFFC000),
fontSize: 12,
fontWeight: FontWeight.w500),
),
],
),
@@ -1,12 +1,12 @@
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:hgmj/hj_model/mine/task_center_data.dart';
import 'package:hgmj/hj_utils/api_service/mine_service.dart';
import 'package:hgmj/tools_base/toast.dart';
import 'package:hgmj/hj_utils/screen.dart';
import 'package:hgmj/tools_base/global_store/store.dart';
import 'package:hgmj/tools_base/loading/loading_center_widget.dart';
import 'package:wydj/hj_model/mine/task_center_data.dart';
import 'package:wydj/hj_utils/api_service/mine_service.dart';
import 'package:wydj/tools_base/toast.dart';
import 'package:wydj/hj_utils/screen.dart';
import 'package:wydj/tools_base/global_store/store.dart';
import 'package:wydj/tools_base/loading/loading_center_widget.dart';
import '../../../tools_base/loading/loading_helper.dart';
import '../../../tools_base/widget/net_image_widget.dart';
@@ -41,14 +41,16 @@ class IntegralExchangePage extends StatelessWidget {
color: Color(0xff303030),
borderRadius: BorderRadius.circular(9),
),
padding: EdgeInsets.only(left: 12.w, right: 12.w, top: 16.h, bottom: 9.h),
padding: EdgeInsets.only(
left: 12.w, right: 12.w, top: 16.h, bottom: 9.h),
width: double.infinity,
height: double.infinity,
child: Column(
children: [
Expanded(
child: ClipRRect(
borderRadius: BorderRadius.vertical(top: Radius.circular(9)),
borderRadius:
BorderRadius.vertical(top: Radius.circular(9)),
child: Stack(
alignment: Alignment.centerLeft,
children: [
@@ -68,17 +70,22 @@ class IntegralExchangePage extends StatelessWidget {
Expanded(
child: Text(
'花费${model?.price ?? 0}积分',
style: TextStyle(color: Color(0xFF989898), fontSize: 14.sp),
style: TextStyle(
color: Color(0xFF989898), fontSize: 14.sp),
),
),
GestureDetector(
onTap: () => onExchange(model!),
child: Container(
padding: EdgeInsets.symmetric(horizontal: 9.w, vertical: 3.h),
decoration: BoxDecoration(color: Color(0xffFFC000), borderRadius: BorderRadius.circular(11)),
padding: EdgeInsets.symmetric(
horizontal: 9.w, vertical: 3.h),
decoration: BoxDecoration(
color: Color(0xffFFC000),
borderRadius: BorderRadius.circular(11)),
child: Text(
'立即兑换',
style: TextStyle(color: Color(0xFF141414), fontSize: 12.sp),
style: TextStyle(
color: Color(0xFF141414), fontSize: 12.sp),
),
),
)
@@ -1,6 +1,6 @@
import 'package:get/get.dart';
import 'package:hgmj/hj_utils/api_service/mine_service.dart';
import 'package:hgmj/tools_base/debug_log.dart';
import 'package:wydj/hj_utils/api_service/mine_service.dart';
import 'package:wydj/tools_base/debug_log.dart';
import 'package:pull_to_refresh/pull_to_refresh.dart';
import '../../../hj_model/mine/credit_record_model.dart';
@@ -21,14 +21,17 @@ class IntegralRecordLogic extends GetxController {
void loadData({int page = 1}) async {
try {
final res = await MineService.getCreditRecords(pageNumber: page, pageSize: 20);
final res =
await MineService.getCreditRecords(pageNumber: page, pageSize: 20);
if (res.isNotEmpty) {
if (page == 1) groupList.clear();
currentPage = page;
groupList.addAll(res);
}
refreshController?.refreshCompleted();
(res.length) < 20 ? refreshController?.loadNoData() : refreshController?.loadComplete();
(res.length) < 20
? refreshController?.loadNoData()
: refreshController?.loadComplete();
} catch (e) {
refreshController?.refreshCompleted();
refreshController?.loadComplete();
+28 -15
View File
@@ -1,11 +1,11 @@
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:get/get.dart';
import 'package:hgmj/assets_tool/images.dart';
import 'package:hgmj/hj_model/video_model.dart';
import 'package:hgmj/hj_utils/screen.dart';
import 'package:hgmj/tools_base/global_store/store.dart';
import 'package:hgmj/tools_base/toast.dart';
import 'package:wydj/assets_tool/images.dart';
import 'package:wydj/hj_model/video_model.dart';
import 'package:wydj/hj_utils/screen.dart';
import 'package:wydj/tools_base/global_store/store.dart';
import 'package:wydj/tools_base/toast.dart';
import 'package:provider/provider.dart';
import '../../home/widget/user_avatar.dart';
@@ -65,7 +65,8 @@ class MineInfoWidget extends StatelessWidget {
),
),
8.sizeBoxW,
if (store.isVIP && vipIcon.isNotEmpty) Image.asset(vipIcon, height: 20),
if (store.isVIP && vipIcon.isNotEmpty)
Image.asset(vipIcon, height: 20),
],
);
},
@@ -74,7 +75,8 @@ class MineInfoWidget extends StatelessWidget {
InkWell(
enableFeedback: false,
onTap: () {
Clipboard.setData(ClipboardData(text: (logic.userInfo?.uid ?? 0).toString()));
Clipboard.setData(ClipboardData(
text: (logic.userInfo?.uid ?? 0).toString()));
showToast('复制成功');
},
child: Text(
@@ -100,7 +102,9 @@ class MineInfoWidget extends StatelessWidget {
padding: EdgeInsets.symmetric(vertical: 5),
decoration: BoxDecoration(
color: Color(0xFFF68804),
borderRadius: BorderRadius.only(topLeft: Radius.circular(15), bottomLeft: Radius.circular(15))),
borderRadius: BorderRadius.only(
topLeft: Radius.circular(15),
bottomLeft: Radius.circular(15))),
margin: EdgeInsets.only(left: 30, top: 10),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
@@ -153,7 +157,8 @@ class MineTaskMenuWidget extends StatelessWidget {
final items = [
InkWell(
enableFeedback: false,
onTap: () => Get.to(() => MineChargeVipPage(), preventDuplicates: false),
onTap: () =>
Get.to(() => MineChargeVipPage(), preventDuplicates: false),
child: _buildItem("", 'mine_vip_enter.webp'.mineImgPath, 0),
),
InkWell(
@@ -227,7 +232,10 @@ class MineTaskMenuWidget extends StatelessWidget {
bottom: 10,
child: Text(
title,
style: TextStyle(fontSize: 10, color: Colors.white.withValues(alpha: .55), fontWeight: FontWeight.w400),
style: TextStyle(
fontSize: 10,
color: Colors.white.withValues(alpha: .55),
fontWeight: FontWeight.w400),
),
),
],
@@ -240,12 +248,17 @@ class MineFunchtionGridView extends StatelessWidget {
/// 处理
final functionLabels = ['历史记录', '我的购买', '我的收藏', '我的喜欢'];
final functionImgs = ['mine_collect.png', 'mine_menu_3.png', 'mine_post.png', 'mine_menu_4.png'];
final functionImgs = [
'mine_collect.png',
'mine_menu_3.png',
'mine_post.png',
'mine_menu_4.png'
];
final functions = [
() => ColHisBuyPage.to(PageType.history),
() => ColHisBuyPage.to(PageType.buy),
() => ColHisBuyPage.to(PageType.collect),
() => ColHisBuyPage.to(PageType.like),
() => ColHisBuyPage.to(PageType.history),
() => ColHisBuyPage.to(PageType.buy),
() => ColHisBuyPage.to(PageType.collect),
() => ColHisBuyPage.to(PageType.like),
];
@override
@@ -1,15 +1,15 @@
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:hgmj/assets_tool/images.dart';
import 'package:hgmj/hj_utils/api_service/mine_service.dart';
import 'package:hgmj/hj_utils/screen.dart';
import 'package:hgmj/tools_base/global_store/store.dart';
import 'package:wydj/assets_tool/images.dart';
import 'package:wydj/hj_utils/api_service/mine_service.dart';
import 'package:wydj/hj_utils/screen.dart';
import 'package:wydj/tools_base/global_store/store.dart';
import 'package:provider/provider.dart';
import 'package:qr_flutter/qr_flutter.dart';
import '../../../config/address.dart';
import '../../../config/config.dart';
import 'package:hgmj/tools_base/toast.dart';
import 'package:wydj/tools_base/toast.dart';
import '../../../hj_utils/image_util.dart';
import '../../../tools_base/widget/net_image_widget.dart';
@@ -161,7 +161,8 @@ class _MineShareQRViewState extends State<MineShareQRView> {
),
),
20.sizeBoxH,
InkWell(enableFeedback: false,
InkWell(
enableFeedback: false,
onTap: () async {
final ok = await ImageUtil.saveWidgetToAlbum(boundaryKey);
showToast(ok ? "保存成功" : "保存失败,请重试");
@@ -1,5 +1,5 @@
import 'package:flutter/material.dart';
import 'package:hgmj/tools_base/widget/net_image_widget.dart';
import 'package:wydj/tools_base/widget/net_image_widget.dart';
import '../../../hj_model/home/collection_model.dart';
+47 -21
View File
@@ -1,10 +1,10 @@
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:hgmj/assets_tool/images.dart';
import 'package:hgmj/hj_model/splash/domain_source_model.dart';
import 'package:hgmj/hj_page/main_page/provider/msg_provider.dart';
import 'package:hgmj/hj_utils/date_time_util.dart';
import 'package:hgmj/tools_base/widget/net_image_widget.dart';
import 'package:wydj/assets_tool/images.dart';
import 'package:wydj/hj_model/splash/domain_source_model.dart';
import 'package:wydj/hj_page/main_page/provider/msg_provider.dart';
import 'package:wydj/hj_utils/date_time_util.dart';
import 'package:wydj/tools_base/widget/net_image_widget.dart';
import 'package:provider/provider.dart';
import '../../../tools_base/global_store/store.dart';
@@ -55,15 +55,20 @@ class VipEntryCard extends StatelessWidget {
),
Consumer2<GlobalStore, MineMsgProvider>(
builder: (context, global, provider, child) {
final isUpgrade = global.isVIP && global.meInfo?.isUpgrade == true;
if (global.isVIP) return _vipRow(global, isUpgrade: isUpgrade);
final isUpgrade =
global.isVIP && global.meInfo?.isUpgrade == true;
if (global.isVIP)
return _vipRow(global, isUpgrade: isUpgrade);
// 倒计时态/默认态的切换跟着 tick 走,过期当帧即收起,不必等分层配置刷新回来
return ValueListenableBuilder<int>(
valueListenable: provider.tick,
builder: (_, __, ___) {
final cd = provider.countdownConfig;
if (cd != null) return _newerRow(cd);
return _titleRow(title: '开通会员 享专属特权', subtitle: '解锁专属 畅享无限', buttonText: '开通会员');
return _titleRow(
title: '开通会员 享专属特权',
subtitle: '解锁专属 畅享无限',
buttonText: '开通会员');
},
);
},
@@ -92,12 +97,17 @@ class VipEntryCard extends StatelessWidget {
child: Stack(
children: [
NetworkImageLoader(
imageUrl: config.meTab ?? "", width: 343, height: 64, fit: BoxFit.fill, borderRadius: 0),
imageUrl: config.meTab ?? "",
width: 343,
height: 64,
fit: BoxFit.fill,
borderRadius: 0),
// 倒计时块监听 tick 每秒刷新(过期自动收起)
ValueListenableBuilder<int>(
valueListenable: MineMsgProvider().tick,
builder: (_, __, ___) =>
config.hasDiscountCountdown ? _layeredCountdown(config) : const SizedBox.shrink(),
builder: (_, __, ___) => config.hasDiscountCountdown
? _layeredCountdown(config)
: const SizedBox.shrink(),
),
],
),
@@ -136,7 +146,8 @@ class VipEntryCard extends StatelessWidget {
borderRadius: BorderRadius.circular(3),
border: Border.all(color: const Color(0xffFFE381), width: 0.5),
),
child: Text(value, style: const TextStyle(color: Colors.white, fontSize: 12)),
child: Text(value,
style: const TextStyle(color: Colors.white, fontSize: 12)),
);
}
@@ -169,7 +180,8 @@ class VipEntryCard extends StatelessWidget {
}
return _titleRow(
title: '$vipTitle会员',
subtitle: '到期时间:${DateTimeUtil.utcTurnYear(global.meInfo?.vipExpireDate, char: ".")}',
subtitle:
'到期时间:${DateTimeUtil.utcTurnYear(global.meInfo?.vipExpireDate, char: ".")}',
buttonText: isUpgrade ? '补差价升级' : '会员中心',
onButtonTap: isUpgrade ? () => Get.to(() => MineChargeVipPage()) : null,
);
@@ -177,14 +189,18 @@ class VipEntryCard extends StatelessWidget {
//通用布局:标题+副标题+按钮
Widget _titleRow(
{required String title, required String subtitle, required String buttonText, VoidCallback? onButtonTap}) {
{required String title,
required String subtitle,
required String buttonText,
VoidCallback? onButtonTap}) {
return _cardRow(
left: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.center,
children: [
_goldText(title, 16),
Text(subtitle, style: TextStyle(fontSize: 10, color: Color(0xFFE9E8E7))),
Text(subtitle,
style: TextStyle(fontSize: 10, color: Color(0xFFE9E8E7))),
],
),
buttonText: buttonText,
@@ -192,7 +208,10 @@ class VipEntryCard extends StatelessWidget {
);
}
Widget _cardRow({required Widget left, required String buttonText, VoidCallback? onButtonTap}) {
Widget _cardRow(
{required Widget left,
required String buttonText,
VoidCallback? onButtonTap}) {
return Container(
padding: EdgeInsets.only(left: 60, right: 16),
alignment: Alignment.centerLeft,
@@ -208,7 +227,8 @@ class VipEntryCard extends StatelessWidget {
Widget _button(String text, {VoidCallback? onTap}) {
return GestureDetector(
onTap: onTap,
behavior: onTap != null ? HitTestBehavior.opaque : HitTestBehavior.translucent,
behavior:
onTap != null ? HitTestBehavior.opaque : HitTestBehavior.translucent,
child: Container(
alignment: Alignment.center,
height: 26,
@@ -222,7 +242,10 @@ class VipEntryCard extends StatelessWidget {
),
child: Text(
text,
style: TextStyle(fontSize: 10, color: Color(0xFF000000), fontWeight: FontWeight.w600),
style: TextStyle(
fontSize: 10,
color: Color(0xFF000000),
fontWeight: FontWeight.w600),
),
),
);
@@ -235,7 +258,8 @@ class VipEntryCard extends StatelessWidget {
colors: [Color(0xffFAE6D2), Color(0xffFFFFFF)],
).createShader(bounds),
blendMode: BlendMode.srcIn,
child: Text(text, style: TextStyle(fontSize: fontSize, fontWeight: FontWeight.w600)),
child: Text(text,
style: TextStyle(fontSize: fontSize, fontWeight: FontWeight.w600)),
);
}
@@ -259,8 +283,10 @@ class VipEntryCard extends StatelessWidget {
Widget _timeUnit(String val) => Padding(
padding: EdgeInsets.symmetric(horizontal: 2),
child: Text(val, style: TextStyle(fontSize: 12, color: Color(0xFFFF844D))),
child:
Text(val, style: TextStyle(fontSize: 12, color: Color(0xFFFF844D))),
);
Widget _timeColon() => Text(":", style: TextStyle(fontSize: 10, color: Color(0xFFFF844D)));
Widget _timeColon() =>
Text(":", style: TextStyle(fontSize: 10, color: Color(0xFFFF844D)));
}