Flutter读取assets文件并写入应用程序路径
- 发表于
- flutter
如何读取Flutter assets文件路径?
这里要弄清读取Flutter assets文件和获得Flutter assets文件路径的区别,如果只是读取assets文件那比较简单,使用AssetImage即可,但现在的需求是要获得Flutter assets文件路径。
查看了大量资料并没发现一个比较高效的方法,目前使用下面的方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
//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插件
1 2 3 4 5 |
dependencies: path_provider: ^0.5.0+1 assets: - assets/data/test.pdf |
寻找更优的方法中
使用path_provider
获得应用路径和临时文件路径
1 2 3 4 5 |
Directory tempDir = await getTemporaryDirectory(); String tempPath = tempDir.path; Directory appDocDir = await getApplicationDocumentsDirectory(); String appDocPath = appDocDir.path; |
通过getApplicationDocumentsDirectory
能获得应用路径,但是其中并没有显示有assets
的相关文件,这里有点迷茫。
原文连接:Flutter读取assets文件并写入应用程序路径
所有媒体,可在保留署名、
原文连接
的情况下转载,若非则不得使用我方内容。