flutter Image

Flutter中,Image是一个用于显示图片的控件,可以显示网络图片、本地图片以及Asset中的图片。Image控件支持多种常见的图片格式,例如PNG、JPEG、GIF等。

Dart 复制代码
  const Image({
    super.key,
    required this.image,
    this.frameBuilder,
    this.loadingBuilder,
    this.errorBuilder,
    this.semanticLabel,
    this.excludeFromSemantics = false,
    this.width,
    this.height,
    this.color,
    this.opacity,
    this.colorBlendMode,
    this.fit,
    this.alignment = Alignment.center,
    this.repeat = ImageRepeat.noRepeat,
    this.centerSlice,
    this.matchTextDirection = false,
    this.gaplessPlayback = false,
    this.isAntiAlias = false,
    this.filterQuality = FilterQuality.low,
  })

Image控件重要属性

Image.network:指定显示的网络图片的URL,用于加载网络图片。

Image.asset:指定显示的本地图片的Asset路径,用于加载Asset目录下的图片。

width和height:设置图片的宽度和高度。

Image.asset

通过Image.asset加载本地图片

Dart 复制代码
import 'package:flutter/material.dart';

class ImageDemoPage extends StatelessWidget {
  const ImageDemoPage({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text("ImageDemoPage"),
      ),
      body: Container(
        alignment: Alignment.center,
        margin: const EdgeInsets.all(10),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.center,
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            const Text("TEST IMAGE"),
            Container(
                width: 100,
                height: 100,
                child: Image.asset("static/test_image.png"))
          ],
        ),
      ),
    );
  }
}

Image.network

用于加载网络图片。

Dart 复制代码
import 'package:flutter/material.dart';

class ImageDemoPage extends StatelessWidget {
  const ImageDemoPage({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text("ImageDemoPage"),
      ),
      body: Container(
        alignment: Alignment.center,
        margin: const EdgeInsets.all(10),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.center,
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            const Text("TEST IMAGE"),
            Container(
                width: 100,
                height: 100,
                child: Image.network("https://cdn.carlcare.com/carlcare/default/1273327404667740207"))
          ],
        ),
      ),
    );
  }
}

实现圆角的几种方式

使用BoxDecoration+DecorationImage+AssetImage实现

Dart 复制代码
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';

class ImageDemoPage extends StatelessWidget {
  const ImageDemoPage({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text("ImageDemoPage"),
      ),
      body: Container(
        alignment: Alignment.center,
        margin: const EdgeInsets.all(10),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.center,
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            const Text("USE BoxDecoration"),
            Container(
              width: 100,
              height: 100,
              decoration: const BoxDecoration(
                  color: Colors.blue,
                  image: DecorationImage(
                    fit: BoxFit.cover,
                    image: AssetImage("static/test_image.png"),
                  ),
                  borderRadius: BorderRadius.all(Radius.circular(10.0))),
            )
          ],
        ),
      ),
    );
  }
}

ClipRRect+Image实现

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

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text("ImageDemoPage"),
      ),
      body: Container(
        alignment: Alignment.center,
        margin: const EdgeInsets.all(10),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.center,
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            const Text("USE ClipRRect"),
            ClipRRect(
              borderRadius: const BorderRadius.all(Radius.circular(10.0)),
              child: Image.asset(
                "static/test_image.png",
                fit: BoxFit.cover,
                width: 100,
                height: 100,
              ),
            )
          ],
        ),
      ),
    );
  }
}
相关推荐
随风一样自由4 小时前
【前端+项目分析】`img` vs `Image`:从两个真实项目看前端图片组件的正确选择
前端·image·img·项目对比分析
不才难以繁此生13 天前
HarmonyOS 图片列表滑动卡顿怎么办:中式美食菜谱封面怎么做占位、缓存和失败兜底
harmonyos·image·arkui·中式美食·列表性能
大师兄666815 天前
HarmonyOS7 图片处理:Image 组件与图片选择
image·harmonyos7·图片选择
不才难以繁此生18 天前
HarmonyOS ResourceStr 实战:中式美食菜谱封面怎么统一注册、兜底和缓存
harmonyos·arkts·image·arkui·中式美食·resourcestr·图片缓存
gis分享者1 个月前
GPT-Image-2 图像生成模型新手实战指南
gpt·ai·image·模型·图像生成
GuokLiu2 个月前
260515-ChatGPT-image2生成Github单页海报的提示词示例
gpt·prompt·image
●VON3 个月前
四大AI生图工具横评:GPT Image 2 一骑绝尘!但Gemini的免费策略才是真正的王炸
人工智能·gpt·chatgpt·大模型·image
●VON3 个月前
鸿蒙原生APP开发实战指南:三套低成本AI辅助方案全解析
人工智能·华为·chatgpt·大模型·harmonyos·image
熊猫钓鱼>_>3 个月前
ERNIE-Image 深度测评:百度 8B 小模型如何撼动文生图格局
百度·ai·大模型·llm·ernie·image·图像生成
刘某的Cloud3 个月前
docker commit 封装镜像
运维·docker·容器·image