Flutter框架跨平台鸿蒙开发——资源图片加载

一、资源图片配置

AssetImage用于加载打包在应用中的图片资源。

配置步骤

创建assets目录
放置图片文件
配置pubspec.yaml
使用Image.asset

1. 创建目录结构

复制代码
assets/
  ├── images/
  │   ├── logo.png
  │   └── background.jpg
  └── icons/
      ├── icon.png
      └── avatar.png

2. 配置pubspec.yaml

yaml 复制代码
flutter:
  assets:
    - assets/images/
    - assets/icons/

二、基础用法

加载单个图片

dart 复制代码
Image.asset('assets/images/logo.png')

设置尺寸和样式

dart 复制代码
Image.asset(
  'assets/images/background.jpg',
  width: double.infinity,
  height: 200,
  fit: BoxFit.cover,
)

三、多分辨率支持

创建不同分辨率

复制代码
assets/
  └── images/
      ├── 2.0x/
      │   └── logo.png
      ├── 3.0x/
      │   └── logo.png
      └── logo.png

自动选择分辨率

dart 复制代码
Image.asset('assets/images/logo.png')
// 会自动根据设备DPI选择合适的分辨率

四、完整示例

dart 复制代码
class AssetImageExample extends StatelessWidget {
  const AssetImageExample({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('资源图片')),
      body: ListView(
        padding: EdgeInsets.all(16),
        children: [
          Card(
            child: Column(
              children: [
                Text('Logo图片'),
                Image.asset('assets/images/logo.png', width: 100),
              ],
            ),
          ),
          SizedBox(height: 16),
          Card(
            child: Column(
              children: [
                Text('背景图片'),
                Image.asset(
                  'assets/images/background.jpg',
                  width: double.infinity,
                  height: 200,
                  fit: BoxFit.cover,
                ),
              ],
            ),
          ),
        ],
      ),
    );
  }
}

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net

相关推荐
AlexMaybeBot2 小时前
躺在沙发上开发 Openclaw 的移动端APP
前端·flutter
天空之城--3 小时前
Android Flutter行业动态与学习参考(2026年8月)
android·flutter
FungLeo4 小时前
Flutter Web token 存储陷阱:crypto.subtle 在非安全上下文失效排查实录
前端·安全·flutter
FungLeo4 小时前
Flutter Web 中文字体困境与渲染器选择:CanvasKit vs HTML renderer 实战
前端·flutter·html
杉氧5 小时前
原生交互:如何在 Flutter 中嵌入 Android/iOS 原生组件并解决手势冲突
android·flutter·dart
恋猫de小郭6 小时前
Flutter iOS Deep Link 为什么会突然失效:一系列难以言喻的问题
android·前端·flutter
FungLeo19 小时前
Flutter fl_chart 0.70 破坏性 API 迁移实录:duration/getTooltipColor/withValues 全解
flutter·fl_chart
FungLeo1 天前
Flutter 吸顶分组列表实战:语义桶分组 + 点击头平滑滚动
android·flutter
FungLeo1 天前
Flutter 超长 StatefulWidget 拆分术:part of + extension on State 实战
android·flutter·dart
GitLqr1 天前
Impeller 时代:Shader Jank 消失了,但渲染性能的战场也变了
flutter·面试·性能优化