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的相关文件,这里有点迷茫。