Fixed some issues when using custom download path on Android. Close #400

This commit is contained in:
2025-06-17 17:15:35 +08:00
parent 20f7ab4866
commit 93f7f72d07
2 changed files with 6 additions and 0 deletions

View File

@@ -2,6 +2,7 @@ import 'dart:convert';
import 'dart:isolate'; import 'dart:isolate';
import 'package:flutter/widgets.dart' show ChangeNotifier; import 'package:flutter/widgets.dart' show ChangeNotifier;
import 'package:flutter_saf/flutter_saf.dart';
import 'package:path_provider/path_provider.dart'; import 'package:path_provider/path_provider.dart';
import 'package:sqlite3/sqlite3.dart'; import 'package:sqlite3/sqlite3.dart';
import 'package:venera/foundation/comic_source/comic_source.dart'; import 'package:venera/foundation/comic_source/comic_source.dart';
@@ -625,6 +626,7 @@ class LocalManager with ChangeNotifier {
/// Deletes the directories in a separate isolate to avoid blocking the UI thread. /// Deletes the directories in a separate isolate to avoid blocking the UI thread.
static void _deleteDirectories(List<Directory> directories) { static void _deleteDirectories(List<Directory> directories) {
Isolate.run(() async { Isolate.run(() async {
await SAFTaskWorker().init();
for (var dir in directories) { for (var dir in directories) {
try { try {
if (dir.existsSync()) { if (dir.existsSync()) {

View File

@@ -1,6 +1,7 @@
import 'dart:async'; import 'dart:async';
import 'dart:convert'; import 'dart:convert';
import 'dart:isolate'; import 'dart:isolate';
import 'package:flutter_saf/flutter_saf.dart';
import 'package:venera/foundation/app.dart'; import 'package:venera/foundation/app.dart';
import 'package:venera/foundation/local.dart'; import 'package:venera/foundation/local.dart';
import 'package:venera/utils/image.dart'; import 'package:venera/utils/image.dart';
@@ -74,6 +75,9 @@ Future<Isolate> _runIsolate(
return Isolate.spawn<SendPort>( return Isolate.spawn<SendPort>(
(sendPort) => overrideIO( (sendPort) => overrideIO(
() async { () async {
if (App.isAndroid) {
await SAFTaskWorker().init();
}
var receivePort = ReceivePort(); var receivePort = ReceivePort();
sendPort.send(receivePort.sendPort); sendPort.send(receivePort.sendPort);