第二百七十一回

文章目录

  • 1. 概念介绍
  • 2. 实现方法
    • 2.1 主要步骤
    • 2.1 注意事项
  • 3. 示例代码
  • 4. 内容总结

我们在上一章回中介绍了"如何加载网络图片"相关的内容,本章回中将介绍如何加载本地图片.闲话休提,让我们一起Talk Flutter吧。

在这里插入图片描述

1. 概念介绍

我们在上一章回中介绍的内容与图片有关,本章回中仍然介绍图片相关的知识:加载本地图片。我们在这里说的本地图片表示图片存储于手机自带的文件系统中,我们可以
AndroidStuiod的DeviceFileManger中看到图片。

2. 实现方法

2.1 主要步骤

加载本地图片的主要是步骤是使用file()方法,它是image类的静态方法,可以直接拿来使用。该方法提供了一些常用的属性,详细如下:

  • color属性:主要用来修改图片的颜色;
  • frameBuilder属性: 主要用来控制图片从本地加载过程中显示的内容;
  • errorBuilder属性: 主要用来控制图片从本地加载失败后显示的内容;
    该方法还有一个没有命名的属性,该属性主要用来存放图片的绝对地址,这个是必不可少的内容。

2.1 注意事项

在加载网络图片时需要处理加载过程和加载错误,加载错误时通过errorBuilder属性控制,该属性是方法类型,它会把错误的信息通过方法的参数传递出来,我们可以
依据错误信息做相关的处理。加载过程中通过frameBuilder属性控制,该属性也是方法类型,它会把加载的帧数和加载完后的图片通过参数传递出来,我们可以显示
图片加载的帧数。稍后我们将通完示例代码来演示。

3. 示例代码

///对应目录:storage/emulated/0/Android/data/package_name/files
Future<Directory?>? _externalDocumentsDirectory;
String filePath = "";
  _externalDocumentsDirectory = getExternalStorageDirectory();

  _externalDocumentsDirectory?.then((value) {
    debugPrint("current path: ${value?.path} ");
    setState(() {
      filePath = "${value?.path}/switch.png";
    });
  });

Image.file(
  File(filePath),
  width: 200,
  height: 200,
  alignment: Alignment.center,
  fit: BoxFit.fill,
  ///处理文件导入正确相关的内容
  frameBuilder:(context,child,frame,wasSynchronouslyLoaded) {
    if(wasSynchronouslyLoaded) {
      return child;
    }else {
      // return Text("frame:${frame.toString()}");
      return child;
    }
  },
  ///处理文件导入错误相关的内容
  errorBuilder: (context,error,trace) {
    debugPrint("load file error: ${error.toString()}");
    return Text(error.toString());
  },
),

上面的示例代码中演示了如何使用Image的file()方法加载本地图片,同时处理了图片加载过程和加载错误的业务逻辑,不过我们处理的的比较简单,只是显示一个
加载中或者加载错误的文字信息。大家可以依据自身业务逻辑进行相关的处理。此外,代码中处理图片加载中的业务时可以判断帧数,通常加载完第一帧时就会返回图片信
息,不过这个帧数与图片自身有关,有些图片只有一帧,有些图片包含多帧。因此这个frameBuilder属性与具体的图片有关,可以不去处理它。

4. 内容总结

最后,我们对本章回的内容做一个全面的总结:

  • 加载本地图片使用Image组件的file()方法;
  • 加载图片时需要处理图片加载过程和加载错误的业务逻辑;
  • 加载过程的属性与图片有关,可以依据实际业务来处理,或者不处理;
    看官们,与"如何加载本地图片"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/329199.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Scrum敏捷研发管理解决方案

Leangoo领歌是一款永久免费的专业的敏捷开发管理工具&#xff0c;提供端到端敏捷研发管理解决方案&#xff0c;涵盖敏捷需求管理、任务协同、进展跟踪、统计度量等。 Leangoo领歌上手快、实施成本低&#xff0c;可帮助企业快速落地敏捷&#xff0c;提质增效、缩短周期、加速创新…

力扣刷MySQL-第一弹(详细解析)

&#x1f389;欢迎您来到我的MySQL基础复习专栏 ☆* o(≧▽≦)o *☆哈喽~我是小小恶斯法克&#x1f379; ✨博客主页&#xff1a;小小恶斯法克的博客 &#x1f388;该系列文章专栏&#xff1a;力扣刷题讲解-MySQL &#x1f379;文章作者技术和水平很有限&#xff0c;如果文中出…

C++学习笔记(四十二):c++ 结构化绑定

本节介绍c结构化绑定&#xff0c;改知识点是c17中增加的新特性&#xff0c;主要是用来处理c多返回值的问题。 原来c17之前返回多个值的方法之前专门有一节内容在描述&#xff0c;简单回顾一下原来使用tuple返回多个返回值的方法&#xff0c;代码如下&#xff1a; #include &l…

条件风险价值CVaR内容介绍(MATLAB例程)

在对微电网优化调度过程中&#xff0c;由于新能源机组出力和负荷的不确定性&#xff0c;若采用确定性的优化调度方案会存在一定的风险。当风电和光伏输出功率的实际值低于预测值时&#xff0c;需要增加可控机组出力或切除部分负荷&#xff1b;反之&#xff0c;若风电和光伏输出…

Mybatis----面向接口

让mybatis自动生成dao层接口的实现类 这是dao层接口的实现类&#xff0c;在mybatis中我们可以省略这种实现接口的方式&#xff0c;直接面向接口操作数据库&#xff0c;mybatis可以帮我们自动生成接口的实现类&#xff0c;也就是下面这个实现类mybatis帮我们生成了。 1、修改se…

如何提高匹配的速度

基于形状的匹配&#xff0c;改进了无数次&#xff0c;其实已经很满意了。 想起刚入门机器视觉那会儿&#xff0c;我们写的代码&#xff0c;无论c还是c#的&#xff0c;都是调用人家的函数&#xff0c;从来没想过&#xff0c;自己有一天把这些函数代替了。 那时候调用evision的…

ES 之索引和文档

本文主要介绍ES中的数据组成结构单元。 一、文档(Document) 1、概念 ES的数据存储单元是面向文档的&#xff0c;文档是所有数据存储&#xff0c;搜索的最小单元。 你可以把ES中的文档对应成mysql中的一条条数据记录。到时候你存进ES的数据就是一个个文档。 文档存入ES是序列…

读书笔记:单载波频域均衡技术 SC-FDE

原文&#xff1a;https://mp.weixin.qq.com/s?__bizMzU5NzgxNDgwMg&mid2247486891&idx1&sn51e0dc3d28bcf356126dc8ae922f5533&chksmfe4cf6d6c93b7fc0237d4e2107b5671a401db8ed7a8527159ef18333d2b1f48c56b381f846ae&mpshare1&scene1&srcid0117h6K…

Windows Redis图形客户端 Another Redis Desktop Manager的简单使用教程

1、 Redis官方文档 2、 Redis国内中文版文档 3、 Redis客户端 Another Redis Desktop Manager 4、连接redis服务 我直接使用的是公司搭建好的服务。连接服务需要以下几个信息&#xff1a; HostPortPasswordSSL 5、New Key 5.1 如何创建一个Key&#xff1f; 点击New k…

《SPSS统计学基础与实证研究应用精解》视频讲解:SPSS中用到的概率分布

《SPSS统计学基础与实证研究应用精解》2.2 视频讲解 视频为《SPSS统计学基础与实证研究应用精解》张甜 杨维忠著 清华大学出版社 一书的随书赠送视频讲解2.2节内容。本书已正式出版上市&#xff0c;当当、京东、淘宝等平台热销中&#xff0c;搜索书名即可。本书旨在手把手教会使…

Vue3的使用

一 Vue3的变化 1.性能的提升 打包大小减少41% 初次渲染快55%, 更新渲染快133% 内存减少54% 2.源码的升级 使用Proxy代替defineProperty实现响应式 重写虚拟DOM的实现和Tree-Shaking 3.拥抱TypeScript Vue3可以更好的支持TypeScript 4.新的特性 Composition API&#…

2024年华数杯国际赛B题:光伏发电功率 思路模型代码解析

2024年华数杯国际赛B题&#xff1a;光伏发电功率&#xff08;Photovoltaic Power&#xff09; 一、问题描述 中国的电力构成包括传统能源发电&#xff08;如煤、油和天然气&#xff09;、可再生能源发电&#xff08;如水电、风能、太阳能和核能&#xff09;以及其他形式的电力…

Redis 服务器 命令

目录 1.Redis Client Pause 命令 - 在指定时间内终止运行来自客户端的命令简介语法可用版本: > 2.9.50返回值: 返回 OK。如果 timeout 参数是非法的返回错误。 示例 2.Redis Debug Object 命令 - 获取 key 的调试信息简介语法可用版本: > 1.0.0返回值: 当 key 存在时&…

企业微信无法正常启动 报错0xc0000142

报错内容如下&#xff0c;每次打开工作电脑时候企业微信一般会正常启动&#xff0c;但是有时候经常会出现下面这种错误&#xff0c;重启也解决不了&#xff0c;每次都得重装企业微信&#xff0c;今天整理了一下网上的方法&#xff0c;这个原因大概率是亿赛通。 解决办法&#x…

刷题总结1.17 下午

第五题的平面图&#xff0c;偶图不理解 第三题为什么使用克鲁斯卡尔算法&#xff1f; 旅行商问题&#xff08;Traveling Salesman Problem&#xff0c;TSP&#xff09;是一个著名的组合优化问题&#xff0c;描述的是一个旅行商要在给定的一系列城市之间找到最短的路径&#xff…

jmeter根据公钥base64对明文密码进行rsa加密

在登录时遇到加密是比较常见的场景&#xff0c;也为安全一般是从服务器动态获取公钥&#xff0c;再根据公钥对密码明文进行rsa加密&#xff0c;做为密码再进行登录使用。所以需要对输入的密码进行处理&#xff0c;即在登录接口中添加前置JSR223进行处理&#xff0c;如下图所示&…

08- OpenCV:形态学操作(膨胀与腐蚀 、提取水平与垂直线)

目录 前言 一、膨胀&#xff08;Dilation&#xff09;与 腐蚀&#xff08;Erosion&#xff09; 二、形态学操作 1、开操作&#xff08;Opening&#xff09; 2、闭操作&#xff08;Closing&#xff09; 3、形态学梯度&#xff08;Morphological Gradient&#xff09; 4、…

【Python数据可视化】matplotlib之设置子图:绘制子图、子图共享x轴坐标、调整子图间距、设置图片大小

文章传送门 Python 数据可视化matplotlib之绘制常用图形&#xff1a;折线图、柱状图&#xff08;条形图&#xff09;、饼图和直方图matplotlib之设置坐标&#xff1a;添加坐标轴名字、设置坐标范围、设置主次刻度、坐标轴文字旋转并标出坐标值matplotlib之增加图形内容&#x…

Resemble Enhance音频失真损坏修复AI工具:一个开源语音超分辨率AI模型

Resemble Enhance是一款强大的音频处理工具&#xff0c;可以将嘈杂的录音转化为清晰而有力的声音&#xff0c;为用户提供更优质的听觉体验。这个工具不仅可以有效去除录音中的各种噪声和杂音&#xff0c;还能够恢复音频失真并扩展音频带宽&#xff0c;使原本的声音听起来更加清…

RT-Thread Studio学习(十三)DAC

RT-Thread Studio学习&#xff08;十三&#xff09;DAC 一、简介二、新建RT-Thread项目并使用外部时钟三、启用DAC四、测试五、总结 一、简介 本文将基于STM32F407VET芯片介绍如何在RT-Thread Studio开发环境下使用DAC设备。硬件及开发环境如下&#xff1a; OS WIN10STM32F40…