我的flutter应用程序具有以下资产。
assets:
- "images/01.png"
- "images/02.png"
- "images/03.png"
...
我想将这些图像文件复制到我可以通过以下方式获得的本地路径。
Directory docDir = await getApplicattionDocumentsDirectory();
String localPath = docDir.path;
答案 0 :(得分:4)
在应用程序目录中创建一个文件,并将您的资产映像逐字节复制到该文件。而已!您已复制文件。
final Directory docDir = await getApplicationDocumentsDirectory();
final String localPath = docDir.path;
File file = File('$localPath/${path.split('/').last}');
final imageBytes = await rootBundle.load(path);
final buffer = imageBytes.buffer;
await file.writeAsBytes(
buffer.asUint8List(imageBytes.offsetInBytes, imageBytes.lengthInBytes));
答案 1 :(得分:0)
我也找不到办法。一种减轻这种情况的方法是在assets guide之后,通过指定
flutter:
assets:
- assets/
并通过rootBundle
import 'dart:async' show Future;
import 'package:flutter/services.dart' show rootBundle;
Future<String> loadAsset() async {
return await rootBundle.loadString('assets/index.html');
}
或者您使用AssetImage
Widget build(BuildContext context) {
// ...
return DecoratedBox(
decoration: BoxDecoration(
image: DecorationImage(
image: AssetImage('graphics/background.png'),
// ...
),
// ...
),
);
// ...
}
答案 2 :(得分:0)
该线程很旧,但是如果有人还在寻找答案,这就是我的方法:)
rootBundle.load('assets/test.jpg').then((content) {
File newFile = File('${dir.path}/img.jpg');
newFile.writeAsBytesSync(content.buffer.asUint8List());
visionImage = FirebaseVisionImage.fromFile(newFile);
_runAnalysis();
});