【核心:已经入门,先精通Flutter布局】
自学flutter的第25天,接上个周末我在书城看完了dart数据,以及对flutter数据共享机制和实现widget更新,widget的继承关系,weidget和elemnet以及renderobject关系的学习。我基本上对数据通知,widget生命周期,刷新背后的知识,代码到屏幕绘制的各自关系和流程与了认知。现在去看flutter大型项目代码以及没有困难和陌生感。
今天我开始新建Flutter代码工程,把之前provider例子的代码删除了。因为我发现现在还不能把代码写的那么复杂,必须从简单的开始。我下载了一些开源demo,写界面的时候可以参考。目前我现在一个简单的业务界面来开发。
在写的过程中,我学会到https://pub.dev/flutter/packages找对应的开源组件。
但是写的过程中,我发现了需要必须补充的知识。那就是先精通Flutter的布局,好比现在开发native我可以使用stackview+uiscrollview+uiview完成任何东西。
Flutter有很多空间和布局容易,很多名字很熟悉,但是不知道它在flutter里面效果和详细的用法。这个周末,我决定把flutter的布局容器全部理解清楚, 写代码测试效果,组合使用一下。好比uistackview也是在很多实践中用到了随便组合,水平垂直,小的stakview嵌大的stackview。Flutter也是这样,我需要理解清楚界面高和宽,还有如何让widget宽或者高自适应。
目前我已经测试了channel,native代码可以和Flutter正常通信,通过客户端请求接口数据。还学会了使用provider做到值和UI的绑定,如果做全局共享,跨页面通信,实践了引用图片资源,如果使用三方框架。
最后一步就是写代码实践了。开始我也写flutter写不快,不过不用担心。现在没有必要去拷贝那些大型项目的代码来用直接生搬硬套。有些他们的代码写的也不好,这是真的。
第一步:我们先自己一个个页面先用静态数据搭建,把页面效果实现出来。
第二步把事件和页面跳转实现完成。
第三步,把传参数逻辑整理完整。
第四步就可以把临时数据改成通过异步获取。
第五步,我可以在异步获取的是写loading,error,network错误这些功能页面了。
第六步,可以写公共的工具类和全局资源,全局状态等管理
通过上面一步步把复杂的工程搭建出来,这样才能知道每个细节,才能在以后快速解决问题。通过第一个项目慢慢把该有的脚手架搭建,我之前使用swift搭建存native话费了两个月。我相信flutter差不多的时间。
这样我开发完成这个项目,就有了宝贵的积累,以后开发项目速度就会翻倍啦。不好的模块,以后也可以自己快速替换。如果一开始拿那些庞大的项目直接套自己项目,结果就是不知道一些东西为什么要用,这样是不行的。但是开始我们可以打开几个项目,有一些代码可以直接参考,这个是有必要的。
Flutter只是把很多native开发的东西,它重新实现了一套,因为它自己的渲染,所以很有必要理解清楚它如何实现绘制管理。目前还有很多Flutter的争论,例如很多isuue,对模块接入不是很友好。的确,刚刚更新iOS14 debug模式如果不是xcode运行,直接打开APP会直接crash。那么遇到这个问题怎么办呢?这个直接到Flutter github项目看isuue就可以,或者到overstackfollow找答案。
到现在我已经找到了Flutter的钥匙,只需写界面,写业务,就可以很快熟悉开发。等我把精通flutter布局和组件动态更新,相信我就可以快速开发任何界面。之后遇到的就是踩坑了,比如现在嵌入式moduel,我是使用FlutterViewController管理界面,但是导航跳转会出现native和Flutter自己的导航不统一的问题,侧滑手势。对于这样需要自己动脑筋去解决了。例如导航栏样式需需要自己做定制,present式的弹框,全局蒙层,提示框都需要自己实践。有了之前native开发经验,相信我们有自己的思路,不是难题。程序员就是需要自己解决问题,在基础上有点子和创造。
也许存Flutter项目会容易点,嵌入式会复杂一些。但是对我来说,差别没有多少,两者几乎一样,我都实践中去弄出来。学习Flutter主要是为了跨端,提高开发效率,我选择这个框架深入使用下去,不会半途而废。
另外关于flutter的文章分享到此结束了,之后就是遇到问题解决问题,和native一样,flutter社区该有的,你之前怎么学习和使用,它也一样。