Flutter 41: 图解神秘的 SystemChrome
小菜在切换横竖屏时用到 SystemChrome,小菜理解它作为一个全局属性,很像 Android 的 Application,功能很强大。
setPreferredOrientations
在我们日常应用中可能会需要设置横竖屏,或锁定单方向屏幕等不同要求,通过 setPreferredOrientations 配合实现;简单可以按 portraitUp 上 / portraitDown 下 / landscapeLeft 右 / landscapeRight 左 来区分;
Tips:landscapeLeft 是以 portraitUp 顺时针旋转 90 度;landscapeRight 是以逆时针旋转 90 度,故是视觉相反。
1. 单方向
若需要固定应用为单一方向,仅需设置所需要的方向属性即可;
// 竖直上
SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
// 竖直下
SystemChrome.setPreferredOrientations([DeviceOrientation.portraitDown]);
// 水平左
SystemChrome.setPreferredOrientations([DeviceOrientation.landscapeLeft]);
// 水平右
SystemChrome.setPreferredOrientations([DeviceOrientation.landscapeRight]);
2. 多方向
若需要应用随重力感应变化方向,需设置多个方向属性;
// 竖直方向
SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp, DeviceOrientation.portraitDown]);
// 水平方向
SystemChrome.setPreferredOrientations([DeviceOrientation.landscapeLeft, DeviceOrientation.landscapeLeft]);
// 多方向
SystemChrome.setPreferredOrientations([DeviceOrientation.landscapeLeft, DeviceOrientation.landscapeLeft, DeviceOrientation.portraitUp]);
Tips:
- portraitDown 属性请注意,多方向时一般不会有效果,系统默认不会颠倒;
- 多方向设置时初始方向分两种情况,第一种:当前重力感应方向不在设置多方向列表中,初始方向为列表第一个设置方法;第二种:当前重力感应方向在设置多方向列表中,无论顺序第几位,默认均展示当前重力感应方向(非 portraitDown)。
setEnabledSystemUIOverlays
setEnabledSystemUIOverlays 是指定在应用程序运行时可见的系统叠加,主要对状态栏的操作,读起来比较拗口,但是看测试用例就很明了;参数分 top 顶部 / bottom 底部 两种;
1. SystemUiOverlay.top
默认隐藏底部虚拟状态栏(需手机支持虚拟状态栏设备),即三大金刚键;获取焦点后展示状态栏,展示大小为去掉状态栏时整体大小;
SystemChrome.setEnabledSystemUIOverlays([SystemUiOverlay.top]);
2. SystemUiOverlay.bottom
默认隐藏顶部虚拟状态栏,获取焦点后展示状态栏,展示大小为去掉状态栏时整体大小;
SystemChrome.setEnabledSystemUIOverlays([SystemUiOverlay.bottom]);
3. 两者皆有
即默认情况,顶部底部状态栏均展示;
SystemChrome.setEnabledSystemUIOverlays([SystemUiOverlay.top, SystemUiOverlay.bottom]);
setSystemUIOverlayStyle
setSystemUIOverlayStyle 用来设置状态栏顶部和底部样式,默认有 light 和 dark 模式,也可以按照需求自定义样式;
1. systemNavigationBarColor
该属性仅用于 Android 设备且 SDK >= O 时,底部状态栏颜色;
SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(systemNavigationBarColor: Colors.pink));
2. systemNavigationBarDividerColor
该属性仅用于 Android 设备且 SDK >= P 时,底部状态栏与主内容分割线颜色,效果不是很明显;
SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(systemNavigationBarDividerColor: Colors.yellow));
3. systemNavigationBarIconBrightness
该属性仅用于 Android 设备且 SDK >= O 时,底部状态栏图标样式,主要是三大按键颜色;
SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(systemNavigationBarColor: Colors.pink));
4. statusBarColor
该属性仅用于 Android 设备且 SDK >= M 时,顶部状态栏颜色;
SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(statusBarColor: Colors.red));
5. statusBarIconBrightness
该属性仅用于 Android 设备且 SDK >= M 时,顶部状态栏图标的亮度;但小菜感觉并不明显;
SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(statusBarIconBrightness: Brightness.dark));
6. statusBarBrightness
该属性仅用于 iOS 设备顶部状态栏亮度;
SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(statusBarBrightness: Brightness.light));
setApplicationSwitcherDescription
小菜个人理解该属性显示效果是在应用程序切换器相关的应用程序的当前状态时,但是小菜反复测试并没有实际效果,希望有理解的大神多多指点;
SystemChrome.setApplicationSwitcherDescription(
const ApplicationSwitcherDescription(
label: "Demo Flutter", primaryColor: 0xFFE53935))
.then((_) {
runApp(new MyApp());
});
整体来说 Flutter 对顶部底部状态栏的设置很方便,只是有些小菜理解不够深入的地方,有见解对朋友希望多多指导!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
阿里云服务器[新手入门]如何使用
1.购买 登录官网查看云服务器购买列表,购买时选择地区、操作系统镜像等,购买云服务器后会发送短信通知,这里只列出一个: 【阿里云】尊敬的用户:您的云服务器ECS创建成功(实例名称:xxxxxxxxxx,公网IP:xxx.xxx.xxx.xxx)。系统用户名: root;若您忘记或未设置密码可进入ECS控制台-实例列表-重置密码。如您购买了数据盘请在实例创建后手动磁盘格式化分区,更多信息请查看站内信或邮件。 2.登录控制台此时便可登录阿里云控制台,输入账号密码或者阿里云app扫码进入即可: 进入后都是一些服务器介绍,安全管控你等信息,可以自己了解一下,这时候点击左侧菜单,点击云服务器ECS,显示界面如图: 点击实例,左上角的服务器区域选择购买时的区域,这时你的服务器信息就显示出来了,如图: 一些基本的功能大家可以慢慢去探索,这里简要讲一下怎么把
-
下一篇
如何购买阿里云服务器(ECS)
一:访问阿里云官网阿里云二:注册阿里云账号,或者使用淘宝账号登录激活阿里云账号。 三:从产品里面选择云服务器ECS 四:进入页面后选择立即购买,当天也可以看一下他的介绍后在点击购买 360截图 五:选择购买的配置, 主要从以下几个方面考虑: 1.付费方式:按年付费,按使用量付费。建议新人按月或者按年付费。 2.选择服务器所在的地区:你是做中国的话,其实华南华北现在访问速度都差不多,建议选择华北区域,是新开的,价格会要比其他地区优惠。 3.选择实列,也就是选择你的服务器配置。这里有很多配置,我就只列举一下新手需要的配置:1VCPU,2Gbit就可以满足需求了 更多的实例我抽时间写一个适合不同行业的。 4.镜像,也就是你的系统,如果你喜欢折腾就选择系统镜像,这个镜像等你购买好服务器后,大概2-3分钟,你打开你的服务器就是一个崭新的系统,没有任何其他文件
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- SpringBoot2全家桶,快速入门学习开发网站教程
- MySQL数据库在高并发下的优化方案
- Red5直播服务器,属于Java语言的直播服务器