diff --git a/.github/workflows/Release.yml b/.github/workflows/Release.yml index 524e436..01377aa 100644 --- a/.github/workflows/Release.yml +++ b/.github/workflows/Release.yml @@ -250,6 +250,7 @@ jobs: gsed -i "s/filesystem_picker: ^3.0.0-beta.1/filesystem_picker: 2.0.0/g" pubspec.yaml gsed -i "s/file_picker: ^5.2.1/file_picker: 4.6.1/g" pubspec.yaml gsed -i "s/multi_select_flutter: ^4.0.0/multi_select_flutter: 4.1.2/g" pubspec.yaml + gsed -i "s/multi_select_flutter: ^4.0.0/multi_select_flutter: 4.1.2/g" pubspec.yaml flutter pub get - name: Build (windows) diff --git a/lib/basic/Method.dart b/lib/basic/Method.dart index 752db7f..7d12c99 100644 --- a/lib/basic/Method.dart +++ b/lib/basic/Method.dart @@ -59,6 +59,14 @@ class Method { return await _flatInvoke("setImageSwitchAddress", switchAddress); } + Future getUseApiClientLoadImage() async { + return await _flatInvoke("getUseApiClientLoadImage", ""); + } + + Future setUseApiClientLoadImage(String switchAddress) async { + return await _flatInvoke("setUseApiClientLoadImage", switchAddress); + } + /// 获取代理 Future getProxy() async { return await _flatInvoke("getProxy", ""); diff --git a/lib/basic/config/Address.dart b/lib/basic/config/Address.dart index 40bd863..1f214fd 100644 --- a/lib/basic/config/Address.dart +++ b/lib/basic/config/Address.dart @@ -11,9 +11,14 @@ import '../Method.dart'; var _addresses = { "0": "不分流", - "1": "分流1 (推荐)", + "1": "分流1", "2": "分流2", - "3": "分流3", + "3": "分流3 (推荐)", + "4": "分流4", + "5": "分流5", + "6": "分流6", + "7": "分流7", + "8": "分流8", }; late String _currentAddress; diff --git a/lib/basic/config/ImageAddress.dart b/lib/basic/config/ImageAddress.dart index 63de473..af15398 100644 --- a/lib/basic/config/ImageAddress.dart +++ b/lib/basic/config/ImageAddress.dart @@ -3,12 +3,13 @@ import 'package:flutter/material.dart'; import '../Method.dart'; var _imageAddresses = { - "-3": "CDN-3", - "-2": "CDN-2", - "-1": "CDN-1", "0": "不分流", - "1": "分流1", + "1": "分流1 (推荐)", "2": "分流2", + "3": "分流3", + "4": "分流4", + "5": "分流5", + "6": "分流6", }; late String _currentImageAddress; diff --git a/lib/basic/config/UseApiLoadImage.dart b/lib/basic/config/UseApiLoadImage.dart new file mode 100644 index 0000000..badd191 --- /dev/null +++ b/lib/basic/config/UseApiLoadImage.dart @@ -0,0 +1,60 @@ +import 'package:flutter/material.dart'; + +import '../Method.dart'; + +var _useApiLoadImages = { + "false": "否", + "true": "是", +}; + +late String _currentUseApiLoadImage; + +Future initUseApiLoadImage() async { + _currentUseApiLoadImage = await method.getUseApiClientLoadImage(); +} + +int currentUseApiLoadImage() { + return int.parse(_currentUseApiLoadImage); +} + +String currentUseApiLoadImageName() => _useApiLoadImages[_currentUseApiLoadImage] ?? ""; + +Future chooseUseApiLoadImage(BuildContext context) async { + String? choose = await showDialog( + context: context, + builder: (BuildContext context) { + return SimpleDialog( + title: const Text('用API加载图片'), + children: [ + ..._useApiLoadImages.entries.map( + (e) => SimpleDialogOption( + child: Text(e.value), + onPressed: () { + Navigator.of(context).pop(e.key); + }, + ), + ), + ], + ); + }, + ); + if (choose != null) { + await method.setUseApiClientLoadImage(choose); + _currentUseApiLoadImage = choose; + } +} + +Widget useApiLoadImageSetting() { + return StatefulBuilder( + builder: (BuildContext context, void Function(void Function()) setState) { + return ListTile( + title: const Text("用API加载图片"), + subtitle: Text(currentUseApiLoadImageName()), + onTap: () async { + await chooseUseApiLoadImage(context); + setState(() {}); + }, + ); + }, + ); +} diff --git a/lib/screens/InitScreen.dart b/lib/screens/InitScreen.dart index 7e0b436..a692b37 100644 --- a/lib/screens/InitScreen.dart +++ b/lib/screens/InitScreen.dart @@ -31,6 +31,7 @@ import 'package:pikapika/basic/config/Themes.dart'; import 'package:pikapika/basic/Method.dart'; import 'package:pikapika/basic/config/ListLayout.dart'; import 'package:pikapika/basic/config/TimeOffsetHour.dart'; +import 'package:pikapika/basic/config/UseApiLoadImage.dart'; import 'package:pikapika/basic/config/UsingRightClickPop.dart'; import 'package:pikapika/basic/config/Version.dart'; import 'package:pikapika/basic/config/VolumeController.dart'; @@ -107,6 +108,7 @@ class _InitScreenState extends State { await initWillPopNotice(); await initShowCommentAtDownload(); await initDownloadCachePath(); + await initUseApiLoadImage(); String? initUrl; if (Platform.isAndroid || Platform.isIOS) { diff --git a/lib/screens/components/NetworkSetting.dart b/lib/screens/components/NetworkSetting.dart index 5a5e7f6..bff8c63 100644 --- a/lib/screens/components/NetworkSetting.dart +++ b/lib/screens/components/NetworkSetting.dart @@ -2,6 +2,7 @@ import 'package:flutter/material.dart'; import 'package:pikapika/basic/config/Address.dart'; import 'package:pikapika/basic/config/ImageAddress.dart'; import 'package:pikapika/basic/config/Proxy.dart'; +import 'package:pikapika/basic/config/UseApiLoadImage.dart'; // 网络设置 class NetworkSetting extends StatelessWidget { @@ -13,6 +14,7 @@ class NetworkSetting extends StatelessWidget { children: [ switchAddressSetting(), imageSwitchAddressSetting(), + useApiLoadImageSetting(), proxySetting(), reloadSwitchAddressSetting(), ],