Flutter图片蒙层背景的实现

2024-03-11 18:40

本文主要是介绍Flutter图片蒙层背景的实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

为了使FlutterGithub APP项目详情页更酷炫,在头部加了一个图片蒙层背景,先上效果图。

一、上效果图

二、上原理

其实很简单,由一个Stack堆叠而成,该结构可以分为三层:

  1. 最底层:放置一张背景图。
  2. 中间层:使用APP当前主题色做一个透明处理,然后覆盖。(为了使整体看起来更和谐)
  3. 最顶层:对背景做一个高斯模糊处理,然后放置顶层元素。

三、上代码

//图片蒙层背景的实现
Stack(children: <Widget>[//图片加载loadingCenter(child: new CircularProgressIndicator()),//第一层是背景图Container(width: double.infinity,child: FadeInImage.memoryNetwork(placeholder: kTransparentImage,image: personInfo.avatar_url,fit: BoxFit.cover),),//第二层是当前主题色的半透明处理Container(color: Theme.of(context).primaryColor.withOpacity(0.5),width: double.infinity,),//第三层是对前两层背景做高斯模糊处理,然后显示上面的内容ClipRRect(child: BackdropFilter(filter: ImageFilter.blur(sigmaX: 5, sigmaY: 5),child: Container(width: double.infinity,height: 200,child: _headPersonInfo(personInfo),  //背景上面的其他组件),),),],
),

四、注意点

BackDropFilter是Flutter提供的实现高斯模糊的过滤器组件,如果直接使用,会发现整个应用程序页面都是模糊的,并不是我们想要的效果。查看BackDropFilter的源码注释如下:

/// A widget that applies a filter to the existing painted content and then
/// paints [child].
///
/// The filter will be applied to all the area within its parent or ancestor
/// widget's clip. If there's no clip, the filter will be applied to the full
/// screen.
///......
class BackdropFilter extends SingleChildRenderObjectWidget {
...........

注释意思大致是如果没有剪辑,过滤器将应用于整个屏幕。
所以要使用ClipRRect或者其他裁剪组件包裹BackDropFilter使用。

附录: BackDropFilter的使用技巧:Flutter BackdropFilter 实现高斯模糊

五、项目介绍

项目地址:用flutter实现的一款界面精美的Github App
介绍:用Flutter实现的一款界面精美、功能较全、体验良好的Github客户端。支持多语言、换肤等功能。代码简单易懂且有充分的注释,很适用于学习Flutter。

这篇关于Flutter图片蒙层背景的实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/798711

相关文章

Python+Tkinter实现Windows Hosts文件编辑管理工具

《Python+Tkinter实现WindowsHosts文件编辑管理工具》在日常开发和网络调试或科学上网场景中,Hosts文件修改是每个开发者都绕不开的必修课,本文将完整解析一个基于Python... 目录一、前言:为什么我们需要专业的Hosts管理工具二、工具核心功能全景图2.1 基础功能模块2.2 进

Gradle在国内配置镜像加速的实现步骤

《Gradle在国内配置镜像加速的实现步骤》在国内使用Gradle构建项目时,最大的痛点就是依赖下载贼慢,甚至卡死,下面教你如何配置国内镜像加速Gradle下载依赖,主要是通过改写repositori... 目录引言一、修改 build.gradle 或 settings.gradle 的 reposito

使用FileChannel实现文件的复制和移动方式

《使用FileChannel实现文件的复制和移动方式》:本文主要介绍使用FileChannel实现文件的复制和移动方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录使用 FileChannel 实现文件复制代码解释使用 FileChannel 实现文件移动代码解释

Spring实现Bean的初始化和销毁的方式

《Spring实现Bean的初始化和销毁的方式》:本文主要介绍Spring实现Bean的初始化和销毁的方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Bean的初始化二、Bean的销毁总结在前面的章节当中介绍完毕了ApplicationContext,也就

python+OpenCV反投影图像的实现示例详解

《python+OpenCV反投影图像的实现示例详解》:本文主要介绍python+OpenCV反投影图像的实现示例详解,本文通过实例代码图文并茂的形式给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一、前言二、什么是反投影图像三、反投影图像的概念四、反向投影的工作原理一、利用反向投影backproj

Django之定时任务django-crontab的实现

《Django之定时任务django-crontab的实现》Django可以使用第三方库如django-crontab来实现定时任务的调度,本文主要介绍了Django之定时任务django-cront... 目录crontab安装django-crontab注册应用定时时间格式定时时间示例设置定时任务@符号

Python中edge-tts实现便捷语音合成

《Python中edge-tts实现便捷语音合成》edge-tts是一个功能强大的Python库,支持多种语言和声音选项,本文主要介绍了Python中edge-tts实现便捷语音合成,具有一定的参考价... 目录安装与环境设置文本转语音查找音色更改语音参数生成音频与字幕总结edge-tts 是一个功能强大的

Java实现按字节长度截取字符串

《Java实现按字节长度截取字符串》在Java中,由于字符串可能包含多字节字符,直接按字节长度截取可能会导致乱码或截取不准确的问题,下面我们就来看看几种按字节长度截取字符串的方法吧... 目录方法一:使用String的getBytes方法方法二:指定字符编码处理方法三:更精确的字符编码处理使用示例注意事项方

使用Python和PaddleOCR实现图文识别的代码和步骤

《使用Python和PaddleOCR实现图文识别的代码和步骤》在当今数字化时代,图文识别技术的应用越来越广泛,如文档数字化、信息提取等,PaddleOCR是百度开源的一款强大的OCR工具包,它集成了... 目录一、引言二、环境准备2.1 安装 python2.2 安装 PaddlePaddle2.3 安装

嵌入式Linux之使用设备树驱动GPIO的实现方式

《嵌入式Linux之使用设备树驱动GPIO的实现方式》:本文主要介绍嵌入式Linux之使用设备树驱动GPIO的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、设备树配置1.1 添加 pinctrl 节点1.2 添加 LED 设备节点二、编写驱动程序2.1