Flutter读取assets文件并写入应用程序路径
- 发表于
- flutter
如何读取Flutter assets文件路径?
这里要弄清读取Flutter assets文件和获得Flutter assets文件路径的区别,如果只是读取assets文件那比较简单,使用AssetImage即可,但现在的需求是要获得Flutter assets文件路径。
查看了大量资料并没发现一个比较高效的方法,目前使用下面的方法:
//import
import 'dart:async';
import 'dart:io';
import 'dart:typed_data';
import 'package:flutter/services.dart' show rootBundle;
import 'package:path_provider/path_provider.dart';
//read and write
final filename = 'test.pdf';
var bytes = await rootBundle.load("assets/data/test.pdf");
String dir = (await getApplicationDocumentsDirectory()).path;
writeToFile(bytes,'$dir/$filename');
//write to app path
Future<void> writeToFile(ByteData data, String path) {
final buffer = data.buffer;
return new File(path).writeAsBytes(
buffer.asUint8List(data.offsetInBytes, data.lengthInBytes));
}
yaml需要path_provider插件
dependencies:
path_provider: ^0.5.0+1
assets:
- assets/data/test.pdf
寻找更优的方法中
使用path_provider
获得应用路径和临时文件路径
Directory tempDir = await getTemporaryDirectory();
String tempPath = tempDir.path;
Directory appDocDir = await getApplicationDocumentsDirectory();
String appDocPath = appDocDir.path;
通过getApplicationDocumentsDirectory
能获得应用路径,但是其中并没有显示有assets
的相关文件,这里有点迷茫。
原文连接:Flutter读取assets文件并写入应用程序路径
所有媒体,可在保留署名、
原文连接
的情况下转载,若非则不得使用我方内容。