Flutter之SystemChrome全局设置

一、简介

SystemChrome作为一个全局属性,很像 Android 的 Application,功能很强大。

二、使用详解

2.1 setPreferredOrientations 设置屏幕方向

在我们日常应用中可能会需要设置横竖屏或锁定单方向屏幕等不同要求,通过 setPreferredOrientations 配合实现。

简单可以按 portraitUp 上 / portraitDown 下 / landscapeLeft 右 / landscapeRight 左 来区分。

注意:landscapeLeft 是以 portraitUp 顺时针旋转 90 度;landscapeRight 是以逆时针旋转 90 度,故是视觉相反。

单方向

若需要固定应用为单一方向,仅需设置所需要的方向属性即可。

// 竖直上
SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
// 竖直下
SystemChrome.setPreferredOrientations([DeviceOrientation.portraitDown]);
// 水平左
SystemChrome.setPreferredOrientations([DeviceOrientation.landscapeLeft]);
// 水平右
SystemChrome.setPreferredOrientations([DeviceOrientation.landscapeRight]);
多方向

若需要应用随重力感应变化方向,需设置多个方向属性。

// 竖直方向
SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp, DeviceOrientation.portraitDown]);
// 水平方向
SystemChrome.setPreferredOrientations([DeviceOrientation.landscapeLeft, DeviceOrientation.landscapeLeft]);
// 多方向
SystemChrome.setPreferredOrientations([DeviceOrientation.landscapeLeft, DeviceOrientation.landscapeLeft, DeviceOrientation.portraitUp]);

portraitDown 属性请注意,多方向时一般不会有效果,系统默认不会颠倒;

多方向设置时初始方向分两种情况,第一种:当前重力感应方向不在设置多方向列表中,初始方向为列表第一个设置方法;第二种:当前重力感应方向在设置多方向列表中,无论顺序第几位,默认均展示当前重力感应方向(非 portraitDown)。

2.2 setEnabledSystemUIOverlays 设置状态栏是否隐藏

是指定在应用程序运行时可见的系统叠加,主要对状态栏的操作,读起来比较拗口,但是看测试用例就很明了;参数分 top 顶部 / bottom 底部 两种;

SystemUiOverlay.top

默认隐藏底部虚拟状态栏(需手机支持虚拟状态栏设备),即三大金刚键;获取焦点后展示状态栏,展示大小为去掉状态栏时整体大小;

SystemChrome.setEnabledSystemUIOverlays([SystemUiOverlay.top]);
SystemUiOverlay.bottom

默认隐藏顶部虚拟状态栏,获取焦点后展示状态栏,展示大小为去掉状态栏时整体大小;

SystemChrome.setEnabledSystemUIOverlays([SystemUiOverlay.bottom]);

2.3 setSystemUIOverlayStyle 设置状态栏样式

setSystemUIOverlayStyle 用来设置状态栏顶部和底部样式,默认有 light 和 dark 模式,也可以按照需求自定义样式;

systemNavigationBarColor

该属性仅用于 Android 设备且 SDK >= O 时,底部状态栏颜色;

SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(systemNavigationBarColor: Colors.pink));
systemNavigationBarDividerColor

该属性仅用于 Android 设备且 SDK >= P 时,底部状态栏与主内容分割线颜色,效果不是很明显;

SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(systemNavigationBarDividerColor: Colors.yellow));
systemNavigationBarIconBrightness

该属性仅用于 Android 设备且 SDK >= O 时,底部状态栏图标样式,主要是三大按键颜色;

SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(systemNavigationBarColor: Colors.pink));
statusBarColor

该属性仅用于 Android 设备且 SDK >= M 时,顶部状态栏颜色;

SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(statusBarColor: Colors.red));
statusBarIconBrightness

该属性仅用于 Android 设备且 SDK >= M 时,顶部状态栏图标的亮度;

SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(statusBarIconBrightness: Brightness.dark));
statusBarBrightness

该属性仅用于 iOS 设备顶部状态栏亮度;

SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(statusBarBrightness: Brightness.light));

2.4 setApplicationSwitcherDescription 设置状态切换显示

该属性显示效果是在应用程序切换器相关的应用程序的当前状态时。

整体来说 Flutter 对顶部底部状态栏的设置很方便。

SystemChrome.setApplicationSwitcherDescription(const ApplicationSwitcherDescription(label: "Demo Flutter", primaryColor: 0xFFE53935)).then((_) {runApp(new MyApp());
});

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

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

相关文章

JavaScript高级——作用域和作用链

1、概念理解: —— 就是一块“地盘”,一个代码所在的区域 —— 静态的(相对于上下文对象),在编写代码时就确定了 2、分类 ① 全局作用域 ② 函数作用域 ③ 没有块作用域(ES6有了) 3、作用 …

【秋招笔试】9.09阿里国际秋招(已改编)-三语言题解

🍭 大家好这里是 春秋招笔试突围,一起备战大厂笔试 💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 大厂实习经历 ✨ 本系列打算持续跟新 春秋招笔试题 👏 感谢大家的订阅➕ 和 喜欢💗 和 手里的小花花🌸 ✨ 笔试合集传送们 -> 🧷春秋招笔试合集 🍒 本专栏已收集…

QT如何通过QTableWidget控件开发表格功能

在Qt中,QTableWidget是一个高级表格控件,它允许你直接在表格中操作行、列和单元格。以下是使用QTableWidget控件开发表格功能的基本步骤和技巧: 1. 包含必要的头文件 在你的Qt项目中,你需要包含QTableWidget的头文件&#xff0c…

WPF利用Path自定义画头部导航条(TOP)样式

1;新建两个多值转换器,都有用处,用来动态确定PATH的X,Y州坐标的。 EndPointConverter 该转换器主要用来动态确定X轴,和Y轴。用于画线条的。 internal class EndPointConverter : IMultiValueConverter {public object Convert(object[] val…

GIS 中的 3D 分析

GIS 中的 3D 分析 3D 分析已成为 GIS 的一个发展趋势,因为它能够更好地表现现实世界。 这不仅仅是为了得到漂亮的图片。对于某些类型的问题,3D 分析有时是解决它们的唯一方法。 3D 数据类型的激增也推动了这一需求。例如,LiDAR、BIM、UAV、…

VS Code 配置 Rust-Analyzer 报错

报错信息: Bootstrap Error" rust-analyzer requires glibc > 2.28 in latest build. 参考了好多地方, https://github.com/rust-lang/rust-analyzer/issues/11558 https://blog.csdn.net/aLingYun/article/details/120923694 https://rust-anal…

C++——⼆叉搜索树

文章目录 一、 ⼆叉搜索树的概念二、⼆叉搜索树的性能分析三、⼆叉搜索树的插⼊四、⼆叉搜索树的查找五、⼆叉搜索树的删除六、二叉搜索树的有序遍历七、⼆叉搜索树的实现代码八、二叉搜索树key与key_value的应用key的应用key_value的应用key/value⼆叉搜索树代码实现 一、 ⼆叉…

Ollama的安装及使用

文章目录 1. ollama 下载2. linux安装3. windows安装4. 使用ollama 1. ollama 下载 下载地址:https://ollama.com/download 2. linux安装 执行命令: curl -fsSL https://ollama.com/install.sh | sh设置启动访问IP和模型存储路径: vim /…

C++类与对象深度解析(一):从抽象到实践的全面入门指南

文章目录 C 类与对象——详细入门指南前言1. 类的定义1.1 类定义的基本格式示例代码解释 1.2 访问限定符示例代码解释 1.3 类域示例代码解释 1.4 成员命名规范常见的命名约定:示例:拓展: 1.5 class与struct的默认访问权限示例: 2.…

搭建Windows下的Rust开发环境

【图书介绍】《Rust编程与项目实战》-CSDN博客 《Rust编程与项目实战》(朱文伟,李建英)【摘要 书评 试读】- 京东图书 (jd.com) Rust编程与项目实战_夏天又到了的博客-CSDN博客 2.1.1 安装vs_buildtools 在Windows系列操作系统中,Rust开发环境需要依…

归并排序(Merge Sort)

什么是归并排序 归并排序(Merge Sort)是一种经典的排序算法,它采用分治法(Divide and Conquer)策略,将一个大数组分为两个小数组,分别进行排序,然后将这两个已排序的小数组合并成一个…

RealSense L515相机使用踩坑记录

Realsense Viewer以及ROS驱动安装 要想通过ROS驱动Realsense系列产品,需要首先安装Realsense Viewer以及对应版本的realsense-ros驱动。 Realsense Viewer安装 Realsense Viewer的安装参考文章Linex Ubuntu环境下 Intel Realsense D435I 驱动ROS驱动安装配置 安…

docker进入容器运行命令

Docker容器的基本操作 在深入讨论如何进入容器并运行命令之前,让我们先回顾一下Docker容器的一些基本操作: 列出容器:使用docker ps命令列出当前正在运行的容器。如果你还想看到已经停止的容器,可以添加-a或--all选项。 启动容器…

音视频开发常见的开源项目汇总

FFmpeg 地址:https://ffmpeg.org/介绍:FFmpeg 是一个非常强大的开源多媒体框架,它可以用来处理视频和音频文件。它支持多种格式的转换、编码、解码、转码、流处理等。FFmpeg 包括了 libavformat、libavcodec、libavutil、libswscale、libpos…

JAVA学习笔记01-变量的初始化

package day01; public class VarDemo { public static void main(String[] args) { int a; //int b,c,d; // int a; int e 300; //声明一个int(整数)的变量名为e并为e存储了300这样的整数数据 声明时并初始化 int f; //声明一个…

组播 2024 9 11

PIM(Protocol Independent Multicast)是一种常用的组播路由协议,其独立于底层的单播路由协议,能够在多种网络环境中有效地实现多播路由功能。PIM主要有两种模式:PIM Sparse Mode (PIM-SM) 和 PIM Dense Mode (PIM-DM)&…

sqlx1.3.4版本的问题

sqlx1.3.4版本存在问题,在调用sqlx的Select方法时,如果传入的dest是一个slice且slice不为空,查询结果将会追加在这个slice已有的元素后面。这位用户认为这个行为是“a little surprising”的,且与json 反序列化的表现不一致&#…

【C++题解】1580. 扫雷(mine)

欢迎关注本专栏《C从零基础到信奥赛入门级(CSP-J)》 问题:1580. 扫雷(mine) 类型:二维数组 题目描述: 扫雷游戏是一款十分经典的单机小游戏。在 n 行 m 列的雷区中有一些格子含有地雷&#x…

I/O 多路复用:`select`、`poll`、`epoll` 和 `kqueue` 的区别与示例

I/O 多路复用是指在一个线程内同时监控多个文件描述符(File Descriptor, FD),以便高效地处理多个 I/O 事件。在 UNIX/Linux 和 BSD 系统中,select、poll、epoll、kqueue 都是实现 I/O 多路复用的系统调用。它们各有特点&#xff0…

el-input设置type=‘number‘和v-model.number的区别

el-input设置typenumber’与设置.number修饰符的区别 1. 设置type‘number’ 使用el-input时想收集数字类型的数据,我们首先会想到typenumber,设置完type为number时会限制我们输入的内容只能为数字,不能为字符/汉字等非数字类型的数值&…