xnz_image 0.1.4 copy "xnz_image: ^0.1.4" to clipboard
xnz_image: ^0.1.4 copied to clipboard

A Flutter component package with a demo app for network image loading and caching-ready UI behavior.

XNZImage #

面向 Flutter 的图片加载组件,提供网络、内存、文件、Asset 四种图片渲染能力,以及统一缓存管理。

当前仓库采用“核心包 + 可选扩展包”架构:

  • xnz_image:对外主 API(XNZNetworkImageXNZMemoryImageXNZFileImageXNZAssetImageXNZCacheManager 等)
  • xnz_image_core:内部基础能力(缓存、下载、扩展机制)
  • xnz_image_svg:SVG 格式支持扩展
  • xnz_image_avif:AVIF 格式支持扩展

包结构与使用原则 #

  • 业务代码始终通过 xnz_image 中的组件类使用。
  • 需要某种格式支持时,额外引入对应扩展包并在 main() 注册。
  • 默认不注册扩展时,走 Flutter 原生位图解码链路(png/jpg/webp/gif/bmp 等)。

安装 #

1) 基础能力 #

dependencies:
  xnz_image: ^0.1.4

2) 可选扩展(按需) #

dependencies:
  xnz_image: ^0.1.4
  xnz_image_svg: ^0.1.4
  xnz_image_avif: ^0.1.4

在本仓库联调时可使用 path 依赖,发布到 pub 后建议改为版本依赖。

扩展注册 #

import 'package:flutter/widgets.dart';
import 'package:xnz_image/xnz_image.dart';
import 'package:xnz_image_svg/xnz_image_svg.dart';
import 'package:xnz_image_avif/xnz_image_avif.dart';

void main() {
  WidgetsFlutterBinding.ensureInitialized();

  XNZImage.support(XNZImageSvg());
  XNZImage.support(XNZImageAvif());

  runApp(const MyApp());
}

支持格式 #

  • 默认(只引入 xnz_image):pngjpgjpeggifwebpbmp 等常见位图格式。
  • 引入并注册 xnz_image_svg 后:支持 svgsvgz
  • 引入并注册 xnz_image_avif 后:支持 avifavifs(含动图时长覆盖参数)。

组件示例 #

网络图片 #

XNZNetworkImage(
  imageUrl: 'https://picsum.photos/800/480',
  width: 300,
  height: 180,
  fit: BoxFit.cover,
)

内存图片 #

import 'dart:typed_data';

XNZMemoryImage(
  bytes: yourBytes,
  width: 300,
  height: 180,
  fit: BoxFit.cover,
)

文件图片 #

import 'dart:io';

XNZFileImage(
  file: File('/path/to/local/image.avif'),
  width: 300,
  height: 180,
  fit: BoxFit.cover,
)

Asset 图片 #

XNZAssetImage(
  assetName: 'assets/images/banner.avif',
  width: 300,
  height: 180,
  fit: BoxFit.cover,
)

Image 组件组合使用 #

Image(
  image: XNZNetworkImageProvider('https://picsum.photos/800/480'),
  width: 300,
  height: 180,
  fit: BoxFit.cover,
)

统一渲染回调(推荐) #

新版本提供 renderBuilder,用于统一处理位图与自定义渲染(如 SVG):

XNZNetworkImage(
  imageUrl: url,
  renderBuilder: (context, resolved) {
    if (resolved.kind == XNZResolvedKind.customWidget) {
      return resolved.widget!;
    }

    return ClipRRect(
      borderRadius: BorderRadius.circular(12),
      child: Image(
        image: resolved.provider!,
        fit: BoxFit.cover,
      ),
    );
  },
)

兼容说明 #

  • 统一使用 renderBuilder 处理位图与自定义渲染。

XNZCacheManager 示例 #

import 'package:xnz_image/xnz_image.dart';

Future<void> printCacheUsage() async {
  final cacheManager = XNZCacheManager();
  final memoryBytes = cacheManager.getMemoryCacheBytes();
  final diskBytes = await cacheManager.getDiskCacheBytes();

  print('Memory cache: $memoryBytes B');
  print('Disk cache: $diskBytes B');
}

Future<void> clearAllCache() async {
  await XNZCacheManager().clearAll();
}

平台说明 #

  • 当前组件不支持 Web 平台。
  • 在 Web 端使用相关组件会返回 UnsupportedError

本地运行 #

# 根目录
fvm flutter pub get

# 示例工程
cd example
fvm flutter pub get
fvm flutter run

如果你不使用 FVM,也可以把 fvm flutter 改成 flutter

1
likes
0
points
600
downloads

Publisher

unverified uploader

Weekly Downloads

A Flutter component package with a demo app for network image loading and caching-ready UI behavior.

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

flutter, xnz_image_core

More

Packages that depend on xnz_image