feat: custom grpc reply (#25)

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2024-11-29 22:03:02 +08:00
committed by GitHub
parent 9b9e28dcb8
commit be4dfd99c6
28 changed files with 637 additions and 400 deletions

View File

@@ -1,6 +1,7 @@
import 'package:PiliPalaX/pages/main/controller.dart';
import 'package:PiliPalaX/pages/member/new/controller.dart'
show MemberTabType, MemberTabTypeExt;
import 'package:PiliPalaX/utils/global_data.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:get/get.dart';
@@ -152,7 +153,7 @@ class _ExtraSettingState extends State<ExtraSetting> {
leading: Icon(Icons.notifications_none),
setKey: SettingBoxKey.checkDynamic,
defaultVal: true,
callFn: (value) {
onChanged: (value) {
Get.find<MainController>().checkDynamic = value;
},
onTap: () {
@@ -201,6 +202,16 @@ class _ExtraSettingState extends State<ExtraSetting> {
);
},
),
SetSwitchItem(
title: '使用gRPC加载评论',
subTitle: '如无法加载评论,可关闭\n非gRPC楼中楼无法定位评论、按热度/时间排序、查看对话',
leading: Icon(Icons.reply),
setKey: SettingBoxKey.grpcReply,
defaultVal: true,
onChanged: (value) {
GlobalData().grpcReply = value;
},
),
Obx(
() => ListTile(
enableFeedback: true,
@@ -238,7 +249,7 @@ class _ExtraSettingState extends State<ExtraSetting> {
leading: const Icon(Icons.whatshot_outlined),
setKey: SettingBoxKey.enableSearchWord,
defaultVal: true,
callFn: (val) {
onChanged: (val) {
Get.find<HomeController>().defaultSearch.value = '';
},
),

View File

@@ -225,7 +225,7 @@ class _PlaySpeedPageState extends State<PlaySpeedPage> {
subTitle: '根据默认倍速长按时自动双倍',
setKey: SettingBoxKey.enableAutoLongPressSpeed,
defaultVal: enableAutoLongPressSpeed,
callFn: (val) {
onChanged: (val) {
Map newItem = sheetMenu[1];
val ? newItem['show'] = false : newItem['show'] = true;
setState(() {

View File

@@ -159,7 +159,7 @@ class _PlaySettingState extends State<PlaySetting> {
leading: const Icon(Icons.picture_in_picture_outlined),
setKey: SettingBoxKey.autoPiP,
defaultVal: false,
callFn: (val) {
onChanged: (val) {
if (val &&
!setting.get(SettingBoxKey.enableBackgroundPlay,
defaultValue: true)) {

View File

@@ -231,7 +231,7 @@ class _RecommendSettingState extends State<RecommendSetting> {
leading: const Icon(Icons.favorite_border_outlined),
setKey: SettingBoxKey.exemptFilterForFollowed,
defaultVal: true,
callFn: (_) => {RecommendFilter.update},
onChanged: (_) => {RecommendFilter.update},
),
// ListTile(
// dense: false,
@@ -267,7 +267,7 @@ class _RecommendSettingState extends State<RecommendSetting> {
leading: const Icon(Icons.explore_outlined),
setKey: SettingBoxKey.applyFilterToRelatedVideos,
defaultVal: true,
callFn: (_) => {RecommendFilter.update},
onChanged: (_) => {RecommendFilter.update},
),
ListTile(
dense: true,

View File

@@ -64,7 +64,7 @@ class _StyleSettingState extends State<StyleSetting> {
leading: const Icon(Icons.phonelink_outlined),
setKey: SettingBoxKey.horizontalScreen,
defaultVal: false,
callFn: (value) {
onChanged: (value) {
if (value) {
autoScreen();
// SmartDialog.showToast('已开启横屏适配');

View File

@@ -1,6 +1,5 @@
import 'package:flutter/material.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:hive/hive.dart';
import 'package:PiliPalaX/utils/storage.dart';
class SetSwitchItem extends StatefulWidget {
@@ -8,7 +7,7 @@ class SetSwitchItem extends StatefulWidget {
final String? subTitle;
final String? setKey;
final bool? defaultVal;
final Function? callFn;
final ValueChanged<bool>? onChanged;
final bool? needReboot;
final Widget? leading;
final GestureTapCallback? onTap;
@@ -18,7 +17,7 @@ class SetSwitchItem extends StatefulWidget {
this.subTitle,
this.setKey,
this.defaultVal,
this.callFn,
this.onChanged,
this.needReboot,
this.leading,
this.onTap,
@@ -30,24 +29,23 @@ class SetSwitchItem extends StatefulWidget {
}
class _SetSwitchItemState extends State<SetSwitchItem> {
// ignore: non_constant_identifier_names
Box Setting = GStorage.setting;
late bool val;
@override
void initState() {
super.initState();
val = Setting.get(widget.setKey, defaultValue: widget.defaultVal ?? false);
val = GStorage.setting
.get(widget.setKey, defaultValue: widget.defaultVal ?? false);
}
void switchChange(value) async {
val = value ?? !val;
await Setting.put(widget.setKey, val);
await GStorage.setting.put(widget.setKey, val);
// if (widget.setKey == SettingBoxKey.autoUpdate && value == true) {
// Utils.checkUpdate();
// }
if (widget.callFn != null) {
widget.callFn!.call(val);
if (widget.onChanged != null) {
widget.onChanged!.call(val);
}
if (widget.needReboot != null && widget.needReboot!) {
SmartDialog.showToast('重启生效');
@@ -87,7 +85,7 @@ class _SetSwitchItemState extends State<SetSwitchItem> {
return null; // All other states will use the default thumbIcon.
}),
value: val,
onChanged: (val) => switchChange(val),
onChanged: switchChange,
),
),
);