笔者在这篇文章ReactNative全面屏(Android)适配问题提及了现在的全面屏问题,不仅是Android平台,IOS平台也是,给我的感觉就是手机越来越长了。

现在的手机长宽比早就不是之前的16:9了,比如iphoneX 的长宽比为13:6,而现在多数的Android手机都到了19.5:9,有的甚至达到了21:9。

基于科技的发展(适配的血泪史),Flutter开发自然也需要注意这个问题。

在Flutter开发中,通常使用Scaffold的appBar和bottomNavigationBar组件的页面是没有适配问题,它内部对全面屏进行了适配。

适配问题主要是出现在没有使用Scaffold的情况下。

看一下这段代码,没有使用Scaffold:

class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: Container(
color: Colors.white,
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Container(
color: Colors.lightBlue,
child: Text('头部'),
),
Container(
color: Colors.redAccent,
child: Text('底部'),
)
],
),
)
);
}
}

运行效果如下:

可以看到上面和下面的组件已经被遮挡了,这就出现了适配问题,适配的主要问题就是集中在如下两点:

  1. 顶部的NavigationBar预留安全区域
  2. 底部的NavigationBar预留安全区域

对于以上两种问题,Flutter给出了除上面使用Scaffold,还有如下两种方案:

  1. 使用Flutter框架提供的SafeArea,Widget进行包裹组件来适配全面屏,这个组件和ReactNative框架中的SafeAreaView这个组件差不多效果,从两个名字就可以看出来,

    最新文章

    1. &lt;一&gt;获取数据库连接
    2. js事件监听/鼠标滚轮/行为/冒泡/键盘的兼容性写法
    3. 应用Druid监控SQL语句的执行情况
    4. chrome 点击上传文件选择框会延迟几秒才会显示 反应很慢
    5. Web UI自动化测试中绕开验证码登陆方式浅谈
    6. Oracle备份之RMAN
    7. jQuery 效果函数
    8. Javascript中的函数、this以及原型
    9. Android安全问题 静音拍照与被拍
    10. SWT的CheckBoxTreeView
    11. ssm整合说明与模板-Spring Spring MVC Mybatis整合开发
    12. 第一章 Java入门
    13. U盘上安装Ubuntu系统 便捷式系统 - 赖大大
    14. 七、uboot 代码流程分析---C环境建立
    15. 遍历一个可迭代对象中的所有元素,但是却不想使用for循环
    16. 消费Restful的web服务(三)
    17. [Winform]Media Player com组件应用中遇到的问题
    18. linux locate
    19. IE浏览器从页面向后台Controller传中文值出现乱码问题
    20. java中删除list指定元素遇到的问题

    热门文章

    1. 【u236】火炬
    2. Promise的封装
    3. 2018-11-2-win10-uwp-通过-win2d-画出笔迹
    4. Roslyn 使用 Target 替换占位符方式生成 nuget 打包
    5. c++ 知道旋转前后矩阵向量值 求旋转矩阵c++/c#代码 知道两个向量求他们的旋转矩阵
    6. 使用 AT 指令进行 Socket 通信
    7. 【题解】多少个$1$(exBSGS)
    8. 牛客挑战赛17E 跳格子 计数dp
    9. ProxyPattern(代理模式)-----Java/.Net
    10. asp.net core 3.x 通用主机原理及使用