Мое приложение использует flutter_cache_manger для загрузки всех файлов на локальное устройство, чтобы их можно было использовать в автономном режиме. Недавно я понял, что на устройствах Samsung плагин работает очень странно. Кэш очищается автоматически после замены 25000 файлов или файлов, которые были загружены при запуске, новыми файлами. Я проверил это на 2 разных планшетах Samsung и телефоне Samsung. У меня есть около 30000 файлов для скачивания. Я протестировал приложение на своем One Plus 6t, все файлы загружены на него и остается там.
На моем One Plus 6t
То же приложение на Samsung M20
См. Скриншоты Samsung. Кэш-память очищалась автоматически во время загрузки. Этого не должно быть. Я расширил flutter_cache_manager, чтобы хранить файлы в течение 5 лет и сохранять 50000 файлов. Вот код для этого.
class MyCacheManager extends BaseCacheManager {
static const key = "suryagoldscache";
static MyCacheManager _instance;
factory MyCacheManager() {
if (_instance == null) {
_instance = new MyCacheManager._();
}
return _instance;
}
MyCacheManager._()
: super(key,
maxAgeCacheObject: Duration(days: 1825),
maxNrOfCacheObjects: 50000,
fileFetcher: _myHttpGetter);
@override
Future<String> getFilePath() async {
var directory = await getTemporaryDirectory();
return path.join(directory.path, key);
}
static Future<FileFetcherResponse> _myHttpGetter(String url,
{Map<String, String> headers}) async {
HttpFileFetcherResponse response;
try {
var res = await http.get(url, headers: headers);
res.headers.addAll({'cache-control': 'private, max-age=157680000'});
response = HttpFileFetcherResponse(res);
} on SocketException {
// print('No internet connection');
}
return response;
}
}