Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 如何在Flatter中删除缓存和应用程序目录_Flutter_Dart - Fatal编程技术网

Flutter 如何在Flatter中删除缓存和应用程序目录

Flutter 如何在Flatter中删除缓存和应用程序目录,flutter,dart,Flutter,Dart,在我的Flatter应用程序中,我在缓存目录中存储了一些图像,在应用程序文档目录中存储了一些文件,现在我想为我的用户添加删除缓存目录和应用程序目录的可能性, 我怎样才能做到这一点 此代码可能会帮助您: import 'dart:async'; import 'dart:io'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:path_provid

在我的Flatter应用程序中,我在缓存目录中存储了一些图像,在应用程序文档目录中存储了一些文件,现在我想为我的用户添加删除缓存目录和应用程序目录的可能性,
我怎样才能做到这一点

此代码可能会帮助您:

import 'dart:async';
import 'dart:io';

import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:path_provider/path_provider.dart';

void main() {
  runApp(
    MaterialApp(
      title: 'Reading and Writing Files',
      home: FlutterDemo(storage: CounterStorage()),
    ),
  );
}

class CounterStorage {
  Future<String> get _localPath async {
    final directory = await getApplicationDocumentsDirectory();

    return directory.path;
  }

  Future<File> get _localFile async {
    final path = await _localPath;
    return File('$path/counter.txt');
  }

  Future<int> readCounter() async {
    try {
      final file = await _localFile;

      // Read the file
      String contents = await file.readAsString();

      return int.parse(contents);
    } catch (e) {
      // If encountering an error, return 0
      return 0;
    }
  }

  Future<File> writeCounter(int counter) async {
    final file = await _localFile;

    // Write the file
    return file.writeAsString('$counter');
  }
}

class FlutterDemo extends StatefulWidget {
  final CounterStorage storage;

  FlutterDemo({Key key, @required this.storage}) : super(key: key);

  @override
  _FlutterDemoState createState() => _FlutterDemoState();
}

class _FlutterDemoState extends State<FlutterDemo> {
  int _counter;

  @override
  void initState() {
    super.initState();
    widget.storage.readCounter().then((int value) {
      setState(() {
        _counter = value;
      });
    });
  }

  Future<File> _incrementCounter() {
    setState(() {
      _counter++;
    });

    // Write the variable as a string to the file.
    return widget.storage.writeCounter(_counter);
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('Reading and Writing Files')),
      body: Center(
        child: Text(
          'Button tapped $_counter time${_counter == 1 ? '' : 's'}.',
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: Icon(Icons.add),
      ),
    );
  }
}
导入'dart:async';
导入“dart:io”;
进口“包装:颤振/基础.dart”;
进口“包装:颤振/材料.省道”;
导入“package:path_provider/path_provider.dart”;
void main(){
runApp(
材料聚丙烯(
标题:“读取和写入文件”,
主页:flatterdemo(存储:CounterStorage()),
),
);
}
类反存储{
未来获取\u本地路径异步{
最终目录=等待getApplicationDocumentsDirectory();
返回directory.path;
}
未来获取\u本地文件异步{
最终路径=等待_localPath;
返回文件(“$path/counter.txt”);
}
Future readCounter()异步{
试一试{
final file=wait\u localFile;
//读文件
String contents=wait file.readAsString();
返回int.parse(contents);
}捕获(e){
//如果遇到错误,则返回0
返回0;
}
}
未来写计数器(int计数器)异步{
final file=wait\u localFile;
//写文件
返回文件.writeAsString(“$counter”);
}
}
类扩展StatefulWidget{
最终反储存储存;
flatterdemo({Key-Key,@required this.storage}):super(Key:Key);
@凌驾
_FlatterDemoState createState();
}
类(状态扩展状态){
内部计数器;
@凌驾
void initState(){
super.initState();
widget.storage.readCounter().then((int值){
设置状态(){
_计数器=值;
});
});
}
未来_递增计数器(){
设置状态(){
_计数器++;
});
//将变量作为字符串写入文件。
返回widget.storage.writeCounter(_计数器);
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(标题:文本(“读写文件”),
正文:中(
子:文本(
'按钮点击$\u计数器时间${\u计数器==1?''s'}',
),
),
浮动操作按钮:浮动操作按钮(
按下时:\ u递增计数器,
工具提示:“增量”,
子:图标(Icons.add),
),
);
}
}
此外,您可以在此处找到非常有用的文档: 你需要一个包裹

然后尝试以下代码:

  Future<void> _deleteCacheDir() async {
    final cacheDir = await getTemporaryDirectory();

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

  Future<void> _deleteAppDir() async {
    final appDir = await getApplicationSupportDirectory();

    if(appDir.existsSync()){
      appDir.deleteSync(recursive: true);
    }
  }
Future\u deleteCacheDir()异步{
final cacheDir=await getTemporaryDirectory();
if(cacheDir.existsSync()){
cacheDir.deleteSync(递归:true);
}
}
Future _deleteAppDir()异步{
final appDir=等待getApplicationSupportDirectory();
if(appDir.existsSync()){
appDir.deleteSync(递归:true);
}
}

Hi-XAMT,这不是解决方案,我想要的是清除文件和图像,因为cacheImages和其他文件位于cache和app dir中,所以我希望用户在app内部清除它们,以提高appimport“dart:io”的性能;void main(){final dir=Directory(dirPath);dir.deleteSync(recursive:true);}谢谢,这很有用,你知道在删除进程之前如何读取它所占用的缓存和文件容量吗?这很有帮助。@Ramin嗨,我尝试了你的代码,它可以工作。。。但当我在手机设置中检查我的应用程序大小(数据和缓存)时,仍然有数据和缓存。。。他们没有将数据和缓存减少到0字节。。。我做错了吗?@uyhaW嗨,我刚刚检查过,即使你使用手机设置清除缓存和数据,然后重新打开应用程序信息,它也不会显示0字节。所以我想这很正常。