Константа rootBundle
Константа rootBundle имеет тип
AssetBundle
и читает файлы, перечисленные в pubspec.yaml.
Через неё вызывают
load,
loadString
и evict
вне дерева виджетов. Внутри UI чаще берут
DefaultAssetBundle.of.
Синтаксис
rootBundle.loadString('assets/data.txt')
Пример
Давайте прочитаем строку до запуска интерфейса:
import 'package:flutter/material.dart';
void main() async
{
var label = 'abcde';
try {
label = await rootBundle.loadString('assets/data.txt');
} catch (_) {}
runApp(
MaterialApp(
home: Scaffold(body: Center(child: Text(label))),
),
);
}
На экране сразу будет текст из актива
или запасная строка 'abcde'.
Пример
Давайте сравним rootBundle с bundle из контекста:
import 'package:flutter/material.dart';
void main()
{
runApp(
MaterialApp(
home: Builder(
builder: (context) {
final fromContext = DefaultAssetBundle.of(context);
return Scaffold(
body: Center(
child: Text('${fromContext.runtimeType}'),
),
);
},
),
),
);
}
На экране будет имя класса набора активов, который по умолчанию совпадает с rootBundle.
Смотрите также
-
класс
AssetBundle,
интерфейс, который реализует rootBundle -
виджет
DefaultAssetBundle,
который подменяет bundle в поддереве -
метод
load,
который читает байты по ключу -
класс
AssetImage,
который по умолчанию использует rootBundle