Help us understand the problem. What is going on with this article?

Flutterでデバイスにファイルを保存する

アプリのサイズを減らすために画像ファイルをアセットに追加しないで、初回起動時などのタイミングで端末に保存し、表示する方法について書きます。

今回使用するプラグインはhttpのみです
ちなみにcached_network_imageなどのプラグインを使用したファイルキャッシュでも同等の動きをすると思いますが、100枚ほどのキャッシュした画像をPageViewで表示してページめくりしているとアプリがクラッシュしてしまいます。(体験済み)
たしかFlutterのIssuerにも上がっていた気がします。

ファイルのダウンロード

画像ファイルの保存は下記のコードになります。
httpで画像ファイルを取得し、ローカルのファイルに書き込むという流れになっています。
ローカルにファイルがない場合は書き込めないので、書き込む用のファイルを先に生成してください。
下記のコードではawait file.create();がファイル生成の処理をしています。

final http.Response res = await _httpClient.get(fileUrl);
final file = File('$filePath');
await file.create();
await file.writeAsBytes(res.bodyBytes);

ダウンロードしたファイルを表示する

ダウンロードしたファイルを表示するには Image.file を使用します。

final file = File('$filePath');
return Image.file(
  file,
  width: 100,
  height: 100,
);

とくに難しいことはなく単にファイルを保存して呼び出し表示するだけです。
AndroidではパーミッションREAD_EXTERNAL_STORAGEを許可が必要になる場合があるので許可しておいてください

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした