feat: custom page transition

Closes #682

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2025-04-15 11:36:17 +08:00
parent d9c2f6bf91
commit 5643ebfe48
3 changed files with 34 additions and 1 deletions

View File

@@ -177,6 +177,32 @@ List<SettingsModel> get styleSettings => [
Get.forceAppUpdate();
},
),
SettingsModel(
settingsType: SettingsType.normal,
title: '页面过渡动画',
leading: const Icon(Icons.animation),
getSubtitle: () => '当前:${GStorage.pageTransition.name}',
onTap: (setState) async {
Transition? result = await showDialog(
context: Get.context!,
builder: (context) {
return SelectDialog<Transition>(
title: '页面过渡动画',
value: GStorage.pageTransition,
values: Transition.values.map((e) {
return (e, e.name);
}).toList(),
);
},
);
if (result != null) {
await GStorage.setting
.put(SettingBoxKey.pageTransition, result.index);
SmartDialog.showToast('重启生效');
setState();
}
},
),
SettingsModel(
settingsType: SettingsType.sw1tch,
title: 'MD3样式底栏',

View File

@@ -10,6 +10,7 @@ import 'package:PiliPlus/pages/video/detail/introduction/widgets/create_fav_page
import 'package:PiliPlus/pages/video/detail/view_v.dart';
import 'package:PiliPlus/pages/webdav/view.dart';
import 'package:PiliPlus/pages/webview/webview_page.dart';
import 'package:PiliPlus/utils/storage.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:PiliPlus/pages/msg_feed_top/at_me/view.dart';
@@ -192,7 +193,7 @@ class CustomGetPage extends GetPage<dynamic> {
super.transitionDuration,
}) : super(
curve: Curves.linear,
transition: Transition.native,
transition: GStorage.pageTransition,
showCupertinoParallax: false,
popGesture: false,
fullscreenDialog: fullscreen,

View File

@@ -29,6 +29,7 @@ import 'package:PiliPlus/utils/login.dart';
import 'package:PiliPlus/utils/set_int_adapter.dart';
import 'package:cookie_jar/cookie_jar.dart';
import 'package:flutter/material.dart';
import 'package:get/get_navigation/src/routes/transitions_type.dart';
import 'package:hive_flutter/hive_flutter.dart';
import 'package:path_provider/path_provider.dart';
import 'package:PiliPlus/models/model_owner.dart';
@@ -471,6 +472,10 @@ class GStorage {
static bool get showPgcTimeline =>
GStorage.setting.get(SettingBoxKey.showPgcTimeline, defaultValue: true);
static Transition pageTransition = Transition.values[GStorage.setting.get(
SettingBoxKey.pageTransition,
defaultValue: Transition.native.index)];
static List<double> get dynamicDetailRatio => List<double>.from(setting
.get(SettingBoxKey.dynamicDetailRatio, defaultValue: [60.0, 40.0]));
@@ -759,6 +764,7 @@ class SettingBoxKey {
recordSearchHistory = 'recordSearchHistory',
navSearchStreamDebounce = 'navSearchStreamDebounce',
showPgcTimeline = 'showPgcTimeline',
pageTransition = 'pageTransition',
// WebDAV
webdavUri = 'webdavUri',