当前位置: 首页 > news >正文

第四百四十一回

文章目录

  • 1. 概念介绍
  • 2. 使用方法
    • 2.1 获取思路
    • 2.2 获取方法
  • 3. 示例代码
  • 4. 内容总结

我们在上一章回中介绍了"如何获取屏幕相关参数"相关的内容,本章回中将介绍如何获取AppBar的高度.闲话休提,让我们一起Talk Flutter吧。

在这里插入图片描述

1. 概念介绍

我们在上一间章回中介绍了获取屏幕参数相关的内容,同时也提到AppBar的高度容易与屏幕顶部状态栏的高度混淆,不过没有介绍获取AppBar高度的方法,本章回中将
介绍如何获取AppBar的高度。

2. 使用方法

2.1 获取思路

我们在获取AppBar高度时不能像获取屏幕参数一样直接读取MediaQueryData类中成员的值,因为MediaQueryData没有提供相关的成员。我们需要通过计算才可以。
我们没有直接去计算,而是巧妙地通过运行时的错误信息来获取AppBar的高度。整体的思路就是故意在页面中放一个超过页面高度的组件,运行时就会报出错误,从错误
信息中获取AppBar的高度值。

2.2 获取方法

有了整体的思路后,我们将介绍具体的实现方法,详细如下:

  • 使用Scaffold组件创建一个页面;
  • 在Scaffold代表的页面中给appBar和body属性赋值;
  • appBar中只提供title,其它属性先不赋值;
  • body的属性值为一个Container组件,它只包含一个Text组件;
  • 设置Container组件的宽度为屏幕的宽度,高度为屏幕的高度;
    该方法中把Container组件的高度设置为屏幕的高度是不合理的,它已经超过了屏幕的显示范围,不过这是故意为之,通过不合理的过程让程序报错,同时计算出超出屏
    幕尺寸的值就可以间接地计算出AppBar的高度。

3. 示例代码

Scaffold(appBar: AppBar(title: const Text("ListView example AppBar"),),///这个程序可以巧妙地计算出appBar的高度,通过运行时的错误,我的是56body: Container(color: Colors.lightGreen,width: screenWidth,height: (screenHeight - statusBarHeight),child: Text("body of scaffold"),),
);

上面的程序完全按照获取方法中介绍的步骤来实现,代码中的screenHeight表示屏幕的高度,statusBarHeight表示顶部状态栏的高度。
运行该程序就会出现高度不够用的错误,同时在页面上也会有黄黑条纹进行提示。我们可以在页面上和错误信息中看到具体尺寸值,这个值再减去顶部状态栏的高度就是页
中AppBar的高度,下面是运行时的错误信息。///A RenderFlex overflowed by 56 pixels on the bottom.

4. 内容总结

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

  • 页面中AppBar的高度需要通过计算才可以获得;
  • 页面中子组件的长度和宽度不能超过容器的长度和宽度;
  • 我们巧妙地通过程序的错误信息计算出了AppBar的高度,不过实际中不推荐这样去做;
    看官们,与"如何获取AppBar的高度"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!

相关文章:

  • 中兴天机A31 A31PRO 5G zte A2122H te A2022H 解锁BootLoader root权限 教程magisk,原厂刷机包
  • 游戏APP如何提高广告变现收益的同时,保证用户留存率?
  • Apache DolphinScheduler 【安装部署】
  • 四级英语翻译练习4.4
  • 【简单讲解下Tauri】
  • Flask Python:数据库多条件查询,flask中模型关联
  • FLink学习(三)-DataStream
  • 零长数组,whatwhy
  • Java面试宝典
  • JS-11A/11时间继电器 板前接线 JOSEF约瑟
  • 详细介绍如何利用 A star(A*)算法解决8数码问题
  • 基于Java,SSM,html,Vue在线视频播放管理系统网站设计
  • Windows通过git配置github代码仓库全流程
  • Android compose 使用指纹验证
  • GDAL升级到3.0之后遇到的坑
  • 2017-09-12 前端日报
  • Angular 响应式表单 基础例子
  • classpath对获取配置文件的影响
  • download使用浅析
  • Iterator 和 for...of 循环
  • Kibana配置logstash,报表一体化
  • Python 反序列化安全问题(二)
  • Python利用正则抓取网页内容保存到本地
  • Redash本地开发环境搭建
  • 测试开发系类之接口自动化测试
  • 工作中总结前端开发流程--vue项目
  • 极限编程 (Extreme Programming) - 发布计划 (Release Planning)
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  • 人脸识别最新开发经验demo
  • 如何在GitHub上创建个人博客
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • 《天龙八部3D》Unity技术方案揭秘
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • ​ ​Redis(五)主从复制:主从模式介绍、配置、拓扑(一主一从结构、一主多从结构、树形主从结构)、原理(复制过程、​​​​​​​数据同步psync)、总结
  • ​Spring Boot 分片上传文件
  • ​人工智能书单(数学基础篇)
  • #《AI中文版》V3 第 1 章 概述
  • #QT项目实战(天气预报)
  • $L^p$ 调和函数恒为零
  • (5)STL算法之复制
  • (安卓)跳转应用市场APP详情页的方式
  • (附源码)ssm高校实验室 毕业设计 800008
  • (附源码)ssm航空客运订票系统 毕业设计 141612
  • (附源码)计算机毕业设计ssm高校《大学语文》课程作业在线管理系统
  • (四)库存超卖案例实战——优化redis分布式锁
  • (五)关系数据库标准语言SQL
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • (转载)OpenStack Hacker养成指南
  • .NET Core 和 .NET Framework 中的 MEF2
  • .NET Standard / dotnet-core / net472 —— .NET 究竟应该如何大小写?
  • .sh文件怎么运行_创建优化的Go镜像文件以及踩过的坑
  • .ui文件相关
  • .vue文件怎么使用_vue调试工具vue-devtools的安装
  • @Builder用法
  • @EnableAsync和@Async开始异步任务支持