map: vector tile cache on external storage
This commit is contained in:
parent
5f80fab460
commit
a3b613662a
3 changed files with 35 additions and 0 deletions
|
@ -29,6 +29,7 @@ class StorageHandler(private val context: Context) : MethodCallHandler {
|
||||||
when (call.method) {
|
when (call.method) {
|
||||||
"getDataUsage" -> ioScope.launch { safe(call, result, ::getDataUsage) }
|
"getDataUsage" -> ioScope.launch { safe(call, result, ::getDataUsage) }
|
||||||
"getStorageVolumes" -> ioScope.launch { safe(call, result, ::getStorageVolumes) }
|
"getStorageVolumes" -> ioScope.launch { safe(call, result, ::getStorageVolumes) }
|
||||||
|
"getCacheDirectory" -> ioScope.launch { safe(call, result, ::getCacheDirectory) }
|
||||||
"getUntrackedTrashPaths" -> ioScope.launch { safe(call, result, ::getUntrackedTrashPaths) }
|
"getUntrackedTrashPaths" -> ioScope.launch { safe(call, result, ::getUntrackedTrashPaths) }
|
||||||
"getUntrackedVaultPaths" -> ioScope.launch { safe(call, result, ::getUntrackedVaultPaths) }
|
"getUntrackedVaultPaths" -> ioScope.launch { safe(call, result, ::getUntrackedVaultPaths) }
|
||||||
"getVaultRoot" -> ioScope.launch { safe(call, result, ::getVaultRoot) }
|
"getVaultRoot" -> ioScope.launch { safe(call, result, ::getVaultRoot) }
|
||||||
|
@ -122,6 +123,18 @@ class StorageHandler(private val context: Context) : MethodCallHandler {
|
||||||
result.success(volumes)
|
result.success(volumes)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun getCacheDirectory(call: MethodCall, result: MethodChannel.Result) {
|
||||||
|
val external = call.argument<Boolean>("external")
|
||||||
|
if (external == null) {
|
||||||
|
result.error("getCacheDirectory-args", "missing arguments", null)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
val dir = (if (external) context.externalCacheDir else context.cacheDir)
|
||||||
|
result.success(dir!!.path)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private fun getUntrackedTrashPaths(call: MethodCall, result: MethodChannel.Result) {
|
private fun getUntrackedTrashPaths(call: MethodCall, result: MethodChannel.Result) {
|
||||||
val knownPaths = call.argument<List<String>>("knownPaths")
|
val knownPaths = call.argument<List<String>>("knownPaths")
|
||||||
if (knownPaths == null) {
|
if (knownPaths == null) {
|
||||||
|
|
|
@ -12,6 +12,8 @@ abstract class StorageService {
|
||||||
|
|
||||||
Future<Set<StorageVolume>> getStorageVolumes();
|
Future<Set<StorageVolume>> getStorageVolumes();
|
||||||
|
|
||||||
|
Future<String> getExternalCacheDirectory();
|
||||||
|
|
||||||
Future<Set<String>> getUntrackedTrashPaths(Iterable<String> knownPaths);
|
Future<Set<String>> getUntrackedTrashPaths(Iterable<String> knownPaths);
|
||||||
|
|
||||||
Future<Set<String>> getUntrackedVaultPaths(String vaultName, Iterable<String> knownPaths);
|
Future<Set<String>> getUntrackedVaultPaths(String vaultName, Iterable<String> knownPaths);
|
||||||
|
@ -79,6 +81,19 @@ class PlatformStorageService implements StorageService {
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Future<String> getExternalCacheDirectory() async {
|
||||||
|
try {
|
||||||
|
final result = await _platform.invokeMethod('getCacheDirectory', <String, dynamic>{
|
||||||
|
'external': true,
|
||||||
|
});
|
||||||
|
return result as String;
|
||||||
|
} on PlatformException catch (e, stack) {
|
||||||
|
await reportService.recordError(e, stack);
|
||||||
|
}
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<Set<String>> getUntrackedTrashPaths(Iterable<String> knownPaths) async {
|
Future<Set<String>> getUntrackedTrashPaths(Iterable<String> knownPaths) async {
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -1,4 +1,7 @@
|
||||||
|
import 'dart:io';
|
||||||
|
|
||||||
import 'package:aves/model/device.dart';
|
import 'package:aves/model/device.dart';
|
||||||
|
import 'package:aves/services/common/services.dart';
|
||||||
import 'package:aves/widgets/common/map/leaflet/vector_style_reader_extra.dart';
|
import 'package:aves/widgets/common/map/leaflet/vector_style_reader_extra.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_map/flutter_map.dart';
|
import 'package:flutter_map/flutter_map.dart';
|
||||||
|
@ -115,6 +118,10 @@ class _OsmLibertyLayerState extends State<OsmLibertyLayer> {
|
||||||
sprites: style.sprites,
|
sprites: style.sprites,
|
||||||
// `vector` is higher quality and follows map orientation, but it is slower
|
// `vector` is higher quality and follows map orientation, but it is slower
|
||||||
layerMode: VectorTileLayerMode.raster,
|
layerMode: VectorTileLayerMode.raster,
|
||||||
|
cacheFolder: () async {
|
||||||
|
final cacheRoot = await storageService.getExternalCacheDirectory();
|
||||||
|
return Directory(pContext.join(cacheRoot, 'map_vector_tiles'));
|
||||||
|
},
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
Loading…
Reference in a new issue