This commit is contained in:
niuhuan 2022-10-15 01:54:50 +08:00
parent 3c30cd26e4
commit c879de5584
14 changed files with 75 additions and 30 deletions

View File

@ -26,7 +26,7 @@ apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
android { android {
compileSdkVersion flutter.compileSdkVersion compileSdkVersion 33 // flutter.compileSdkVersion
sourceSets { sourceSets {
main.java.srcDirs += 'src/main/kotlin' main.java.srcDirs += 'src/main/kotlin'
@ -36,7 +36,7 @@ android {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "niuhuan.pikapika" applicationId "niuhuan.pikapika"
minSdkVersion 19 // flutter.minSdkVersion minSdkVersion 19 // flutter.minSdkVersion
targetSdkVersion 33 // flutter.targetSdkVersion targetSdkVersion flutter.targetSdkVersion
versionCode flutterVersionCode.toInteger() versionCode flutterVersionCode.toInteger()
versionName flutterVersionName versionName flutterVersionName
} }

View File

@ -1 +1 @@
v1.5.12 v1.5.13

View File

@ -1,3 +1,16 @@
v1.5.12 ## !! WARNING !!
IOS 用户请注意, 由于导出权限的问题, 本次升级后, 数据将会被移出数据库 并现显示到文件管理器, 您登录windows端后, 将文件复制到windows端的data目录并覆盖, 即可恢复数据继续阅读。 随后系统将会重新创建数据库, 您可将下载传输回手机。
其他平台用户不受影响。
##
v1.5.13
- [x] ♻升级flutter
- [x] 🚀IOS支持导出到文件
- [x] ♻消除WebToon横向阅读时的抖动
- [x] 🐛修复一些布局问题
- [x] ♻️反转下载章节的列表
- [x] 修复手动修改列数频道没有生效的问题

View File

@ -39,7 +39,7 @@ PODS:
- TOCropViewController (~> 2.6.1) - TOCropViewController (~> 2.6.1)
- image_picker_ios (0.0.1): - image_picker_ios (0.0.1):
- Flutter - Flutter
- "permission_handler (5.1.0+2)": - permission_handler_apple (9.0.4):
- Flutter - Flutter
- SDWebImage (5.12.5): - SDWebImage (5.12.5):
- SDWebImage/Core (= 5.12.5) - SDWebImage/Core (= 5.12.5)
@ -58,7 +58,7 @@ DEPENDENCIES:
- Flutter (from `Flutter`) - Flutter (from `Flutter`)
- image_cropper (from `.symlinks/plugins/image_cropper/ios`) - image_cropper (from `.symlinks/plugins/image_cropper/ios`)
- image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`) - image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`)
- permission_handler (from `.symlinks/plugins/permission_handler/ios`) - permission_handler_apple (from `.symlinks/plugins/permission_handler_apple/ios`)
- uni_links (from `.symlinks/plugins/uni_links/ios`) - uni_links (from `.symlinks/plugins/uni_links/ios`)
- uri_to_file (from `.symlinks/plugins/uri_to_file/ios`) - uri_to_file (from `.symlinks/plugins/uri_to_file/ios`)
- url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`) - url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`)
@ -80,8 +80,8 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/image_cropper/ios" :path: ".symlinks/plugins/image_cropper/ios"
image_picker_ios: image_picker_ios:
:path: ".symlinks/plugins/image_picker_ios/ios" :path: ".symlinks/plugins/image_picker_ios/ios"
permission_handler: permission_handler_apple:
:path: ".symlinks/plugins/permission_handler/ios" :path: ".symlinks/plugins/permission_handler_apple/ios"
uni_links: uni_links:
:path: ".symlinks/plugins/uni_links/ios" :path: ".symlinks/plugins/uni_links/ios"
uri_to_file: uri_to_file:
@ -96,7 +96,7 @@ SPEC CHECKSUMS:
Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854 Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854
image_cropper: 60c2789d1f1a78c873235d4319ca0c34a69f2d98 image_cropper: 60c2789d1f1a78c873235d4319ca0c34a69f2d98
image_picker_ios: b786a5dcf033a8336a657191401bfdf12017dabb image_picker_ios: b786a5dcf033a8336a657191401bfdf12017dabb
permission_handler: ccb20a9fad0ee9b1314a52b70b76b473c5f8dab0 permission_handler_apple: 44366e37eaf29454a1e7b1b7d736c2cceaeb17ce
SDWebImage: 0905f1b7760fc8ac4198cae0036600d67478751e SDWebImage: 0905f1b7760fc8ac4198cae0036600d67478751e
SwiftyGif: 6c3eafd0ce693cad58bb63d2b2fb9bacb8552780 SwiftyGif: 6c3eafd0ce693cad58bb63d2b2fb9bacb8552780
TOCropViewController: edfd4f25713d56905ad1e0b9f5be3fbe0f59c863 TOCropViewController: edfd4f25713d56905ad1e0b9f5be3fbe0f59c863

View File

@ -12,8 +12,11 @@ import LocalAuthentication
) -> Bool { ) -> Bool {
let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]
let applicationSupportsPath = NSSearchPathForDirectoriesInDomains(.applicationSupportDirectory, .userDomainMask, true)[0]
MobileMigration(documentsPath, applicationSupportsPath)
MobileInitApplication(applicationSupportsPath)
MobileInitApplication(documentsPath)
let controller = self.window.rootViewController as! FlutterViewController let controller = self.window.rootViewController as! FlutterViewController
let channel = FlutterMethodChannel.init(name: "method", binaryMessenger: controller as! FlutterBinaryMessenger) let channel = FlutterMethodChannel.init(name: "method", binaryMessenger: controller as! FlutterBinaryMessenger)
@ -70,7 +73,9 @@ import LocalAuthentication
result(FlutterError(code: "", message: "params error", details: "")) result(FlutterError(code: "", message: "params error", details: ""))
} }
} }
else{ else if call.method == "iosGetDocumentDir" {
result(documentsPath)
} else {
result(FlutterMethodNotImplemented) result(FlutterMethodNotImplemented)
} }
}.start() }.start()

View File

@ -2,6 +2,10 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"> <plist version="1.0">
<dict> <dict>
<key>UIFileSharingEnabled</key>
<true/>
<key>LSSupportsOpeningDocumentsInPlace</key>
<true/>
<key>CADisableMinimumFrameDurationOnPhone</key> <key>CADisableMinimumFrameDurationOnPhone</key>
<true/> <true/>
<key>CFBundleDevelopmentRegion</key> <key>CFBundleDevelopmentRegion</key>

View File

@ -884,4 +884,7 @@ class Method {
return _flatInvoke("resetSwitchAddress", ""); return _flatInvoke("resetSwitchAddress", "");
} }
Future<String> iosGetDocumentDir() async {
return await _channel.invokeMethod('iosGetDocumentDir', '');
}
} }

View File

@ -36,10 +36,12 @@ class _AccountScreenState extends State<AccountScreen> {
@override @override
void initState() { void initState() {
_linkSubscription = linkSubscript(context); _linkSubscription = linkSubscript(context);
versionEvent.subscribe(_versionSub);
versionPop(context);
_loadProperties(); _loadProperties();
super.initState(); super.initState();
Future.delayed(Duration.zero, () async {
versionPop(context);
versionEvent.subscribe(_versionSub);
});
} }
@override @override

View File

@ -29,9 +29,11 @@ class _AppScreenState extends State<AppScreen> {
void initState() { void initState() {
versionEvent.subscribe(_onVersion); versionEvent.subscribe(_onVersion);
_linkSubscription = linkSubscript(context); _linkSubscription = linkSubscript(context);
versionEvent.subscribe(_versionSub);
versionPop(context);
super.initState(); super.initState();
Future.delayed(Duration.zero, () async {
versionPop(context);
versionEvent.subscribe(_versionSub);
});
} }
@override @override

View File

@ -154,11 +154,11 @@ class _CategoriesScreenState extends State<CategoriesScreen> {
if (categoriesColumnCount == 0) { if (categoriesColumnCount == 0) {
var size = MediaQuery.of(context).size; var size = MediaQuery.of(context).size;
var min = size.width < size.height ? size.width : size.height; var min = size.width < size.height ? size.width : size.height;
blockSize = min / 3; blockSize = (min ~/ 3).floorToDouble();
} else { } else {
var size = MediaQuery.of(context).size; var size = MediaQuery.of(context).size;
var min = size.width; var min = size.width;
blockSize = min / categoriesColumnCount; blockSize = (min ~/ categoriesColumnCount).floorToDouble();
} }
imageSize = blockSize - 15; imageSize = blockSize - 15;
@ -252,11 +252,11 @@ class _CategoriesScreenState extends State<CategoriesScreen> {
if (categoriesColumnCount == 0) { if (categoriesColumnCount == 0) {
var size = MediaQuery.of(context).size; var size = MediaQuery.of(context).size;
var min = size.width < size.height ? size.width : size.height; var min = size.width < size.height ? size.width : size.height;
blockSize = min / 3; blockSize = (min ~/ 3).floorToDouble();
} else { } else {
var size = MediaQuery.of(context).size; var size = MediaQuery.of(context).size;
var min = size.width; var min = size.width;
blockSize = min / categoriesColumnCount; blockSize = (min ~/ categoriesColumnCount).floorToDouble();
} }
imageSize = blockSize - 15; imageSize = blockSize - 15;

View File

@ -140,7 +140,9 @@ class _DownloadExportToFileScreenState
onPressed: () async { onPressed: () async {
late String? path; late String? path;
try { try {
path = await chooseFolder(context); path = Platform.isIOS
? await method.iosGetDocumentDir()
: await chooseFolder(context);
} catch (e) { } catch (e) {
defaultToast(context, "$e"); defaultToast(context, "$e");
return; return;
@ -191,7 +193,9 @@ class _DownloadExportToFileScreenState
onPressed: () async { onPressed: () async {
late String? path; late String? path;
try { try {
path = await chooseFolder(context); path = Platform.isIOS
? await method.iosGetDocumentDir()
: await chooseFolder(context);
} catch (e) { } catch (e) {
defaultToast(context, "$e"); defaultToast(context, "$e");
return; return;
@ -244,7 +248,9 @@ class _DownloadExportToFileScreenState
onPressed: () async { onPressed: () async {
late String? path; late String? path;
try { try {
path = await chooseFolder(context); path = Platform.isIOS
? await method.iosGetDocumentDir()
: await chooseFolder(context);
} catch (e) { } catch (e) {
defaultToast(context, "$e"); defaultToast(context, "$e");
return; return;
@ -296,7 +302,9 @@ class _DownloadExportToFileScreenState
onPressed: () async { onPressed: () async {
late String? path; late String? path;
try { try {
path = await chooseFolder(context); path = Platform.isIOS
? await method.iosGetDocumentDir()
: await chooseFolder(context);
} catch (e) { } catch (e) {
defaultToast(context, "$e"); defaultToast(context, "$e");
return; return;

View File

@ -1,3 +1,5 @@
import 'dart:io';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:pikapika/basic/Common.dart'; import 'package:pikapika/basic/Common.dart';
@ -79,7 +81,9 @@ class _DownloadExportingGroupScreenState
_exportPkz() async { _exportPkz() async {
late String? path; late String? path;
try { try {
path = await chooseFolder(context); path = Platform.isIOS
? await method.iosGetDocumentDir()
: await chooseFolder(context);
} catch (e) { } catch (e) {
defaultToast(context, "$e"); defaultToast(context, "$e");
return; return;
@ -127,7 +131,9 @@ class _DownloadExportingGroupScreenState
} }
late String? path; late String? path;
try { try {
path = await chooseFolder(context); path = Platform.isIOS
? await method.iosGetDocumentDir()
: await chooseFolder(context);
} catch (e) { } catch (e) {
defaultToast(context, "$e"); defaultToast(context, "$e");
return; return;
@ -161,7 +167,9 @@ class _DownloadExportingGroupScreenState
} }
late String? path; late String? path;
try { try {
path = await chooseFolder(context); path = Platform.isIOS
? await method.iosGetDocumentDir()
: await chooseFolder(context);
} catch (e) { } catch (e) {
defaultToast(context, "$e"); defaultToast(context, "$e");
return; return;

View File

@ -203,7 +203,7 @@ class _DownloadInfoScreenState extends State<DownloadInfoScreen>
} }
}, },
), ),
..._epList.map((e) { ..._epList.reversed.map((e) {
return MaterialButton( return MaterialButton(
onPressed: () { onPressed: () {
_push(_task, _epList, e.epOrder, null); _push(_task, _epList, e.epOrder, null);

View File

@ -15,7 +15,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
# Read more about iOS versioning at # Read more about iOS versioning at
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
version: 1.5.12+6 version: 1.5.13+7
environment: environment:
sdk: ">=2.12.0 <3.0.0" sdk: ">=2.12.0 <3.0.0"