Класс AssetBundle
Абстрактный класс AssetBundle читает ресурсы
по строковому ключу, например assets/pic.png.
Метод load
возвращает байты, loadString -
текст, evict
сбрасывает кэш картинки. Глобальный набор -
rootBundle,
для поддерева виджетов - DefaultAssetBundle.
Синтаксис
final bundle = DefaultAssetBundle.of(context);
final data = await bundle.load('assets/pic.png');
Методы
| Метод | Описание |
|---|---|
load |
Читает бинарный файл из набора активов. Давайте разберём параметры и примеры. |
loadString |
Читает текстовый файл из активов в строку. Давайте разберём параметры и примеры. |
evict |
Удаляет закэшированное изображение по ключу. Давайте разберём параметры и примеры. |
Пример
Давайте прочитаем строку из JSON актива через rootBundle:
import 'package:flutter/material.dart';
void main()
{
runApp(const MaterialApp(home: LoadDemo()));
}
class LoadDemo extends StatefulWidget
{
const LoadDemo({super.key});
@override
State<LoadDemo> createState() => _LoadDemoState();
}
class _LoadDemoState extends State<LoadDemo>
{
String text = '12345';
@override
void initState()
{
super.initState();
rootBundle.loadString('assets/data.txt').then((value) {
setState(() => text = value.trim());
}).catchError((_) {});
}
@override
Widget build(BuildContext context)
{
return Scaffold(body: Center(child: Text(text)));
}
}
На экране после загрузки появится содержимое
assets/data.txt или останется '12345' при ошибке.
Пример
Давайте возьмём набор активов из контекста виджета:
import 'package:flutter/material.dart';
void main()
{
runApp(
MaterialApp(
home: Builder(
builder: (context) {
final bundle = DefaultAssetBundle.of(context);
return Scaffold(
body: Center(
child: Text(bundle.runtimeType.toString()),
),
);
},
),
),
);
}
На экране будет имя класса набора активов, который видят дочерние виджеты.
Смотрите также
-
константа
rootBundle,
которая указывает на активы всего приложения -
виджет
DefaultAssetBundle,
который подменяет набор для поддерева -
класс
AssetImage,
который рисует файл из актива -
метод
load,
который читает бинарный файл