Files
PiliPlus/lib/pages/setting/models/privacy_settings.dart
My-Responsitories 890dc58dc3 refa: settings model (#1773)
* opt: MediaQuery

* refa: settings model
2025-12-10 16:41:31 +08:00

78 lines
2.4 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import 'package:PiliPlus/models/common/account_type.dart';
import 'package:PiliPlus/pages/mine/controller.dart';
import 'package:PiliPlus/pages/setting/models/model.dart';
import 'package:PiliPlus/utils/accounts.dart';
import 'package:PiliPlus/utils/accounts/account_manager/account_mgr.dart';
import 'package:flutter/material.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart';
List<SettingsModel> get privacySettings => [
NormalModel(
onTap: (context, setState) {
if (!Accounts.main.isLogin) {
SmartDialog.showToast('登录后查看');
return;
}
Get.toNamed('/blackListPage');
},
title: '黑名单管理',
subtitle: '已拉黑用户',
leading: const Icon(Icons.block),
),
NormalModel(
onTap: (context, setState) {
MineController.onChangeAnonymity();
setState();
},
leading: const Icon(Icons.privacy_tip_outlined),
getTitle: () => MineController.anonymity.value ? '退出无痕模式' : '进入无痕模式',
getSubtitle: () => MineController.anonymity.value
? '已进入无痕模式,搜索、观看视频/直播不携带Cookie与CSRF其余操作不受影响'
: '未开启无痕模式,将使用账户信息提供完整服务',
),
NormalModel(
onTap: (context, setState) {
showDialog(
context: context,
builder: (context) {
return AlertDialog(
title: const Text('账号模式详情'),
content: SingleChildScrollView(
child: _getAccountDetail(context),
),
actions: [
TextButton(
onPressed: Get.back,
child: const Text('确认'),
),
],
);
},
);
},
leading: const Icon(Icons.flag_outlined),
title: '了解账号模式',
subtitle: '查看各个账号模式作用的API列表',
),
];
Widget _getAccountDetail(BuildContext context) {
final slivers = <Widget>[];
final theme = TextTheme.of(context);
for (var i in AccountType.values) {
final url = AccountManager.apiTypeSet[i];
if (url == null) continue;
slivers
..add(Center(child: Text(i.title, style: theme.titleMedium)))
..add(SelectableText(url.join('\n')));
}
return Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
spacing: 8,
children: slivers,
);
}