V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
chshapple
V2EX  ›  程序员

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

  •  
  •   chshapple · 338 天前 · 4865 次点击
    这是一个创建于 338 天前的主题,其中的信息可能已经有所发展或是发生改变。

    先放链接: 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

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

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

    关于跨平台,可以明确自己的 App ,偏向丰富的功能还是偏向精美 UI 交互。跨平台、功能、UI ,这就像三个圆形,人力不够的情况无法同时都覆盖。
    murmur
        3
    murmur  
       337 天前
    ios 下就算 h5 都没多少性能问题
    oukichi
        4
    oukichi  
       337 天前   ❤️ 1
    我反而比较关注的是。。你自己写 app 然后注册了一个公司。。是不是现在个人开发者已经无法上架应用了?
    liufish
        5
    liufish  
       337 天前
    @oukichi 目前 App Store 应该还给个人开发者上架的
    tikazyq
        6
    tikazyq  
       337 天前
    所以还是 RN 比较合适?
    19960623lyf
        7
    19960623lyf  
       337 天前
    交互挺好的
    debuggerx
        8
    debuggerx  
       337 天前
    “5. 各种代码生成器,json 序列化、riverpod 、retrofit 、路由等等。刚开始不懂,后来懂了,原来 dart 没有反射”—— 其实和反射关系不大,或者说并不是你理解的那个样子
    timelessg
        9
    timelessg  
       337 天前 via Android
    dart 就是一坨💩
    murmur
        10
    murmur  
       337 天前
    @tikazyq rn 版本号不提到 1.0 总感觉跟时代弃儿一样
    okakuyang
        11
    okakuyang  
       337 天前 via iPhone
    @oukichi 个人开发者要把自己的大名挂在商店里你 app 旁边,你想一想那酸爽。
    chshapple
        12
    chshapple  
    OP
       337 天前
    @flyun 感谢建议。其实有试听,每天 5 分钟,现在准备时间再加长。UI 问题后续会在多种屏幕尺寸的机型上再做下测试。
    chshapple
        13
    chshapple  
    OP
       337 天前
    @oukichi 所有的开发都是我自己做的,不过还有合伙人,内容这块我是真不懂,有些还挺学术的
    HyperLuo
        14
    HyperLuo  
       337 天前
    尝试使用 jsbridge 和 webview 了吗,感觉如何
    lwjlol
        15
    lwjlol  
       337 天前
    可以默认关闭 material design 3 然后使用苹果风格前缀为 Cupertino 的组件,组件封装可以使用一个 类似 TextStyle 的 包装类作为参数,这样传入这个包装 Style 参数就行。
    lwjlol
        16
    lwjlol  
       337 天前
    另外 swiftui 以及 jectpack compose 的成熟性都不如 flutter ,你上面提到的那些问题,对我来说都不是问题。
    lwjlol
        17
    lwjlol  
       337 天前
    @lwjlol Android 上掉帧可能是部分国产机型帧率适配原因,https://pub.dev/packages/flutter_displaymode 用这个库初始化的时候手动提高一下帧率。其他部分如果发生掉帧,就 devtool 检查下哪部分代码导致的掉帧,ios 机器性能普遍较高,有问题但是被机器的性能掩盖掉了导致你以为只是在 android 掉帧。
    hahastudio
        18
    hahastudio  
       337 天前
    样式这个我觉得是所有跨平台框架的问题,说着是一份代码到处执行,但其实可能真正能复用的只是客户端跟服务器之间的代码
    让应用体验够好的话,还得是不同的平台给不同的交互逻辑
    lwjlol
        19
    lwjlol  
       337 天前
    lwjlol
        20
    lwjlol  
       337 天前   ❤️ 1
    @lwjlol 而且这个官方的 showcase 是包括 desktop 平台的,这也是使用 flutter 的最大收益,简单的 app 仅仅只是一些 ui 的展示,完全没有必要每个端写一个原生 app ,为了所谓的原生交互体验(我说着难听直接一点就是技术能力不够,找借口是 flutter 卡)
    yaocf
        21
    yaocf  
       337 天前 via Android
    dart 是有反射的,只是 flutter 没有,可能是谷歌被 java 时代的反射搞怕了,flutter 禁用 dart 之后,世界一下子就安静了。
    chshapple
        22
    chshapple  
    OP
       337 天前
    @HyperLuo 没有用到哎,早期写 cordova 项目的时候全是这种东西。webview 适合一些大型 APP 做部分临时的脏业务,灵活性会非常高,像我们这种小东西就完全用不到。
    chshapple
        23
    chshapple  
    OP
       337 天前
    @lwjlol 感谢你的建议,我确实研究过这个官方示例。高刷屏的 Android 机型在很多时候流畅度甚至超越 iOS ,只是会碰到一些小问题(例如动画方式的图片模糊会有明显卡顿),开发的时候我还是用的几年前的骁龙 888 平台的机子,可能再新一点的机型会有改善。
    lwjlol
        24
    lwjlol  
       337 天前
    @chshapple 等待 android 的 impeller 正式版,可能会有改善,估计就最近几个版本。
    iOCZS
        25
    iOCZS  
       337 天前
    反射会影响 tree shaking
    xieren58
        26
    xieren58  
       337 天前
    jectpack compose 好用太多...
    dazuijuren004
        27
    dazuijuren004  
       337 天前
    app 体验很好,👍
    magic3584
        28
    magic3584  
       335 天前 via iPhone
    最近研究 iOS 原生的东西,比如在 shortcuts 调用 flutter ,快 2 周了还没好,要炸了,我太菜了。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1524 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 00:00 · PVG 08:00 · LAX 16:00 · JFK 19:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.