首页
学习
活动
专区
工具
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.2K30
您找到你想要的搜索结果了吗?
是的
没有找到

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提供多种按钮控件,使用方法类似。

40120

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 组件就是已加载图片真实大小 , 这会使界面布局非常难看 ; 缩放图片 : 缩放图片时使用

1.4K30

Flutter中网络图片加载和缓存实现

前言 应用开发中经常会碰到网络图片加载,通常我们会对图片进行缓存,以便下次加载同一张图片时不用再重新下载,在包含有大量图片应用中,会大幅提高图片展现速度、提升用户体验且为用户节省流量。...开发者可根据自定义ImageProvider来创建Image。 命名构造函数: Image.network(String src, ...) src即是根据网络获取图片url地址。...Image.network源码分析 下面通过源码我们来看下Image.network加载网络图片具体实现。...final ImageProvider image; 首先,使用Image.network命名构造函数创建Image对象时,会同时初始化实例变量image,image是一个ImageProvider对象...等,网络加载图片使用就是NetworkImage。

3.1K30

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

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

2.4K10

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; /// 点击后回调事件

81320

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

75610

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

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

54610

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.5K20

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.1K51

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

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

1.9K20

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.3K20

FlutterError捕获及处理

Flutter 框架可以捕获运行期间错误,包括构建期间、布局期间和绘制期间。 所有 Flutter 错误均会被回调方法 FlutterError.onError 捕获。...如果在调用堆栈上没有 Flutter 回调情况下发生错误(这里可以理解为FlutterError.onError仅仅可以捕获主线程错误,而其他异步线程错误则需要Zone来捕获),它们由发生区域...捕获Flutter错误 重写FlutterErroronError即可,如下 import 'dart:io'; import 'package:flutter/foundation.dart';...//处理线上错误统计上传 }; runApp(MyApp()); } 上面我们重写了FlutterError.onError,这样就可以捕获错误,第一行代码就是将error展示到控制台,这样我开发时就会在控制台很方便看到错误...如果你想捕获这样错误,请使用 runZonedGuarded。

2.4K10
领券