Метод evict
Метод evict класса
AssetBundle принимает ключ key того же вида, что и у
AssetImage.
После вызова следующая отрисовка снова прочитает файл
и декодирует картинку.
Синтаксис
Future<void> evict(String key)
Параметры
| Параметр | Описание |
|---|---|
key |
Путь к ресурсу в активах. Обязательный аргумент. |
Пример
Давайте сбросим кэш и снова покажем картинку:
import 'package:flutter/material.dart';
void main()
{
runApp(const MaterialApp(home: EvictDemo()));
}
class EvictDemo extends StatelessWidget
{
const EvictDemo({super.key});
Future<void> _reload(BuildContext context) async
{
final bundle = DefaultAssetBundle.of(context);
await bundle.evict('assets/pic.png');
}
@override
Widget build(BuildContext context)
{
return Scaffold(
body: Center(
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Image.asset('assets/pic.png', width: 100),
const SizedBox(height: 16),
ElevatedButton(
onPressed: () => _reload(context),
child: const Text('abcde'),
),
],
),
),
);
}
}
На экране кнопка вызовет evict,
и при следующем кадре картинка загрузится заново.
Пример
Давайте вызовем evict через rootBundle:
import 'package:flutter/services.dart';
void main() async
{
await rootBundle.evict('assets/pic.png');
print('abcde');
}
Результат выполнения кода
"abcde"
Смотрите также
-
метод
load,
который читает байты файла -
функция
precacheImage,
которая заранее кладёт картинку в кэш -
класс
AssetImage,
чей ключ совпадает с аргументомevict -
константа
rootBundle,
у которой тоже естьevict