Метод load
Метод load класса
AssetBundle принимает ключ key и возвращает .
Результат можно превратить в Future<ByteData>Uint8List
для MemoryImage.
Синтаксис
Future<ByteData> load(String key)
Параметры
| Параметр | Описание |
|---|---|
key |
Путь к файлу в активах, как в pubspec.yaml.
Обязательный аргумент.
|
Пример
Давайте загрузим байты и покажем картинку из памяти:
import 'dart:typed_data';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
void main()
{
runApp(const MaterialApp(home: LoadBytesDemo()));
}
class LoadBytesDemo extends StatefulWidget
{
const LoadBytesDemo({super.key});
@override
State<LoadBytesDemo> createState() => _LoadBytesDemoState();
}
class _LoadBytesDemoState extends State<LoadBytesDemo>
{
Uint8List? bytes;
@override
void initState()
{
super.initState();
rootBundle.load('assets/pic.png').then((data) {
setState(() => bytes = data.buffer.asUint8List());
});
}
@override
Widget build(BuildContext context)
{
if (bytes == null) {
return const Scaffold(body: Center(child: CircularProgressIndicator()));
}
return Scaffold(
body: Center(child: Image.memory(bytes!, width: 120)),
);
}
}
На экране после load появится картинка из
assets/pic.png.
Пример
Давайте сравним два вызова с разными ключами:
import 'package:flutter/services.dart';
void main() async
{
try {
await rootBundle.load('assets/missing.png');
print('abcde');
} catch (_) {
print('12345');
}
}
Результат выполнения кода
"12345"
Смотрите также
-
метод
loadString,
который читает текст вместо байтов -
метод
evict,
который сбрасывает кэш картинки -
константа
rootBundle,
через которую часто вызываютload -
класс
AssetBundle,
к которому относится метод