Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
324 of 1024 menu
◀ ▶

Метод memory

Метод memory виджета Image создаёт Image с провайдером MemoryImage. Сырые байты PNG, JPEG или другого формата передают в bytes типа Uint8List.

Синтаксис

Image.memory( bytes, width: 120, height: 80, fit: BoxFit.contain, )

Параметры

Параметр Описание
bytes Закодированная картинка в памяти. Обязательный аргумент.
width Ширина в логических пикселях.
height Высота в логических пикселях.
fit Вписывание в рамку. Принимает BoxFit.
scale Масштаб декодированных пикселей.
gaplessPlayback Если true, старая картинка остаётся на экране, пока не готова новая при смене bytes.

Пример

Давайте декодируем картинку из активов и покажем через память:

import 'dart:typed_data'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; void main() { runApp(const MaterialApp(home: MemoryImageDemo())); } class MemoryImageDemo extends StatefulWidget { const MemoryImageDemo({super.key}); @override State<MemoryImageDemo> createState() => _MemoryImageDemoState(); } class _MemoryImageDemoState extends State<MemoryImageDemo> { 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: 160, fit: BoxFit.contain), ), ); } }

На экране после загрузки байтов появится та же картинка, что лежит в assets/pic.png, но через Image.memory.

Пример

Давайте передадим готовый список байтов в виджет:

import 'dart:typed_data'; import 'package:flutter/material.dart'; void main() { final bytes = Uint8List.fromList([137, 80, 78, 71, 13, 10, 26, 10]); runApp( MaterialApp( home: Scaffold( body: Center( child: Image.memory( bytes, width: 80, errorBuilder: (context, error, stack) { return const Text('12345'); }, ), ), ), ), ); }

На экране при неполных байтах сработает errorBuilder и вместо картинки покажется текст '12345'.

Смотрите также

  • класс MemoryImage,
    который описывает провайдер для байтов в памяти
  • метод memoryNetwork,
    который использует байты как заглушку для сетевой картинки
  • метод file,
    который читает картинку с диска
  • метод load,
    который читает файл активов в ByteData
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить