Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2025-12-16 16:28:13 +08:00
parent 0baf3fcd36
commit 348a9e014e
10 changed files with 50 additions and 32 deletions

View File

@@ -12,6 +12,7 @@ import 'package:PiliPlus/models_new/dynamic/dyn_topic_top/top_details.dart';
import 'package:PiliPlus/pages/dynamics/widgets/dynamic_panel.dart'; import 'package:PiliPlus/pages/dynamics/widgets/dynamic_panel.dart';
import 'package:PiliPlus/pages/dynamics_create/view.dart'; import 'package:PiliPlus/pages/dynamics_create/view.dart';
import 'package:PiliPlus/pages/dynamics_topic/controller.dart'; import 'package:PiliPlus/pages/dynamics_topic/controller.dart';
import 'package:PiliPlus/utils/extension/theme_ext.dart';
import 'package:PiliPlus/utils/global_data.dart'; import 'package:PiliPlus/utils/global_data.dart';
import 'package:PiliPlus/utils/num_utils.dart'; import 'package:PiliPlus/utils/num_utils.dart';
import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart';
@@ -325,9 +326,8 @@ class _DynTopicPageState extends State<DynTopicPage> with DynMixin {
SmartDialog.showToast('账号未登录'); SmartDialog.showToast('账号未登录');
return; return;
} }
final isDark = Get.isDarkMode;
PageUtils.inAppWebview( PageUtils.inAppWebview(
'https://www.bilibili.com/h5/topic-active/topic-report?topic_id=${_controller.topicId}&topic_name=${_controller.topicName}&native.theme=${isDark ? 2 : 1}&night=${isDark ? 1 : 0}', 'https://www.bilibili.com/h5/topic-active/topic-report?topic_id=${_controller.topicId}&topic_name=${_controller.topicName}&${Utils.themeUrl(theme.colorScheme.isDark)}',
); );
}, },
), ),

View File

@@ -8,6 +8,8 @@ import 'package:PiliPlus/models/common/image_type.dart';
import 'package:PiliPlus/models_new/emote/emote.dart'; import 'package:PiliPlus/models_new/emote/emote.dart';
import 'package:PiliPlus/models_new/emote/package.dart'; import 'package:PiliPlus/models_new/emote/package.dart';
import 'package:PiliPlus/pages/emote/controller.dart'; import 'package:PiliPlus/pages/emote/controller.dart';
import 'package:PiliPlus/utils/extension/theme_ext.dart';
import 'package:PiliPlus/utils/utils.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
@@ -175,16 +177,13 @@ class _EmotePanelState extends State<EmotePanel>
iconSize: 20, iconSize: 20,
iconColor: theme.colorScheme.onSurfaceVariant iconColor: theme.colorScheme.onSurfaceVariant
.withValues(alpha: 0.8), .withValues(alpha: 0.8),
onPressed: () { onPressed: () => Get.toNamed(
final isDark = Get.isDarkMode; '/webview',
Get.toNamed( parameters: {
'/webview', 'url':
parameters: { 'https://www.bilibili.com/h5/mall/emoji-package/home?navhide=1&${Utils.themeUrl(theme.colorScheme.isDark)}',
'url': },
'https://www.bilibili.com/h5/mall/emoji-package/home?navhide=1&native.theme=${isDark ? 2 : 1}&night=${isDark ? 1 : 0}', ),
},
);
},
icon: const Icon(Icons.settings), icon: const Icon(Icons.settings),
), ),
), ),

View File

@@ -87,7 +87,9 @@ class FollowItem extends StatelessWidget {
callback: callback, callback: callback,
), ),
style: FilledButton.styleFrom( style: FilledButton.styleFrom(
padding: const EdgeInsets.fromLTRB(15, 0, 15, 0), visualDensity: .compact,
tapTargetSize: .shrinkWrap,
padding: const .symmetric(horizontal: 15),
foregroundColor: item.attribute == -1 foregroundColor: item.attribute == -1
? null ? null
: colorScheme.outline, : colorScheme.outline,

View File

@@ -21,6 +21,7 @@ import 'package:PiliPlus/utils/extension/theme_ext.dart';
import 'package:PiliPlus/utils/grid.dart'; import 'package:PiliPlus/utils/grid.dart';
import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart';
import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/platform_utils.dart';
import 'package:PiliPlus/utils/utils.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
@@ -132,17 +133,14 @@ class _LivePageState extends CommonPageState<LivePage, LiveController>
context: context, context: context,
tooltip: '游戏赛事', tooltip: '游戏赛事',
icon: const Icon(Icons.gamepad), icon: const Icon(Icons.gamepad),
onPressed: () { onPressed: () => Get.toNamed(
final isDark = theme.brightness.isDark; '/webview',
Get.toNamed( parameters: {
'/webview', 'uaType': 'mob',
parameters: { 'url':
'uaType': 'mob', 'https://www.bilibili.com/h5/match/data/home?navhide=1&${Utils.themeUrl(theme.brightness.isDark)}',
'url': },
'https://www.bilibili.com/h5/match/data/home?navhide=1&native.theme=${isDark ? 2 : 1}&night=${isDark ? 1 : 0}', ),
},
);
},
), ),
const SizedBox(width: 8), const SizedBox(width: 8),
iconButton( iconButton(

View File

@@ -520,13 +520,14 @@ class _LiveRoomPageState extends State<LiveRoomPage>
type: ImageType.avatar, type: ImageType.avatar,
src: roomInfoH5.anchorInfo!.baseInfo!.face, src: roomInfoH5.anchorInfo!.baseInfo!.face,
), ),
Expanded( Flexible(
child: Column( child: Column(
spacing: 1, spacing: 1,
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Row( Row(
spacing: 10, spacing: 10,
mainAxisSize: .min,
crossAxisAlignment: CrossAxisAlignment.end, crossAxisAlignment: CrossAxisAlignment.end,
children: [ children: [
Flexible( Flexible(
@@ -543,6 +544,7 @@ class _LiveRoomPageState extends State<LiveRoomPage>
), ),
Row( Row(
spacing: 10, spacing: 10,
mainAxisSize: .min,
children: [ children: [
_liveRoomController.watchedWidget, _liveRoomController.watchedWidget,
_liveRoomController.timeWidget, _liveRoomController.timeWidget,

View File

@@ -5,7 +5,9 @@ import 'package:PiliPlus/grpc/bilibili/app/im/v1.pb.dart';
import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/http/loading_state.dart';
import 'package:PiliPlus/pages/whisper/controller.dart'; import 'package:PiliPlus/pages/whisper/controller.dart';
import 'package:PiliPlus/pages/whisper/widgets/item.dart'; import 'package:PiliPlus/pages/whisper/widgets/item.dart';
import 'package:PiliPlus/utils/extension/theme_ext.dart';
import 'package:PiliPlus/utils/extension/three_dot_ext.dart'; import 'package:PiliPlus/utils/extension/three_dot_ext.dart';
import 'package:PiliPlus/utils/utils.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
@@ -22,16 +24,29 @@ class _WhisperPageState extends State<WhisperPage> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final theme = Theme.of(context);
final padding = MediaQuery.viewPaddingOf(context); final padding = MediaQuery.viewPaddingOf(context);
return Scaffold( return Scaffold(
resizeToAvoidBottomInset: false, resizeToAvoidBottomInset: false,
appBar: AppBar( appBar: AppBar(
title: const Text('消息'), title: const Text('消息'),
actions: [ actions: [
IconButton(
tooltip: '新增粉丝',
onPressed: () => Get.toNamed(
'/webview',
parameters: {
'url':
'https://www.bilibili.com/h5/follow/newFans?navhide=1&${Utils.themeUrl(theme.colorScheme.isDark)}',
},
),
icon: const Icon(Icons.account_circle_outlined),
),
Obx(() { Obx(() {
final outsideItem = _controller.outsideItem.value; final outsideItem = _controller.outsideItem.value;
if (outsideItem != null && outsideItem.isNotEmpty) { if (outsideItem != null && outsideItem.isNotEmpty) {
return Row( return Row(
mainAxisSize: .min,
children: outsideItem.map((e) { children: outsideItem.map((e) {
return IconButton( return IconButton(
tooltip: e.hasTitle() ? e.title : null, tooltip: e.hasTitle() ? e.title : null,
@@ -74,6 +89,7 @@ class _WhisperPageState extends State<WhisperPage> {
} }
return const SizedBox.shrink(); return const SizedBox.shrink();
}), }),
const SizedBox(width: 5),
], ],
), ),
body: refreshIndicator( body: refreshIndicator(
@@ -81,7 +97,7 @@ class _WhisperPageState extends State<WhisperPage> {
child: CustomScrollView( child: CustomScrollView(
physics: const AlwaysScrollableScrollPhysics(), physics: const AlwaysScrollableScrollPhysics(),
slivers: [ slivers: [
_buildTopItems(padding), _buildTopItems(theme, padding),
SliverPadding( SliverPadding(
padding: EdgeInsets.only(bottom: padding.bottom + 100), padding: EdgeInsets.only(bottom: padding.bottom + 100),
sliver: Obx(() => _buildBody(_controller.loadingState.value)), sliver: Obx(() => _buildBody(_controller.loadingState.value)),
@@ -133,8 +149,7 @@ class _WhisperPageState extends State<WhisperPage> {
}; };
} }
Widget _buildTopItems(EdgeInsets padding) { Widget _buildTopItems(ThemeData theme, EdgeInsets padding) {
final ThemeData theme = Theme.of(context);
return SliverPadding( return SliverPadding(
padding: EdgeInsets.only(left: padding.left, right: padding.right), padding: EdgeInsets.only(left: padding.left, right: padding.right),
sliver: SliverToBoxAdapter( sliver: SliverToBoxAdapter(

View File

@@ -6,7 +6,6 @@ import 'package:PiliPlus/http/loading_state.dart';
import 'package:PiliPlus/pages/whisper/widgets/item.dart'; import 'package:PiliPlus/pages/whisper/widgets/item.dart';
import 'package:PiliPlus/pages/whisper_secondary/controller.dart'; import 'package:PiliPlus/pages/whisper_secondary/controller.dart';
import 'package:PiliPlus/utils/extension/three_dot_ext.dart'; import 'package:PiliPlus/utils/extension/three_dot_ext.dart';
import 'package:PiliPlus/utils/extension/widget_ext.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
@@ -79,7 +78,7 @@ class _WhisperSecPageState extends State<WhisperSecPage> {
), ),
], ],
), ),
).constraintWidth(), ),
); );
} }

View File

@@ -123,7 +123,7 @@ class ReplyUtils {
'/webview', '/webview',
parameters: { parameters: {
'url': 'url':
'https://www.bilibili.com/h5/comment/appeal?native.theme=2&night=${Get.isDarkMode ? 1 : 0}', 'https://www.bilibili.com/h5/comment/appeal?${Utils.themeUrl(Get.isDarkMode)}',
}, },
); );
}, },

View File

@@ -337,7 +337,7 @@ abstract final class RequestUtils {
'/webview', '/webview',
parameters: { parameters: {
'url': 'url':
'https://www.bilibili.com/h5/comment/appeal?native.theme=2&night=${Get.isDarkMode ? 1 : 0}', 'https://www.bilibili.com/h5/comment/appeal?${Utils.themeUrl(Get.isDarkMode)}',
}, },
); );
}, },

View File

@@ -21,6 +21,9 @@ abstract class Utils {
static const jsonEncoder = JsonEncoder.withIndent(' '); static const jsonEncoder = JsonEncoder.withIndent(' ');
static String themeUrl(bool isDark) =>
'native.theme=${isDark ? 2 : 1}&night=${isDark ? 1 : 0}';
static Future<void> saveBytes2File({ static Future<void> saveBytes2File({
required String name, required String name,
required Uint8List bytes, required Uint8List bytes,