🗂

一度アプリを落としてビルドしたり、アプリのアップデートを行うとデバイス領域に保存した画像が消える

2023/01/26に公開

基本的には下記記事を自分が分かりやすい言い回しに変更しています。
https://muchilog.com/flutter-save-data-path-change/

https://qiita.com/hmatsu47/items/e4f7e310e88376d54009

String newPath = (await getApplicationDocumentsDirectory()).path;

このパスが、アプリを落とした後再度起動したタイミングや、アプリのアップデートで変わってしまうみたい。

実装方針としては、
パスをローカルDB等に保存するのはフルパスではなく、ファイル名だけ。
画像を読み込むタイミング上記サンプルコードで、getApplicationDocumentsDirectoryディレクトリを取得しローカルDBのファイル名とjoinさせることで再起動やアップデートでもアプリが落ちずに表示できる。

パスが変わるのに過去のデータも読めるの?と思われるかもしれないが、getApplicationDocumentsDirectory()で自動で現在のデバイス領域のパスを取得してくれる。
そして、内部領域のパスが変わる時には、中のデータがそのままコピーされるみたい。そのため、内部的にはデータが残ったまま、パスが変わっただけな状態になる。

Discussion