学习Flutter的艰辛之谈

最近Flutter项目炒的很火,Flutter 是谷歌的移动 UI 框架,可以快速在 iOS 和 Android 上构建高质量的原生用户界面。 并且Flutter 可以与原生的代码一起工作,用起来简洁有方便。我们公司决定用它尝试一下,下面记录一下从零入手Flutter到项目成功上线踩过的一些坑

  1. 开发工具问题,本人使用的Android Studio,在开发调试过程中肯定会有很多莫名其妙的报错问题,有时候并不一定是代码上的问题,要相信自己不如重新启动下编译器,必要时重启电脑,重启手机,flutter clean,flutter doctor,pod install,invalidate caches,保留自己一个备用测试工程项目
  2. iOS和Android平台适配问题,在开发的过程中会使用很多flutter第三方库,因为flutter还处于不断更新状态,有些库都是基于flutter的固定版本开发的,对于以后升级版本有着很大的不稳定性,我一直提倡的是尽量能自己写的就不用导入别人的库,多用flutter去调用原生代码,在以后的版本更新时省去了一些不必要的麻烦,此时要做好iOS和Android两端统一开发

  3. flutter版本问题,stable是flutter的稳定分支,一定要在stable上去做开发,其他的分支只可做些尝试,当前多去关注flutter的更新日志和官方文档,做到及时更新和适配,开发过程中很多的问题都是在最新的Issues上找到解决答案的,有些奇怪的问题尤其是使用第三方的时候找来找去解决不了最后更新了stable分支到本地自然就好了,在stable更新前要注意自己本地的git chekout . 避免git冲突更新不了

  4. 机型适配机型问题,一份代码生成两端平台,每个平台又有着不同的屏幕尺寸大小,系统版本,手机型号,甚至CUP的硬件设备都会有着各自各样的问题,这时候一定要仔细认真分平台多测试几个设备,我在开发的过程中就遇到了苹果iPad 在 iOS 13.3.1发生崩溃问题,后面做了简单的判断适配才得以解决

  5. 代码严谨的细节,代码安全性不可无视,否则会引起偶发的崩溃问题,比如在setState()之前一定要加个if(!mounted)return;对mounted的使用可以看看这位老兄写的文章 解析HTTP请求数据和制作新闻分类列表,非常感谢这位老兄

  6. 多积累收藏一些博客Demo有助于自己开发的便利,但也要注意flutter版本和别人博客写作时间,注意失效行,有些仅供参考,这是我积累的一些链接地址 Flutter网络学习资源

  7. 更多的自己去实践,收集一些工具类和一些特效的小部件有需求的时候可以很好的利用,确实遇到无法解决的问题多去寻求身边人和网络帮助外,必要时主动联系官方人员或者一些第三方的开发者的作者,一起去证实,协助,flutter也会越来越好

  8. 关于苹果审核,苹果的审核一直都是神秘的机构存在,最近提交了审核,感慨万千,总之一定要找到审核拒绝的真正原因,速战速决,这是我积累的一些链接地址 2020苹果审核那些事

PS 对于最近苹果上线审核总结以下几点:

  • 细节决定成败,对任何事情一定要做到位,能多表述的尽量多表述给苹果审核看,绝不敷衍,对自己工作负责,代码谨慎养成良好的习惯

  • 坚持不放弃,不要因为解决不了或拒绝几次就放弃了,再试一试 ,必要时多发邮件和电话去表述自己的想法和困境给到苹果审核那边

  • 敢于舍弃,把一些不必要影响审核的模块敢于舍弃,下个版本再上线也不晚,更重要的事多与项目经理去沟通,达成一致去解决审核问题

  • 转换思路,切身站在他人的思路去考虑问题,找到问题的根本所在,有错及时改正

  • 寻求帮助,多与同事交流,Google百度寻求相似问题

  • 发布版本做提前内测TestFlight,这个可以减轻苹果机构对你的审核

  • 一开始不要急于求成,先慢后快,快而仔细

  • 大胆创新,敢于尝试发掘新的知识,多动手实践