用 Flutter 测试了下桌面和 Web 的跨端开发,感觉有点拉胯 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
shitiven
V2EX    程序员

用 Flutter 测试了下桌面和 Web 的跨端开发,感觉有点拉胯

  • &nbs;
  •   shitiven 2023-05-31 15:50:44 +08:00 5822 次点击
    这是一个创建于 863 天前的主题,其中的信息可能已经有所发展或是发生改变。

    RT.

    用 Flutter 写了个小 Demo ,方便在可以同时编译成桌面端以及 Web 端

    但是好像在我的 M1 上运行的还算流畅,在之前的 Intel MacbookPro 上就感觉有点拉胯....

    当然还有很多奇葩的坑,也有可能是自己就看了下文档,花了差不多一个周末多点的时间,不是很熟练的问题....

    折腾不起,最后还是让 Team 用了 Electron ,前端小姐姐弄起来还是又快又猛的......

    顺便调研下这里有公司用 Flutter 直接开发上线的桌面客户端 以及 Web 端的?

    测试小 Demo

    Web 端: https://shitiven.github.io/workishapp/

    MacOS M1: https://shitiven.github.io/workishapp/workishapp4m1.zip

    33 条回复    2023-06-07 11:10:41 +08:00
    NessajCN
        1
    NessajCN  
       2023-05-31 15:57:23 +08:00
    你是不是搞混了,flutter 是用来写移动端的。桌面端本来就不推荐 flutter
    shitiven
        2
    shitiven  
    OP
       2023-05-31 16:03:09 +08:00
    @NessajCN 移动端目前开发没有问题,只是测试下桌面的能力
    x77
        3
    x77  
       2023-05-31 16:13:00 +08:00
    Flutter 开发 Windows 桌面应用还是不错的。Windows .Net WPF/UWP 桌面应用本来也慢,要是搞 Win32 应用工作量高出很多,要是用 QT/GTK 那些还不如 Flutter 利索。
    kennir
        4
    kennir  
       2023-05-31 16:26:07 +08:00
    我们已经用 flutter 发了好几个移动端应用了,写 dart 的体验已经几乎和 kotlin 一样好了
    flutter 目前是不太适合做桌面应用的,我记的还不支持多窗口,但是最近 google 的重心应该就是在桌面支持上,发展很快。

    btw: 我记得 V2EX 前几天有个朋友发了个帖子就是 flutter 写了一个粘贴板相关的桌面应用
    ClaudeCode
        5
    ClaudeCode  
       2023-05-31 16:28:11 +08:00   1
    细说小姐姐又快又猛。
    duan602728596
        6
    duan602728596  
       2023-05-31 16:35:08 +08:00
    本来就是,你以为你解决了一个问题,但是会引进来其他问题
    Highlight1024
        7
    Highlight1024  
       2023-05-31 16:40:01 +08:00
    现在 Mac App Store 上的高德地图就是用 flutter 写的,体验确实不太好。
    Joliph
        8
    Joliph  
       2023-05-31 16:42:54 +08:00
    企业微信啊,4 端都用的 flutter
    encro
        9
    encro  
       2023-05-31 16:54:16 +08:00
    @x77 所以 MAUI 来了。。。
    encro
        10
    encro  
       2023-05-31 16:56:17 +08:00
    @Joliph

    这个,你搞错了吧。。。。

    我记得微信以前是嵌了 nw.js 库,后来看到 qt 。想来企业微信也是主要用 qt 才对,那体验不像 flutter 。
    yuedanwork
        11
    yuedanwork  
       2023-05-31 17:02:36 +08:00   3
    虽然 flutter 桌面和 web 是很拉胯

    但简单看了下你的 demo ,很明显,你的 demo 拉跨并不只是 flutter 问题。

    可以照着官网和社区的优化方式针对性的优化,基本还是能用的。

    另外尽量采用高版本
    Vitta
        12
    Vitta  
       2023-05-31 17:04:00 +08:00
    慢慢来吧,flutter 貌似开始往桌面端发力了。
    shitiven
        13
    shitiven  
    OP
       2023-05-31 17:04:55 +08:00
    @yuedanwork 说的很有道理,所以我也不敢把源码放出来.....
    shitiven
        14
    shitiven  
    OP
       2023-05-31 17:09:07 +08:00
    @Vitta 还有很有潜力的,基本上只要 UI 交互上设计好,一套代码基本很小的代价可以同时满足移动端 和 PC 端了 (包括 Web)
    onlyForward
        15
    onlyForward  
       2023-05-31 17:10:02 +08:00
    flutter web 问题太多了,光一个路由问题就搞了好久。
    shitiven
        16
    shitiven  
    OP
       2023-05-31 17:12:19 +08:00
    @onlyForward 是的 这个有花费我一半的时间在上面捣鼓,最后用的 vrouter
    AlexV525
        17
    AlexV525  
       2023-05-31 17:16:10 +08:00
    这个大概率是你写的问题...随便一个 ListTile 怎么都可以这么卡

    (利益相关:Flutter 5 年开发)
    shitiven
        18
    shitiven  
    OP
       2023-05-31 17:24:06 +08:00
    @AlexV525 嗯 最开始官方文档 写个 ListView 展示 明显可以,当加入动画以及一些 Web 端的 URL 策略就开始有点卡了, 后面就感觉要翻到重来了......
    Xmarmalade
        19
    Xmarmalade  
       2023-05-31 17:29:12 +08:00
    试试拆分 widget, btw 用的哪个状态管理
    zcl0621
        20
    zcl0621  
       2023-05-31 17:29:50 +08:00
    之前项目就是 flutter 涵盖 ios andorid pc 和 macos ,今年只保留了 ios 和 andorid 用 flutter ,pc 和 macos 切换到了 electron 。 桌面端适配真是要了老命了
    还有个项目尝试 flutter 涵盖 ios android 和 web ( web 直接放弃了 完全没法用)
    Vitta
        21
    Vitta  
       2023-05-31 17:49:32 +08:00
    @onlyForward #15 用 GetX 吧,用过几个还是这个好用
    Vitta
        22
    Vitta  
       2023-05-31 17:49:51 +08:00
    @shitiven #14 之前我做的时候 pc 端还不支持 webview
    darkengine
        23
    darkengine  
       2023-05-31 17:52:06 +08:00
    这个 ripple 的视觉效果也太卡了吧。。。
    dabbit
        24
    dabbit  
       2023-05-31 18:45:17 +08:00
    卡得我以为你输出的是 debug 模式
    onlyForward
        25
    onlyForward  
       2023-05-31 19:09:22 +08:00
    @Vitta
    @shitiven 我们是 app 打包 h5 一般的路由功能完全不够用,现在是手动维护路由栈,难顶
    shitiven
        26
    shitiven  
    OP
       2023-05-31 19:26:27 +08:00 via Android
    @dabbit 哈哈 对不住了 m1 pro 上基本还好,不知道你用的啥
    0001110001011
        27
    0001110001011  
       2023-05-31 19:50:47 +08:00
    https://apps.apple.com/us/app/dz-reader-discuz-x-reader/id1602665775

    iOS + Android 基本很多包都 ok 的
    我编译过 mac ,windows 这时候, 很多包就不跨平台了, 比如 html 这些, 基本要 再写一份代码, 或者针对各个平台写
    , 但是, 已经很不错了, 起码 95%的代码都能通用

    性能上: 基本从来没优化过, 基本开发常识用到位, 基本看不到卡顿, 拿着好多年前的机器 iPhone 8 玩, 卡顿几乎看不到了 ,新的版本 flutter 自身优化,还是很强劲的.

    如果你要 desktop+ web , 真的建议上 Electron .

    如果只有 iOS+Android , 可以考虑 flutter
    keifer
        28
    keifer  
       2023-05-31 20:07:10 +08:00
    企业微信,部分功能使用了 Flutter 开发。桌面端的全局搜索等功能,移动端的部分功能。

    总体来说 Flutter 还是比较适合写客户端的 UI 界面,web 的话还是算了。
    NewTab12138
        29
    NewTab12138  
       2023-05-31 20:34:32 +08:00 via iPhone
    我用 flutter 写过 pc 端的纯业务的外包产品,用起来没什么问题。很流畅,尤其是 Mac
    alleluya
        30
    alleluya  
       2023-06-01 09:47:29 +08:00
    @zcl0621 tauri 现阶段能替代 electron 么?
    zcl0621
        31
    zcl0621  
       2023-06-01 10:16:28 +08:00
    @alleluya 不太敢用 tauri,tauri 的包体积要小很多,但对于我们的业务来说太新了,怕会出现一些找不到解决办法的问题。我自己做写 demo 用的都是 tauri 。
    kingzeus
        32
    kingzeus  
       2023-06-01 11:37:06 +08:00
    我和楼主的意见相反,我觉得 flutter 跨端有很大优势,对比 web 方案,我们用 flutter 实现需求反而又快又好

    首先,flutter 跨端解决的问题主要是 ui ,从 ui 角度来说,跨端 ui 一致性完成度很高
    其次,跨端不是说不需要 native 的能力,flutter 一般只提供了基础的接口,你可以通过定制 plugin 来实现。如果你熟悉 win32 编程的话,会发现 flutter 用来还是很不错的。对应 vs 和 xcode 工程,调试 flutter 还是非常友好的。如果发现真有问题,定制 engine 也可以比较容易搞定。

    electron 我觉得最大的问题是 内存占用,以及进程通讯效率。
    Joliph
        33
    Joliph  
       2023-06-07 11:10:41 +08:00
    @encro 你用企业微信和 flutter 做关键词搜索,能看到他们内部发的文章的,新版换 flutter 了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     891 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 20:45 PVG 04:45 LAX 13:45 JFK 16:45
    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