Flutter 项目代码量多起来以后有没有必要用 bloc 分离逻辑和 UI? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
AndyZhuAZ
V2EX    程序员

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

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

    投入和收益比起来值得去做吗?目前定制的 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  
    PRO
       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     Solana     1425 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 625ms UTC 16:55 PVG 00:55 LAX 09:55 JFK 12:55
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86