第一个版本经过20多天的开发和测试终于上线了, 在用flutter之前, 充满着好奇, 用flutter之中充满着自虐, 用flutter之后, 好奇心得到满足, 也有了自己的感受
感受1: Flutter比Android难
有很多说简单的人, 也有更多说难的人, 个人觉得比原生Android要难一些
简单的原因
- flutter通过widget组合的方式替代了继承, 这样就不用写很多自定义的类
- flutter的语法糖简直是集合了很多语言的语法糖
- 热加载特别好用
- 运行效率很高, 编译速度也比Android快, 这点对开发者很友好
- setState刷新UI简直太好用, 比起Android的findViewById之后再set的方式开发效率高了很多
难的原因
- 如果学习flutter的时候只做过单一语言和平台开发, 会感觉很难, 对语法糖没那么感兴趣, 也不容易熟悉它的语法, dart集合了python c++ javascript和object-c和java等诸多语言的语法特性
- dart语言有些缺点, 比如return语句可以不写, 能绕过语法检查, Android studio不会自动提示一个类, 除非已经把所在的包导入进去
- 没有Android的预览xml, 还是需要运行在手机上才能看
- flutter自身的一些坑还没填平, 比如release性能太快会导致通过Media.of(context)获取屏幕的宽度为空
- 有时候异常的函数栈打印到flutter SDK里面了, 导致定位麻烦
- dart拼接字符串的时候有些类需要手动调用toString(), 如果使用’+'之后接null字符串会报错, 这点不如JAVA
- IDE现在还有一些坑(当前2019年6月16日), 比如有时候出现没有logcat的tab, 在run tab也没有log, 只好在命令行看log
- 有时候插件也有bug, 比如screen_util在release下获取到的屏幕宽度是0的问题, 比如image_compress库有时候压缩完后返回的图片是null, github上的umeng的事件统计工具plugin肉眼可见的bug, mobshare sdk在小米8上没法分享…(当然, 我们app上线前都搞定了, 除了替换方案, 自己也能写插件替换, 调用原生的API不麻烦)
- 目前还不支持C++调用, 热修复也不支持, 还好目前项目不需要
等等等…
即便flutter虐我千百遍, 但当看到release的性能比Android原生的性能还要好的时候, 还是倍感欣慰的, 并且跨平台特性会极大的减少开发周期
感受2: flutter当前版本(1.5.4)还是有很多坑要爬的, 并且离开Google搜索就废了的程度
- AndroidX导致的构建的问题, 很多插件都会遇到
- 各种插件都会导致构建问题, 有的还支持编译不通过 flutter run --verbose或者gradlew assembleDebug --info命令要擅长分析
- 异常统计工具crashlytics因为被墙的缘故没用, bugly支持flutter, 但继承bugly后发现一堆错误, 很多都是SDK中的异常, 工程自身的代码异常很容易被淹没
/// 我们再不断努力的时候, 还要不断解决中国政府频繁的封禁VPN的问题…(在此有需求的小伙伴可以了解下linode服务器, 可以频繁更换IP, 按小时收费每月$5还可以)