首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Flutter 异常处理之图片篇

我们以简书的文章列表为例,如下图: 假设产品有这样的需求,当右边的封面图加载失败的时候,用一个默认图片替换或者直接让文本横向填充原有图片位置。...不可访问 url,如随便一个字符串 test Widget _buildWidget() { return Image.network('test'); } 终端报错如下: flutter...图片通用异常捕获处理 通过上面的学习,我们可以发现不管是 Image.network 还是 cached_network_image 没法覆盖全上面两种异常的捕获处理。...所以提供一个不需要任何实现的回调即可。 错误回调是可选的,因为我们本篇的主题就是要获取错误回调,所以这里提供了实现。 针对我们上面的 3 个例子,我们看看通用模板是否可以全部捕获。 1....不可访问 url,如随便一个字符串 test Widget _buildWidget() { Image image = Image.network('test'); final

2.3K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Flutter的文本、图片和按钮使用

    图片显示方式很多,如资源图片、网络图片、文件图片等,图片格式各不相同,在Flutter也有多种方式加载不同形式、支持不同格式图片: 加载本地资源图片,如Image.asset(‘images/logo.png...’) 加载本地(File文件)图片,如Image.file(new File(’/storage/xxx/xxx/test.jpg’)) 加载网络图片,如Image.network( 'http://xxx...CachedNetworkImage使用类似Image,除了支持图片缓存,还提供比FadeInImage更强大的加载过程占位与加载错误占位,支持比用图片占位更灵活的自定义控件占位。...加载图片时,不仅给用户展示占位的转圈loading,还提供错误图兜底,以备图片加载出错: CachedNetworkImage( imageUrl: "http://xxx/xxx/jpg...要支持缓存到文件系统,使用CachedNetworkImage。 最后学习按钮控件。Flutter提供多种按钮控件,使用方法类似。

    58920

    【Flutter】Image 组件 ( Image 组件简介 | Image 构造函数 | Image.network 构造函数 | Image.asset 构造函数 )

    缩放图片 : 缩放图片时使用 filterQuality 参数去改变图像的质量 ; 使用 FilterQuality.low 质量设置去缩放图片 ; FilterQuality.low 对应 双线性差值法..., 这会使界面布局非常难看 ; 缩放图片 : 缩放图片时使用 filterQuality 参数去改变图像的质量 ; 使用 FilterQuality.low 质量设置去缩放图片 ; FilterQuality.low...; 资源图像的加载策略是就近加载 ; Image 组件使用可以参考之前的 【Flutter】StatefulWidget 组件 ( Image 组件 | TextField 组件 ) 博客 ; 六、Image.memory..., 如 png 格式 ; 传入未压缩的图片数据 , 如 RGB 数据 , 会报异常 ; 图像尺寸说明 : 如果严格约束图片的宽高 , 需要符合以下任意一个要求 : ① 指定 width 和 height...参数 ; ② 指定 Image 组件放置在严格约束的布局中 ; 如果以上都没有设置 , 那么 Image 组件就是已加载的图片的真实大小 , 这会使界面布局非常难看 ; 缩放图片 : 缩放图片时使用

    2K30

    【Flutter】Hero 动画 ( Hero 动画使用流程 | 创建 Hero 动画核心组件 | 创建源页面 | 创建目的页面 | 页面跳转 )

    : 作为 Hero 动画的 tag 标识 , 同时也是图片的 url 网络地址 ; double width : 用于约束 Hero 组件的宽度 ; 代码示例 : 这里定义核心组件 Hero 组件 ,...ID , 通过该标识 /// 标识两个 Hero 组件之间进行动画过渡 /// 同时该字符串也是图片的 url 网络地址 final String imageUrl; /// 点击后的回调事件...context).pop(); }, ), ), ), ); } ) 四、页面跳转 ---- 使用..., 参考 【错误记录】Flutter 界面跳转报错 ( Navigator operation requested with a context that does not include a Naviga...ID , 通过该标识 /// 标识两个 Hero 组件之间进行动画过渡 /// 同时该字符串也是图片的 url 网络地址 final String imageUrl; /// 点击后的回调事件

    96120

    Flutter 异常处理方案——灰度与降级

    Flutter 中提供了 Zone.runZoned 方法,在 Dart 中,Zone 表示一个代码执行的环境范围,类似于沙盒,可以使用其提供的 onError 回调函数来拦截所有未被捕获的异常。...url:降级的链接,支持参数替换符写法,客户端能够将 Flutter route 的入参拼接成 url query parameters。...若判断非灰度,即命中降级,则拉配置的降级链接,配好 url 参数后使用 WebView 打开降级后的 H5。...也就是说发生异常只会导致当前任务后续的代码不会被执行,用户仍可以继续使用页面中的其他功能,影响面不会太大,此处没有去强制降级处理,仅仅做了错误上报。...,结合产物动态加载与降级策略的启动流程图如下所示: ?

    2.5K10

    【Flutter 专题】122 图解自定义半遮挡头像 SeriesCircleProfile & CircleAvatar

    本地图 & 网络图 和尚在自定义传递头像 URL 时考虑到,可能是网络图也可能是本地图,甚至是两者混合展示的;主要分为两类: 2.1 纯本地图 & 纯网络图 和尚设置 isAsset 为...Image.asset(url) : Image.network(url)))))); ?...CircleAvatar 和尚在设置圆形头像时了解到 CircleAvatar 组件,Flutter 提供了很多绘制圆形的方法,和尚趁此机会简单学习一下 CircleAvatar;CircleAvatar...---- SeriesCircleProfile & CircleAvatar 案例源码 ---- 和尚对于系列折叠头像的自定义较为简单,没有使用复杂的 Canvas 绘制,而是通过 Stack...和 Positioned 进行展示,逻辑更为简单;如有错误,请多多指导!

    1.2K51

    Flutter | 异常处理

    ,Flutter 会自动弹出一个错误页面, 这是因为 Flutter 已经在 build 方法时添加了异常捕获,源码如下: @override void performRebuild() { ........沙箱可以捕获,拦截或修改一些代码行为,如 Zone 中可以捕获日志的输出,Timer 创建,微任务调用的行为,同时 Zone 也可以捕获所有未处理的异常,下面看一下 runZoned() 方法的定义:...error-zone 中发生未捕获的异常(无论是同步还是异步)时都会调用开发者提供的回调,如: runZoned(() { print('hello world'); throw NullThrownError...Flutter 应用中的全部错误了。...需要注意的是 error-zone 内部发生的错误是不会跨越 error-zone 边界的,如果想跨越 error-zone 边界去捕获异常,可以通过共同的源 zone 来捕获,如: var future

    83510

    Flutter 即学即用系列博客——07 RenderFlex overflowed 引发的思考

    背景 在进行 Flutter UI 开发的时候,控制台报出了下面错误: flutter: ══╡ EXCEPTION CAUGHT BY RENDERING LIBRARY >╞════════════...这里的代码是在上一篇的基础上返回下面的 Widget: return Row( children: [ Image.network(...我们写下代码,然后给下效果图你就懂了。...Sample 我们来实现一个简单的 UI。 如下图,可以看到是一个网络错误时,点击重试的页面。 假设你之前习惯了 sketch 边距开发,你看到这个页面,就直接根据边距进行开发,写出了下面的代码。...因此我们看下使用 Expanded 如何实现。 观察一下,我们发现界面大概可以分成 3 块。 每一块占的比例差不多,因此可以如下实现。

    60010

    Flutter实战 | 从 0 搭建「网易云音乐」APP(二、Splash Page、登录页、发现页)

    本系列可能会伴随大家很长时间,这里我会从0开始搭建一个「网易云音乐」的APP出来。 下面是该APP 功能的思维导图: ?...登录逻辑 前面说过,是使用 Provider 来存储用户信息的,那么请求登录也使用 Provider 来控制,以达到 UI 数据分离的效果。...Banner 使用的控件,我之前也分享过文章:Flutter | 封装一个 Banner 轮播图。 其余的也是用我之前写过的Flutter | 定义一个通用的多功能网络请求 Widget。...), ), ); } } 这里我们做的灵活一点,角度和宽高都由调用者来传入。...:封面图的url(必填)•playCount:播放数量,null就不显示(非必填)•width:封面的宽高(默认200) 接下来就简单了,因为前两个组件都已经封装好了: /// 歌单、新碟上架等封装的组件

    2K20

    Flutter基础之Dart语言入门:Future异步使用

    “ Flutter的开发离不开异步处理,dio是Flutter常用的第三方网络请求插件,这篇就带大家来了解下Flutter的异步和dio的使用” Dart类库有非常多的返回Future 或者 Stream...对象的函数,这些函数被称为异步函数,它们只会被设置好一些操作之后返回,如网络请求操作。...async 和 await关键词支持异步编程 01 — Future 用于处理异步操作,异步处理成功了就执行成功的操作,异步处理失败就捕获错误或者停止后续操作,一个Future只会对应一个结果,...Future的所有API的返回值仍然是一个Future对象,所以可以很方便的进行链式调用。...; }).then((data){ print(data); }); Future.catchError 如果异步任务发生错误,可以在catchError中捕获错误 Future.delayed

    1.7K20

    Flutter 网络请求之Dio库

    Flutter 网络请求之Dio库 前言 正文 一、配置项目 二、网络请求 三、封装 ① 单例模式 ② 网络拦截器 ③ 返回值封装 ④ 封装请求 四、结合GetX使用 五、源码 前言   最近再写Flutter...正文   网络请求对于一个线上的App来说是必不可少的,那么Flutter中的网络请求同样也是官方的没有第三方的那么好用,这里我们使用Dio,目前来说比较好用简洁的网络库。...Get库,不了解的可以看看我上一篇文章:Flutter 状态管理之GetX库,创建了一个可观察的变量,然后写了一个请求网络的方法,使用了Dio库的Get请求,请求一个API地址,你可以将这个地址在浏览器中测试...Flutter原生的网络请求是使用HttpClient,使用起来相当繁琐,因此Dio对于HttpClient进行了封装,那么我们为什么还需要对Dio进行封装呢?...① 单例模式   在使用网络请求时,通常会有多个网络请求,我们可以写一个单例,将一些基本的内容写在单例里面,写几个方法供其他地方调用,下面我们首先来写一个单例在lib下新建一个net包,包下新建一个network_manager.dart

    51400

    Flutter实战 | 从 0 搭建「网易云音乐」APP(三、每日推荐、推荐歌单)

    本系列可能会伴随大家很长时间,这里我会从0开始搭建一个「网易云音乐」的APP出来。 下面是该APP 功能的思维导图: ?...1.SliverAppBar2.SliverAppBar 的 bottom3.SliverList 整个页面就是用 CustomScrollView 来做的,但是有一点不同: 平时我们在使用 SliverAppBar...滑上去的时候「播放全部」那一行还停留在上方,是使用了 SliverAppBar 的 bottom参数。 这样一个页面的UI其实就分析完了。 然而!我们回过头看一下两个页面的UI,是不是感觉非常相似!...1.标题,不用多说,是一样的2.SliverAppBar 展开状态时的内容,是不是可以由外部传入3.播放全部,也是一样的,后面有个「共多少首」,也可以由调用者传入4.最下面的歌单,是不是也可以封装出一个组件来...5.忘记标了,还有一个是SliverAppBar展开时的模糊背景,也可以由调用者传入 so,我们从上往下来封装。

    1.5K20

    【Flutter 专题】40 日常小问题小结 (一)

    问题一:嵌套权重异常 和尚在做 Android 时为了屏幕适配,用到权重/比例比较多,Flutter 也提供了实现权重的功能,和尚尝试过 权重基本用法,当时没有涉及到嵌套权重的问题,和尚想要实现的是左侧一张大图...,右侧垂直两张小图,水平方向 1:1 均分,和尚用 Expanded 配合 flex 在嵌套权重时遇到如下问题,于是重新研究一下权重的使用; ?...尝试四: 如果最外层不设置高度时,则考虑根据需求使用带有宽高的 Widget,和尚需要展示图片,故直接用图片占位; 和尚主要想实现图片高度自适应,而宽度随屏幕比例占有,右侧两图正常为左图占位一半...模式可以填满剩余空间,也允许稍小不填满,非强制;相对 loose 使用范围更广。...---- 和尚作为初学者,遇到很多基础的问题,仅做记录;如有错误请多多指导!

    84431
    领券