百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

全栈项目开发2:主界面开发及全局尺寸适配指南

liuian 2025-05-21 14:57 33 浏览

效果


内容

本节继上节内容后完成主界面的Tab页以及全局尺寸适配功能,以上两幅图分别是Windows平台和Android平台的界面效果,底部是自定义的导航栏,增加了中间凸起的按钮,并且具有点击切换动画效果

为了方便后续代码的结果输出,编写了一个测试界面用于展示,待功能逐渐增多之后再将其隐藏起来,目前先放在主界面的Tab页中。

全局尺寸适配指南:

flutter中默认组件尺寸单位都是dp,所以由px数据除以像素密度就可以得到dp。

计算公式:实际尺寸 = UI尺寸 * 设备宽度/设计图宽度

1px = 1 / 设备像素比

上图中Android平台是按照设计图和设备实际尺寸1:1的结果,Windows平台由于可以自由拉伸窗口,这里调整到比例接近的地方。

为了使用方便,使用Flutter2.6及以上版本的新特性extension-method为已有类增添新方法,写入以下SizeExtension类后就可以新的表达方式

extension SizeExtension on num {

  num get w => Screen.getInstance().getWidth(this);

  num get h => Screen.getInstance().getHeight(this);

  num get sp => Screen.getInstance().getSp(this);
}

如下2种表达方式具有相同的结果,假如宽度是25,但显然第一种方式较为简洁

1:25.w

2:Screen.getInstance().getWidth(25)

拓展

  • App生命周期监听

在Home界面使用Mixin方式混入WidgetsBindingObserver类,然后在页面初始化中使用WidgetsBinding.instance!.addObserver(this);增加对生命周期的监听,此时就可以使用以下代码完成生命周期的变化处理。一般从切换到后台再到前台的触发顺序是inactive->paused->inactive->resumed

@override //inactive->paused->inactive->resumed
  void didChangeAppLifecycleState(AppLifecycleState state) {
    switch (state) {
      case AppLifecycleState.inactive: // 处于这种状态的应用程序应该假设它们可能在任何时候暂停。
        break;
      case AppLifecycleState.resumed: // 应用程序可见,前台//进到锁屏界面
        break;
      case AppLifecycleState.paused: // 应用程序不可见,后台
        break;
      case AppLifecycleState.detached: // 申请将暂时暂停
        break;
    }
  }

注:Android和iOS平台有效

  • 状态保留

经常在主界面使用的Tab页的布局方式,此时会发现在进行页面切换的时候页面会发生销毁重建的过程,为了能将Tab页的状态保留,在Home的状态类上Mixin
AutomaticKeepAliveClientMixin
,并实现对应的方法bool get wantKeepAlive => true;,同时build方法实现父方法 super.build(context); 除了Home的状态类,还需要在各个子Tab页的状态类上进行相同的操作。

后记

下章内容权限处理和语言国际化,日志收集

关注后私信对应编号(20211110)获取对应的源码和素材

小破站同名,同步文章且定时直播编程,有兴趣可以移步

加关注不迷路,评论私信会不定时回复,欢迎一起讨论

相关推荐

2025win7专业版激活密钥(2020win7专业版永久激活码)

cad序列号和密钥是111-111111,可以通用的,但激活码则需要通过CAD2014注册机对申请号的换算才能得出结果,当然结果有很多,用户可以不断的Generate一个。cad序列号和密钥是111-...

window7下载itunes什么版本(window7怎么下载itunes)

出现此问题一般是因为itunes没有正确安装,可以参考如下解决方法:1.请查看本机电脑数位,计算机---右键---属性---看是32的还是64的;2.官网下载数位对应的iTunes;3...

u盘什么牌子的好(大容量的u盘什么牌子好)

十大耐用云U盘排行分别是:第一名闪迪第二名雷克沙第三名金士顿第四名三星第五名美商海盗船第六名东芝第七名惠普第八名威刚第九名台电第十名朗科。十大耐用云U盘排行分别是:第一名闪迪第二名雷克沙第三名金士顿第...

英文翻译器下载(英文翻译器软件下载)

APK(全称:Androidapplicationpackage,Android应用程序包)是Android操作系统使用的一种应用程序包文件格式,用于分发和安装移动应用及中间件。一个Android...

oppo主题包下载(oppoi主题下载)

opporeno5壁纸可以选择主题商店下载。1、打开手机设置,点击【个性化定制】,选择壁纸。2、可以选择本地相册、静态壁纸、动态壁纸、ART+,还可以选择主题商店。3、选择自己喜欢的壁纸,点击设置即...

老tplink路由器无线桥接设置图解
  • 老tplink路由器无线桥接设置图解
  • 老tplink路由器无线桥接设置图解
  • 老tplink路由器无线桥接设置图解
  • 老tplink路由器无线桥接设置图解
电脑连接正常却无法上网(电脑网络连接正常但是上不了网无线网正常)
  • 电脑连接正常却无法上网(电脑网络连接正常但是上不了网无线网正常)
  • 电脑连接正常却无法上网(电脑网络连接正常但是上不了网无线网正常)
  • 电脑连接正常却无法上网(电脑网络连接正常但是上不了网无线网正常)
  • 电脑连接正常却无法上网(电脑网络连接正常但是上不了网无线网正常)
硬盘开盘恢复数据(硬盘开盘恢复数据怎样收费)

  硬盘因为某些原因损坏,比如磁头损坏,用于驱动磁臂移动的电机烧毁等故障,可以通过打开硬盘盘体,更换相应的部件来维修的办法,以便进行数据恢复工作,这也就是一般所说的“开盘”。  开盘维修必须在无尘环境...

微软surface平板(微软surface平板电脑的降温散热是由风扇进行的吗)

可以。包括微软Surface平板电脑在内的一系列Windows平板,它们搭载的系统都是与电脑完全相同的Windows系统,其界面和操作方式都与电脑无异,并且全面支持电脑EXE应用程序,比如功能完整的O...

怎样恢复电脑删除的文件(怎样恢复电脑删除的文件记录)

文件误删了之后,先停止对电脑上其他文件的操作,然后判断该文件删除方式,如果是普通删除的文件可以打开回收站进行查看,之后进行还原的操作,如果是永久删除的文件,那可以借助到专业的数据恢复软件来进行恢复操作...

win7纯净原版(win7旗舰纯净原版)

windows7ghost纯净版特色:1、专业为电脑制作,定制版系统使笔记本电脑运行更加可靠。2、安装盘经过多名电脑安装人员测试,稳定性和兼容性非常好。3、通过多台不同硬件型号的计算机测试,没有蓝屏,...

电脑摄像头驱动器怎么安装(电脑摄像头的驱动程序)

摄像头驱动的安装方法:首先,先取出摄像头,然后将USB端口插入电脑的端口中。当然,如果是需要长时间使用,建议将其插入后面板上。其次,初次使用摄像头时,系统可能会搜索驱动程序进行安装。那些免驱动的都可以...

win10虚拟机装win7(win10虚拟机怎么装win7)

WIN7系统下是可以安装Win10虚拟机,用户可以按照以下方法安装:1、网上搜索下载安装360软件管家;2、在搜索栏里输入VM,然后在VMwareWorkstation旁点下载,系统会自动安装;3、安...

u盘启动盘怎么还原成普通u盘

将U盘还原为普通U盘的方法如下:1.在电脑上打开磁盘管理工具,找到你想要还原的U盘。2.删除该U盘中所有的分区和卷标,在删除时,需要格外小心,确保不要删错其他存储设备。可以右键点击该分区来进行删除...

最新款手机vivo(vivo最新款手机及价格表)

vivoX60Pro+、vivoX70Pro、vivoX60、vivoX70、vivoX70Pro+、vivoiQOO7、vivoiQOO7Pro、vivoIQOO8、viv...