如何将资产中的图像复制到Flutter中的应用程序文档目录?

时间:2018-11-14 02:19:10

标签: flutter

我的flutter应用程序具有以下资产。

assets:
 - "images/01.png"
 - "images/02.png"
 - "images/03.png"
 ...

我想将这些图像文件复制到我可以通过以下方式获得的本地路径。

 Directory docDir = await getApplicattionDocumentsDirectory();
 String localPath = docDir.path;

3 个答案:

答案 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();
  });