2 个月时间写了个小项目,谈谈写 flutter 的一点感受吧

299 天前
 chshapple

先放链接: https://apps.apple.com/cn/app/%E5%8D%9A%E7%89%A9%E6%97%85%E4%BA%BA/id6466980576

之前服务端和前端都做,最近 flutter 边学边写,合伙搞了个 app 出来,谈谈感受吧

  1. 出厂自带的 md3 对国内的设计习惯非常不友好,有大量时间在做样式覆盖。可能以前中台 web 做习惯了,antd 一把梭,从来都不考虑样式。
  2. 并没有遇到严重的地狱嵌套问题,提高代码可读性的方法有很多,包括但不限于组件的分离、使用 mixin 、使用 extension ,以及合理使用逗号。
  3. 在 iOS 上基本没有遇到性能问题。Android 上掉帧就比较多了,一些动画根本不敢用,打开 impeller 开关后更是一堆 bug 。
  4. 组件封装的书写挺难受的。一些轮子组件,动辄 2 、30 个 named parameter 。封装自定义组件的时候,这些参数我又得再写一遍,然后传给轮子。幸好有 copilot ,不然得疯。
  5. 各种代码生成器,json 序列化、riverpod 、retrofit 、路由等等。刚开始不懂,后来懂了,原来 dart 没有反射

就想到了这么多吧,结论就是:下次还是写原生吧,即使是小作坊。还挺想试试 jetpack 写 android

4761 次点击
所在节点    程序员
28 条回复
AItsuki
299 天前
jetpack 还不如 flutter ,无论从性能还是易用性上…… 不过确实值得试试。
flyun
299 天前
1.因为 flutter 本身就是对标 Android 设计风格,而国内 App 大部分是 iOS 风格。
2.嵌套确实是一个问题,但是可以采取编码风格来避免。
3.flutter 在 iOS 因为硬件单一官方容易适配,Android 硬件碎片化,现在看到官方还在适配中,加上 Android 屏幕刷新普遍达到 120hz ,问题更明显。

关于 App ,如果有时间修改,建议城市包,可以提供用户试用,比如试听几分钟。一上来就付费,心里很难有底。另外可以在 iOS 模拟器多适配几个机型,在用户协议与隐私条例-同意并登录按钮文字出现折行,同意并登录时,应该改变下面协议为选中状态。

关于跨平台,可以明确自己的 App ,偏向丰富的功能还是偏向精美 UI 交互。跨平台、功能、UI ,这就像三个圆形,人力不够的情况无法同时都覆盖。
murmur
299 天前
ios 下就算 h5 都没多少性能问题
oukichi
299 天前
我反而比较关注的是。。你自己写 app 然后注册了一个公司。。是不是现在个人开发者已经无法上架应用了?
liufish
299 天前
@oukichi 目前 App Store 应该还给个人开发者上架的
tikazyq
299 天前
所以还是 RN 比较合适?
19960623lyf
299 天前
交互挺好的
debuggerx
299 天前
“5. 各种代码生成器,json 序列化、riverpod 、retrofit 、路由等等。刚开始不懂,后来懂了,原来 dart 没有反射”—— 其实和反射关系不大,或者说并不是你理解的那个样子
timelessg
299 天前
dart 就是一坨💩
murmur
299 天前
@tikazyq rn 版本号不提到 1.0 总感觉跟时代弃儿一样
okakuyang
299 天前
@oukichi 个人开发者要把自己的大名挂在商店里你 app 旁边,你想一想那酸爽。
chshapple
299 天前
@flyun 感谢建议。其实有试听,每天 5 分钟,现在准备时间再加长。UI 问题后续会在多种屏幕尺寸的机型上再做下测试。
chshapple
299 天前
@oukichi 所有的开发都是我自己做的,不过还有合伙人,内容这块我是真不懂,有些还挺学术的
HyperLuo
299 天前
尝试使用 jsbridge 和 webview 了吗,感觉如何
lwjlol
299 天前
可以默认关闭 material design 3 然后使用苹果风格前缀为 Cupertino 的组件,组件封装可以使用一个 类似 TextStyle 的 包装类作为参数,这样传入这个包装 Style 参数就行。
lwjlol
299 天前
另外 swiftui 以及 jectpack compose 的成熟性都不如 flutter ,你上面提到的那些问题,对我来说都不是问题。
lwjlol
299 天前
@lwjlol Android 上掉帧可能是部分国产机型帧率适配原因,https://pub.dev/packages/flutter_displaymode 用这个库初始化的时候手动提高一下帧率。其他部分如果发生掉帧,就 devtool 检查下哪部分代码导致的掉帧,ios 机器性能普遍较高,有问题但是被机器的性能掩盖掉了导致你以为只是在 android 掉帧。
hahastudio
299 天前
样式这个我觉得是所有跨平台框架的问题,说着是一份代码到处执行,但其实可能真正能复用的只是客户端跟服务器之间的代码
让应用体验够好的话,还得是不同的平台给不同的交互逻辑
lwjlol
299 天前
lwjlol
299 天前
@lwjlol 而且这个官方的 showcase 是包括 desktop 平台的,这也是使用 flutter 的最大收益,简单的 app 仅仅只是一些 ui 的展示,完全没有必要每个端写一个原生 app ,为了所谓的原生交互体验(我说着难听直接一点就是技术能力不够,找借口是 flutter 卡)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1011033

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX