logo和名称替换
This commit is contained in:
@@ -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();
|
||||
|
||||
@@ -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';
|
||||
|
||||
|
||||
@@ -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)));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user