当前位置: 首页 > article >正文

flutter Image

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

  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加载本地图片

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

用于加载网络图片。

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实现

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实现

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,
              ),
            )
          ],
        ),
      ),
    );
  }
}


http://www.kler.cn/a/292650.html

相关文章:

  • C++STL容器——map和set
  • LeetCode 86.分隔链表
  • 传奇996_21——龙岭事件
  • NAT网络工作原理和NAT类型
  • 更改Ubuntu22.04锁屏壁纸
  • 每日一练:二分查找-搜索插入位置
  • 浏览器百科:网页存储篇-如何在Chrome中打开Cookie(二)
  • Stirling-PDF:基于Web的开源PDF处理工具
  • 利用ChatGPT完成2024 年高教社杯全国大学生数学建模竞赛题目【A/B/C/D/E题】完整思路
  • Linux与windows系统之间的文件共享方案-Samba
  • 单元测试、系统测试和集成测试知识详解
  • RPC使用的关键技术
  • 学习关系型数据库:在Ubuntu和FreeBSD下安装firebird
  • LLM 进化分岔口:多模态、成本、代码推理
  • Qt获取当前系统时间、系统时间戳
  • 开源链动 2+1 模式 AI 智能名片 O2O 商城小程序在直播电商时代的崛起
  • mysqlclient 1.4.3 or newer is required; you have 1.0.3
  • 2024年全国大学生数学建模比赛思路、题目、代码
  • 14、Django Admin的“Action(动作)”中添加额外操作
  • 数据结构-双链表-详解
  • PrimeTime low power-SMVA分析(2)
  • 力扣343-整数拆分(Java详细题解)
  • QNN:基于QNN+example重构之后的yolov8det部署
  • 经验笔记:NoSQL数据库及其缓存方法实践
  • 什么是单片机?为什么要学习单片机?
  • 【文献及模型、制图分享】县域城乡融合发展对乡村旅游地实现共同富裕的影响机制——以长三角地区60个典型县为例