diff --git a/lib/pages/member/controller.dart b/lib/pages/member/controller.dart index dda1cf4c..ce8464af 100644 --- a/lib/pages/member/controller.dart +++ b/lib/pages/member/controller.dart @@ -6,6 +6,7 @@ import 'package:PiliPlus/http/user.dart'; import 'package:PiliPlus/http/video.dart'; import 'package:PiliPlus/models/common/member/tab_type.dart'; import 'package:PiliPlus/models_new/space/space/data.dart'; +import 'package:PiliPlus/models_new/space/space/setting.dart'; import 'package:PiliPlus/models_new/space/space/tab2.dart'; import 'package:PiliPlus/pages/common/common_data_controller.dart'; import 'package:PiliPlus/services/account_service.dart'; @@ -36,6 +37,7 @@ class MemberController extends CommonDataController RxInt relation = 0.obs; bool get isFollow => relation.value != 0 && relation.value != 128; + SpaceSetting? spaceSetting; List? tab2; late List tabs; TabController? tabController; @@ -122,6 +124,9 @@ class MemberController extends CommonDataController ); } } + if (mid == accountService.mid) { + spaceSetting = data.setting; + } loadingState.value = response; return true; } diff --git a/lib/pages/member_home/view.dart b/lib/pages/member_home/view.dart index 75bd6966..bc0f0c43 100644 --- a/lib/pages/member_home/view.dart +++ b/lib/pages/member_home/view.dart @@ -43,6 +43,8 @@ class _MemberHomeState extends State Widget _buildBody(LoadingState loadingState) { final isVertical = context.orientation == Orientation.portrait; + final setting = _ctr.spaceSetting; + final color = Theme.of(context).colorScheme.outline; return switch (loadingState) { Loading() => loadingWidget, Success(response: final res) => res != null @@ -50,6 +52,7 @@ class _MemberHomeState extends State slivers: [ if (res.archive?.item?.isNotEmpty == true) ...[ _videoHeader( + color, title: '视频', param: 'contribute', param1: 'video', @@ -82,9 +85,11 @@ class _MemberHomeState extends State ], if (res.favourite2?.item?.isNotEmpty == true) ...[ _videoHeader( + color, title: '收藏', param: 'favorite', count: res.favourite2!.count!, + visible: setting?.favVideo == 1, ), SliverToBoxAdapter( child: SizedBox( @@ -97,9 +102,11 @@ class _MemberHomeState extends State ], if (res.coinArchive?.item?.isNotEmpty == true) ...[ _videoHeader( + color, title: '最近投币的视频', param: 'coinArchive', count: res.coinArchive!.count!, + visible: setting?.coinsVideo == 1, ), SliverPadding( padding: const EdgeInsets.symmetric( @@ -128,9 +135,11 @@ class _MemberHomeState extends State ], if (res.likeArchive?.item?.isNotEmpty == true) ...[ _videoHeader( + color, title: '最近点赞的视频', param: 'likeArchive', count: res.likeArchive!.count!, + visible: setting?.likesVideo == 1, ), SliverPadding( padding: const EdgeInsets.symmetric( @@ -159,6 +168,7 @@ class _MemberHomeState extends State ], if (res.article?.item?.isNotEmpty == true) ...[ _videoHeader( + color, title: '图文', param: 'contribute', param1: 'opus', @@ -178,6 +188,7 @@ class _MemberHomeState extends State ], if (res.audios?.item?.isNotEmpty == true) ...[ _videoHeader( + color, title: '音频', param: 'contribute', param1: 'audio', @@ -187,9 +198,11 @@ class _MemberHomeState extends State ], if (res.season?.item?.isNotEmpty == true) ...[ _videoHeader( + color, title: '追番', param: 'bangumi', count: res.season!.count!, + visible: setting?.bangumi == 1, ), SliverPadding( padding: const EdgeInsets.symmetric( @@ -228,13 +241,14 @@ class _MemberHomeState extends State }; } - Widget _videoHeader({ + Widget _videoHeader( + Color color, { required String title, required String param, String? param1, required int count, + bool? visible, }) { - final color = Theme.of(context).colorScheme.outline; return SliverToBoxAdapter( child: Padding( padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12), @@ -249,6 +263,20 @@ class _MemberHomeState extends State text: count.toString(), style: TextStyle(fontSize: 13, color: color), ), + if (visible != null) + WidgetSpan( + alignment: PlaceholderAlignment.middle, + child: Padding( + padding: const EdgeInsets.only(left: 10), + child: Icon( + visible == true + ? Icons.visibility + : Icons.visibility_off, + size: 17, + color: color, + ), + ), + ), ], ), ), diff --git a/lib/pages/mine/controller.dart b/lib/pages/mine/controller.dart index 549f0be9..d84e253d 100644 --- a/lib/pages/mine/controller.dart +++ b/lib/pages/mine/controller.dart @@ -92,6 +92,7 @@ class MineController extends GetxController { } anonymity.value = !anonymity.value; if (anonymity.value) { + SmartDialog.dismiss(); SmartDialog.show( clickMaskDismiss: false, usePenetrate: true, @@ -99,8 +100,10 @@ class MineController extends GetxController { alignment: Alignment.bottomCenter, builder: (context) { final theme = Theme.of(context); + final style = + TextStyle(color: theme.colorScheme.onSecondaryContainer); return ColoredBox( - color: theme.colorScheme.primaryContainer, + color: theme.colorScheme.secondaryContainer, child: Padding( padding: EdgeInsets.only( top: 15, @@ -110,47 +113,40 @@ class MineController extends GetxController { ), child: Column( mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( children: [ - const Icon(MdiIcons.incognito), + const Icon(MdiIcons.incognito, size: 20), const SizedBox(width: 10), Text('已进入无痕模式', style: theme.textTheme.titleMedium) ], ), const SizedBox(height: 10), Text( - '搜索、观看视频/直播不携带身份信息(包含大会员)\n' - '不产生查询或播放记录\n' - '点赞等其它操作不受影响\n' - '(前往隐私设置了解详情)', - style: theme.textTheme.bodySmall), + '搜索、观看视频/直播不携带身份信息(包含大会员)\n' + '不产生查询或播放记录\n' + '点赞等其它操作不受影响\n' + '(前往隐私设置了解详情)', + style: theme.textTheme.bodySmall, + ), Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ TextButton( - onPressed: () { - SmartDialog.dismiss(result: true); - SmartDialog.showToast('已设为永久无痕模式'); - }, - child: Text( - '保存为永久', - style: TextStyle( - color: theme.colorScheme.primary, - ), - )), + onPressed: () { + SmartDialog.dismiss(result: true); + SmartDialog.showToast('已设为永久无痕模式'); + }, + child: Text('保存为永久', style: style), + ), const SizedBox(width: 10), TextButton( onPressed: () { SmartDialog.dismiss(); SmartDialog.showToast('已设为临时无痕模式'); }, - child: Text( - '仅本次(默认)', - style: TextStyle( - color: theme.colorScheme.primary, - ), - ), + child: Text('仅本次(默认)', style: style), ), ], ), @@ -160,12 +156,16 @@ class MineController extends GetxController { ); }, ).then((res) { + if (res == false) { + return; + } res == true ? Accounts.set(AccountType.heartbeat, AnonymousAccount()) : Accounts.accountMode[AccountType.heartbeat] = AnonymousAccount(); }); } else { Accounts.set(AccountType.heartbeat, Accounts.main); + SmartDialog.dismiss(result: false); SmartDialog.show( clickMaskDismiss: false, usePenetrate: true, @@ -185,7 +185,7 @@ class MineController extends GetxController { child: Row( mainAxisAlignment: MainAxisAlignment.start, children: [ - const Icon(MdiIcons.incognitoOff), + const Icon(MdiIcons.incognitoOff, size: 20), const SizedBox(width: 10), Text('已退出无痕模式', style: theme.textTheme.titleMedium), ], diff --git a/lib/utils/theme_utils.dart b/lib/utils/theme_utils.dart index 69599c7e..4ec7ae59 100644 --- a/lib/utils/theme_utils.dart +++ b/lib/utils/theme_utils.dart @@ -59,7 +59,7 @@ class ThemeUtils { actionTextColor: colorScheme.primary, backgroundColor: colorScheme.secondaryContainer, closeIconColor: colorScheme.secondary, - contentTextStyle: TextStyle(color: colorScheme.secondary), + contentTextStyle: TextStyle(color: colorScheme.onSecondaryContainer), elevation: 20, ), popupMenuTheme: PopupMenuThemeData(