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

Flutter 项目代码量多起来以后有没有必要用 bloc 分离逻辑和 UI?

  •  
  •   AndyZhuAZ · 2023-06-02 08:38:11 +08:00 · 3559 次点击
    这是一个创建于 575 天前的主题,其中的信息可能已经有所发展或是发生改变。

    投入和收益比起来值得去做吗?目前定制的 widget 数量在 10 以内,页面有四五个,还没有涉及到数据,预计未来会加入 30+个 model ,会涉及跨平台同步数据,推送服务,内购,持久化(现在还是用 shared_preferences 去存点应用配置,后面应该要有很多文本数据在本地存储,应该是要用 sql 了)

    看了 bloc 的文档,感觉做起来很麻烦(也问过 gpt 了想让它帮我迁移是不可能了😂),有没有 flutter 大型项目经验的大佬指点一下有没有必要去引入呢?

    .
    ├── app.dart
    ├── constants.dart
    ├── generated
    │   ├── intl
    │   │   ├── messages_all.dart
    │   │   ├── messages_en.dart
    │   │   ├── messages_ja.dart
    │   │   ├── messages_zh-Hans.dart
    │   │   └── messages_zh-Hant.dart
    │   └── l10n.dart
    ├── helper.dart
    ├── l10n
    │   ├── intl_en.arb
    │   ├── intl_ja.arb
    │   ├── intl_zh_Hans.arb
    │   └── intl_zh_Hant.arb
    ├── main.dart
    ├── pages
    │   ├── about_page.dart
    │   ├── home.dart
    │   ├── settings_page.dart
    │   └── tools_page.dart
    └── widgets
        ├── circle_menu.dart
        ├── controls.dart
        ├── dailog.dart
        ├── fade_indexed_stack.dart
        ├── floatingpanel.dart
        ├── webview.dart
        └── modal_sheets.dart
    
    34 条回复    2023-06-02 19:01:33 +08:00
    NewTab12138
        1
    NewTab12138  
       2023-06-02 09:03:33 +08:00   ❤️ 1
    可以用 riverpod ,bloc 逻辑确实复杂了,而且代码量也多
    huohei
        2
    huohei  
       2023-06-02 09:45:07 +08:00 via iPhone   ❤️ 4
    强烈推荐 riverpod
    bg7lgb
        3
    bg7lgb  
       2023-06-02 09:48:31 +08:00   ❤️ 1
    flutter 渣手建议使用 Getx
    zxqkyle
        4
    zxqkyle  
       2023-06-02 09:54:06 +08:00   ❤️ 1
    趁早改,越后面越麻烦
    liudong7351
        5
    liudong7351  
       2023-06-02 09:58:36 +08:00
    新功能用 bloc 做,旧的可以不迁移吧
    lysS
        6
    lysS  
       2023-06-02 09:59:20 +08:00
    逻辑用可编译的写,然后打包成 so
    lozzow
        7
    lozzow  
       2023-06-02 10:24:53 +08:00   ❤️ 1
    逻辑用 golang 写可以,编译成 so ,简单方便
    wowofe
        8
    wowofe  
       2023-06-02 10:31:42 +08:00 via Android
    @lozzow @lysS 通过 dart ffi 调用吗
    twing37
        9
    twing37  
       2023-06-02 10:34:43 +08:00
    riverpod
    twing37
        10
    twing37  
       2023-06-02 10:36:11 +08:00
    另外就是话说你后面要开个天坑吗?本地加同步,model 酸爽的很
    AndyZhuAZ
        11
    AndyZhuAZ  
    OP
       2023-06-02 10:45:21 +08:00 via iPhone
    @twing37 这还没想好怎么去做,会有很多文本量的结构化数据要读写,不本地存会影响使用。实在麻烦的话我就定期版本更新放 assets 预制数据了,要用的时候更新得了。不用 model 应该也行的通
    twing37
        12
    twing37  
       2023-06-02 11:15:38 +08:00 via iPhone
    除非是服务端不保存结构化数据,不然客户端的结构化数据很消耗精力。当然这只是我个人建议
    Parva
        13
    Parva  
       2023-06-02 11:16:07 +08:00
    请教一下有经验的大佬们,状态管理到底需要掌握哪个啊?我感觉 Bloc 好像比较正(github 最火)?
    Provider+Riverpod
    Creator
    BloC+Cubit+BlocProvider
    MobX
    Redux+Fish Redux
    GetX
    准备面试 flutter 了,这些都看了最基本的使用,不知道面试官究竟会问哪个
    twing37
        14
    twing37  
       2023-06-02 11:21:40 +08:00 via iPhone
    bloc riverpod getx 最后的 getx 有黑历史,也不受官方待见,最近好像放弃维护了
    i979491586
        15
    i979491586  
       2023-06-02 11:24:11 +08:00
    目前在用 provider 使用 mvvm 结构
    liu731
        16
    liu731  
       2023-06-02 11:25:43 +08:00
    bloc 嵌套地狱
    i979491586
        17
    i979491586  
       2023-06-02 11:25:48 +08:00
    @Parva 我推荐你用 provider 封装好后简单好用,getx 不推荐,redux 要写很多额外代码。
    hsfzxjy
        18
    hsfzxjy  
       2023-06-02 11:27:47 +08:00 via Android
    问一下 getx 怎么啦?
    sam90
        19
    sam90  
       2023-06-02 11:37:36 +08:00
    bloc 感觉还好呀, 数据流还是比较清晰的
    beisilu
        20
    beisilu  
       2023-06-02 11:41:33 +08:00
    getx 确实不受官方待见,我也不那么喜欢,但是工作是工作,能快速把活干好就完事了
    Parva
        21
    Parva  
       2023-06-02 11:51:02 +08:00
    @i979491586 恩,那就是在 Provider 、RiverPod 、BLoC 中选择了
    keppelfei
        22
    keppelfei  
       2023-06-02 12:06:12 +08:00
    Getx 为啥不维护了,菜鸟的福音啊,作者有透露吗
    fox0001
        23
    fox0001  
       2023-06-02 12:50:45 +08:00 via Android
    用过 Provider ,很爽
    dabbit
        24
    dabbit  
       2023-06-02 13:35:16 +08:00
    不知道大伙是在哪看到作者说 getx 不维护的。作者前两周不是才说了 5.0 快搞定了吗
    t123yh
        25
    t123yh  
       2023-06-02 14:17:34 +08:00
    @Parva riverpod 使用体验很不错,推荐尝试
    Xzong
        26
    Xzong  
       2023-06-02 14:37:52 +08:00
    为啥没人推荐 flutter_redux ?
    unicreators
        27
    unicreators  
       2023-06-02 14:42:54 +08:00
    之前写过一个这个 https://github.com/unicreators/mvvm 你看看能不能用的上
    KT0J
        28
    KT0J  
       2023-06-02 14:52:43 +08:00
    我用的 getx ,它实在是,太方便,太简单了。。。。
    yawenimy122
        29
    yawenimy122  
       2023-06-02 15:26:54 +08:00
    难道不是用 getx 吗?
    yveJohn
        30
    yveJohn  
       2023-06-02 16:43:04 +08:00
    人生苦短,我用 Getx
    Parva
        31
    Parva  
       2023-06-02 16:59:33 +08:00
    @t123yh 恩,刚又去把 Riverpod 搜了一遍,了解到它确实解决了很多 Provider 的痛点。
    那我的范围就剩 Riverpod 和 BLoC 之间的选择了。
    lysS
        32
    lysS  
       2023-06-02 17:12:28 +08:00
    @wowofe 是的,我还写过 demo ,由于不会 Android ,在打包时卡了好久,原来要在规则文件里面把 so 加进去
    xsen
        33
    xsen  
       2023-06-02 17:21:04 +08:00
    建议 go + flutter ,flutter 通过 dart ffi 、nats/gprc 或者 http 这些与 golang 交互
    rsyjjsn
        34
    rsyjjsn  
       2023-06-02 19:01:33 +08:00
    之前调研过几个库,最终决定 Provider ,简单好理解
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2799 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 13:30 · PVG 21:30 · LAX 05:30 · JFK 08:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.