如何在Flutter上以编程方式清除应用程序缓存

时间:2018-11-14 09:31:23

标签: dart flutter

因为我一直在使用Flutter开发应用程序。我发现应用程序的体积很大,而且它占用大量空间作为应用程序数据和应用程序缓存。有什么方法可以通过程序清除应用程序缓存吗?

编辑:在发布模式下,我的应用程序大小约为7mb,应用程序数据约为11mb。 我的应用在应用内打开了一个站点,并且还流播了在线广播,因此其应用数据不断增加

5 个答案:

答案 0 :(得分:1)

您可以获取temp文件夹,然后删除其中的文件。

var appDir = (await getTemporaryDirectory()).path;
new Directory(appDir).delete(recursive: true);

答案 1 :(得分:1)

注意文森特的答案。

尝试避免清除设备的临时文件夹。清除应用程序的缓存文件夹将很省钱,例如:

var appDir = (await getTemporaryDirectory()).path + '/<package_name>';
new Directory(appDir).delete(recursive: true);

答案 2 :(得分:1)

您还可以使用flutter_cache_manager来以编程方式删除或删除应用程序的缓存。

在安装flutter_cache_manager之后,使用它:

await DefaultCacheManager().emptyCache();

答案 3 :(得分:0)

您可以轻松删除缓存。

import 'package:path_provider/path_provider.dart';
Future<void> _deleteCacheDir() async {
final cacheDir = await getTemporaryDirectory();
if (cacheDir.existsSync()) {
cacheDir.deleteSync(recursive: true);}}
final appDir = await getApplicationSupportDirectory();
if (appDir.existsSync()) {
appDir.deleteSync(recursive: true);}}

答案 4 :(得分:0)

您只需在此之后刷新您的应用即可。

import 'dart:io';
import 'package:provider/provider.dart';

  Future<void> _deleteCacheDir() async {
    var tempDir = await getTemporaryDirectory();

    if (tempDir.existsSync()) {
      tempDir.deleteSync(recursive: true);
    }
  }

  Future<void> _deleteAppDir() async {
    var appDocDir = await getApplicationDocumentsDirectory();

    if (appDocDir.existsSync()) {
      appDocDir.deleteSync(recursive: true);
    }
  }