第一百六十六回 如何创建以图片为背景的页面

news2024/10/7 20:28:42

文章目录

  • 1. 概念介绍
  • 2. 实现方法
    • 2.1 整体思路
    • 2.2 具体步骤
  • 3. 示例代码
  • 4. 内容总结

我们在上一章回中介绍了WheelChoose组件相关的内容,本章回中将介绍如何创建以图片为背景的页面,闲话休提,让我们一起Talk Flutter吧。

1. 概念介绍

在实际项目中有些页面使用纯色做背景,有些页面使用图片做背景,使用纯色做背景时只需要修改容器的color或者background属性就可以,这里的容器可以是充当整个页面的Scaffold或者局部页面的Container.使用图片做背景时就不能修改容器的属性了,因为容器没有提供存放图片的属性。那么怎么办呢?自定义一个容器?还是使用其它的方法?本章回中将解决此问题。

2. 实现方法

2.1 整体思路

我们准备使用Stack这种布局,把图片放在它的最底层,然后把其它的页面组件叠加在图片上,这样就相当于把图片当作了其它页面组件的背景,进而实现了以图片为背景的页面。

这种思路是一种图层的思想,把不同的内容当作不同的图层,然后充分利用Stack叠加组件的原理,把多个图层叠加在一起。

2.2 具体步骤

介绍完整体的思路后,我们介绍具体的操作步骤,其中会包含很多的细节,大家要看仔细了哦!

  • 使用Scaffold组件当作页面,它的body属性对应Stack组件;
  • 在Stack组件中包含一个Image组件和一个SizedBox组件;
  • 调整Image和SizedBox组件的宽度和高度,确保它们与屏幕的宽度和高度保持一致;
  • 把Scaffold组件的extendBodyBehindAppBar设置为true,让body中的内容扩展到AppBar和StatusBar中;
  • 把AppBar的forceMaterialTransparency属性修改true,让AppBar的背景变成透明色,这样才能看到body中扩展的内容;
  • 把StatusBar设置成透明色,修改方法参考之前博客;这样才能看到body中扩展的内容;

上面的步骤中,其实只需要前三步就可以创建一个带图片背景的页面,最后三步的内容是为了让图片填充满整个屏幕,包含页面上方的AppBar以及手机屏幕最上方的StatusBar.填充的原理就是先扩展body中的内容,然后把AppBar和StutasBar设置成透明色,这样就可以看到扩展的内容了。大家可以依据项目需求自行取舍。

此外,还有一些注意事项需要说明:

  • 给Stack组件添加children组件时,Image组件在所有组件的前面,这样才能保证它在Stack组件的最底层;
  • 给Image组件的fit属性设置值,这样可以保证背景图片填充满整个页面;
  • 给SizeBox组件设置一个顶部边距,不然它里面的内容会和StatusBar中的内容重叠;

3. 示例代码

Scaffold(
  appBar: AppBar(
    title: const Text("Example of Background Image"),

    ///让appBar变成透明色,不然会覆盖扩展的body内容
    forceMaterialTransparency: true,
  ),

  ///让body中的内容扩展到AppBar和statusBae,需要在runAppBar前设置状态栏为透明色
  extendBodyBehindAppBar: true,
  body: Stack(
    children: [
      const Image(
        width: double.infinity,
        height: double.infinity,
        fit: BoxFit.fill,
        image: AssetImage("images/ex.png"),
      ),
      Padding(
        //需要添加边距:status+appBar的高度,不然会上升屏幕最上方
        padding: const EdgeInsets.only(top: 56*2),
        child: SizedBox(
          width: double.infinity,
          height: double.infinity,

          ///调试时使用,方便观察容器的大小
          // color: Colors.green,
          child: Column(
            mainAxisAlignment: MainAxisAlignment.spaceAround,
            crossAxisAlignment: CrossAxisAlignment.center,
            children: [
              const Text(
                  style: TextStyle(
                    color: Colors.redAccent,
                    fontSize: 32,
                  ),
                  "body of page"),
              ElevatedButton(onPressed: () {}, child: const Text("button"))
            ],
          ),
        ),
      )
    ],
  ),
);

我们在上面的示例代码中添加了注释,这些都是前面步骤中需要注意的内容。示例代码完全演示了最后一个步骤外的所有的步骤,下面是程序的运行效果图,图中的页面带有图片背景,图片一起延伸到了AppBar和StatusBar中,页面的主体是一个红色的文本和蓝色的按钮。

在这里插入图片描述

4. 内容总结

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

  • 实现带有背景图片的页面使用了图层叠加思想,通过Stack来实现叠加功能;
  • Stack中的内容需要注意叠加顺序,同时要修改内容的宽度和高度,使其和屏幕保持一致;
  • 通过修改Scaffold中的相关属性,可以让页面中的背景图片延伸到AppBar和StatusBar中;

看官们,与"如何创建以图片为背景的页面"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SQL注入漏洞及五大手法

SQL注入漏洞 文章目录 SQL注入漏洞万能用户名 SQL注入分类两大基本类型五大手法提交参数方式注入点的位置 注入点判断SQL注入的危害sql漏洞挖掘Mysql库中的注释 SQL注入基本手法联合查询条件 报错注入group byextractvalueupdataxml 布尔盲注延时注入 案例获取cms网站后台管理员…

k8s 目录和文件挂载

k8s生产中常用的volumes挂载方式有:hostPath、pv,pvc、nfs 1.hostPath挂载 hostPath是将主机节点文件系统上的文件或目录挂载到Pod 中,同时pod中的目录或者文件也会实时存在宿主机上,如果pod删除,hostpath中的文…

字符函数和字符串函数详解

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 1. 字符分类函数 2. 字符转换函数 3. strlen的使用和模拟实现 3.1strlen的使用: 3.2strlen的模拟实现: 4. strcpy的使用和模拟实现 4.1strc…

YOLOv8-Cls推理详解及部署实现

目录 前言一、YOLOv8-Cls推理(Python)1. YOLOv8-Cls预测2. YOLOv8-Cls预处理3. YOLOv8-Cls推理 二、YOLOv8-Cls推理(C)1. ONNX导出2. YOLOv8-Cls预处理3. YOLOv8-Cls推理 三、YOLOv8-Cls部署1. 源码下载2. 环境配置2.1 配置CMakeLists.txt2.2 配置Makefile 3. ONNX导出4. 源码修…

网络安全深入学习第八课——代理与端口转发

文章目录 一、什么是代理二、正向代理三、反向代理四、正向和反向代理模拟复现 一、什么是代理 代理服务器英文全称是Proxy Server,其功能就是代理网络用户去取得网络信息。 形象的说:它是网络信息的中转站。在一般情况下,我们使用网络浏览…

​软考-高级-信息系统项目管理师教程 第四版【第20章-高级项目管理-思维导图】​

软考-高级-信息系统项目管理师教程 第四版【第20章-高级项目管理-思维导图】 课本里章节里所有蓝色字体的思维导图

解决 win11 vmware 中centos 网络不能访问外网

解决 win11 vmware 中centos 网络不能访问外网 1、进入win11 高级设置,找到centos 虚拟机使用的网卡 2、看网卡的其他属性 3、按照红圈部分,配置成一样的就行 4、进入到虚拟机配置中,配置成如图一样的NAT模式 5、再进入编辑 -》虚拟网络编辑…

30道高频Vue面试题快问快答

面试中的快问快答 快问快答的情景在面试中非常常见。 在面试过程中,面试官通常会使用快问快答的方式来快速评估面试者的基础知识、思维能力和反应速度。 这种情景下,面试官会提出一系列简短的问题,并期望面试者能够迅速做出回答或提供简洁明…

仿真实现lio_sam建图和ndt_matching定位

文章目录 一、仿真环境二、lio_sam建图1.修改配置文件2.开始建图 三、ndt_matching定位1.新建启动文件2.启动 总结 一、仿真环境 使用现有开源的仿真环境—从零开始搭建一台ROS开源迷你无人车,作者已经配置好小车模型以及gazebo环境,imu频率已改为200HZ…

Leetcode—2586.统计范围内的元音字符串数【简单】

2023每日刷题&#xff08;二十二&#xff09; Leetcode—2586.统计范围内的元音字符串数 实现代码 class Solution { public:int vowelStrings(vector<string>& words, int left, int right) {int ans 0;for(int i left; i < right; i) {string s words[i];i…

原子化 CSS 真能减少体积么?

前言 最近看到这样一篇文章&#xff1a;《要喷也得先做做功课吧&#xff1f;驳Tailwind不好论》 个人觉得说的还是有一定道理的&#xff0c;就是该作者的语气态度可能稍微冲了点&#xff1a; 不过他说的确实有道理&#xff0c;如果这种原子化工具真的如评论区里那帮人说的那么…

苹果手机的警示!电子产品无线升级=救命的机会

大家日常使用手机都知道&#xff0c;手机系统和软件三天两头就收到更新提醒。 只要用户手机联网&#xff0c;就可以想更新就更新&#xff0c;觉得原本使用顺手也可以不更新。 可各大厂商的初衷是好的&#xff0c;希望改善系统的一些bug问题&#xff0c;也会给我们带来一些全新功…

强化学习中的基本术语

0.引言 本篇文章主要介绍强化学习中最基本的术语&#xff08;不包含具体算法&#xff09;&#xff0c;主要提供给刚入门强化学习的朋友们&#xff0c;让大家快速掌握一些基本术语&#xff0c;之后对看强化学习算法内容有着更好地理解。 1.基本术语 1.1.state 中文称为“状态…

基于ssm企业人事管理系统

功能如图所示 摘要 基于SSM&#xff08;Spring SpringMVC MyBatis&#xff09;框架的企业人事管理系统是一种高效、可定制化的人力资源管理解决方案。该系统整合了现代企业的人力资源需求&#xff0c;提供了一套功能丰富的工具&#xff0c;用于管理员工信息、薪资、考勤、招聘…

C语言--typedef的使用

前言 在C语言中使用结构体时必须加上struct这个关键字,那有没有办法省略这个呢?要想达到这个目的就 需要用到关键字typedef,顾名思义”类型定义”。 typedef 数据类型 新的别名; 它是用来操作数据类型。其主要作用有两个: 1.给一个较长较复杂的类型取一个简单的别名。 2.给类…

python 之字典的相关知识

文章目录 字典的基本特点&#xff1a;1. 定义2. 键唯一性3. 可变性4. 键的类型 基本操作&#xff1a;字典的创建1. 花括号 {}2. dict() 构造函数3. 键值对的 dict() 构造函数使用 zip() 函数创建字典&#xff1a;注意事项访问字典中的值修改和添加键值对删除键值对 字典方法&am…

平衡树相关笔记

引入 二叉查找树 二叉查找树&#xff08;Binary Search Tree&#xff09;&#xff0c;又名二叉搜索树。满足以下性质&#xff1a; 对于非空的左子树&#xff0c;左子树点权值小于根节点。对于非空的右子树&#xff0c;左子树点权值大于根节点。二叉查找树的左右子树均是二叉…

Android修行手册 - 模板匹配函数matchTemplate详解,从N张图片中找到是否包含五星

点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册点击跳转>Scratch编程案例点击跳转>软考全系列 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&…

麒麟v10 安装jenkins

1.想安装哪个版本&#xff1f; https://pkg.jenkins.io/redhat-stable/ 我们查看我们想要哪个版本&#xff1a; 4年前安装的是 Jenkins2.279 版本 现在在docker 上安装的是Version 2.425 版本 2.碰到到的问题 1.安装老版本的Jenkins&#xff0c;会出现安装的插件不兼容&…

win版redis详细安装教程

一、下载 github下载地址 https://github.com/MicrosoftArchive/redis/releases 可选择&#xff1a;下载msi包或zip压缩包 这里我选择的是zip压缩包&#xff0c;直接通过cmd命令窗口操作即可。 二、安装步骤 1、解压Redis压缩包 选中压缩包&#xff0c;右键选择解压&#…