flutter也能适配了!

Posted 终端研发部

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了flutter也能适配了!相关的知识,希望对你有一定的参考价值。

每日早9点半,技术文章准时送上


往期文章





flutter也能适配了!

来源:buaashuai

原文链接:https://www.jianshu.com/p/143fb2111f96

采用flutter开发APP已经1年多了,平时开发的过程中踩过很多坑,今天想分享一个flutter应用跨平台适配的解决方案,目的是让你的flutter应用可以灵活高效的自动适配各种平台,实现UI最大化复用,业务逻辑代码在不同平台间能够共享。

下图描述了flutter-adapter的整体实现方案,我们在APP的入口处设置当前APP所运行的平台,这个平台可以在实际使用的时候动态设置,然后对于每个widget,我们只需要实现特定平台的样式适配即可。个别widget在不同平台的表现可能仅仅是部分属性的数值不同而已,对于属性值的垮平台适配我们提供了一个通用的函数superObjectAdapter去解决这个问题。

flutter也能适配了!

不同平台适配效果

flutter也能适配了!

flutter也能适配了!

flutter也能适配了!

使用方式

flutter_adapter插件内置了3类平台,分别是:

1、手机(TEAdaptPlatform.phone)、
2、pad横屏(TEAdaptPlatform.padLandscape)、
3、pad竖屏(TEAdaptPlatform.padPortrait)

如果你只适配部分平台,那么只需要对待适配的widget实现特定平台的build函数即可,其他未适配的平台默认会返回Phone的样式。

使用的时候只需要在APP的入口处采用ScreenAdaptWidget,然后设置当前APP需要适配的平台名称即可。

如果你需要扩展适配的平台,对于StatelessWidget只需要实现一个继承自FlexibleStatelessWidget的抽象类,然后实现新平台的build函数并注册该平台即可;对于StatefulWidget只需要实现一个继承自FlexibleState的抽象类,然后实现新平台的build函数并注册该平台即可。

插件使用示例:

flutter也能适配了!

如果你的某个StatelessWidget需要适配特定平台,只需要将该widget继承自FlexibleStatelessWidget,然后实现特定平台的build函数即可。

StatelessWidget适配示例:

flutter也能适配了!

StatefulWidget适配示例:

如果你的某个StatefulWidget需要适配特定平台,只需要将该StatefulWidget对应的的State继承自FlexibleState,然后实现特定平台的build函数即可,例如:


flutter也能适配了!

普通Widget适配示例:

如果你的某个widget仅仅需要在不同平台中改变个别属性的值,那么只需要对特定的属性值进行跨平台适配即可,flutter_adapter提供了superObjectAdapter函数来解决属性值的跨平台适配难题。

flutter也能适配了!

flutter也能适配了!

flutter也能适配了!

扩展需要适配的平台:

插件内置的3个平台在实际使用的过程中可能不够用,因此我们提供了用户自定义平台的适配解决方案。

StatelessWidget适配新平台:

对于StatelessWidget只需要实现一个继承自FlexibleStatelessWidget的抽象类,然后实现新平台的build函数,之后注册该平台即可。

flutter也能适配了!

StatelessWidget适配新平台示例:

flutter也能适配了!

StatefulWidget适配新平台:

对于StatefulWidget只需要实现一个继承自FlexibleState的抽象类,然后实现新平台的build函数,之后注册该平台即可。

flutter也能适配了!

StatefulWidget适配新平台示例:

flutter也能适配了!

flutter也能适配了!

https://github.com/buaashuai/flutter_adapter

阅读更多


相信自己,没有做不到的,只有想不到的

在这里获得的不仅仅是技术!

喜欢就给个“在看 

以上是关于flutter也能适配了!的主要内容,如果未能解决你的问题,请参考以下文章

啥?Flutter也能整3D了吗?我靠,竟然是这样的操作

flutter屏幕适配

Flutter屏幕像素适配方案 ( flutter_screenutil 插件 )

Flutter学习-屏幕适配

Flutter中屏幕适配,尺寸设置

Flutter系列 小白也能看懂,拿来就能用的Flutter安装入门教程