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

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

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

    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 写了一个粘贴板相关的桌面应用
    yaocai321
        5
    yaocai321  
       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   ·   实用小工具   ·   1134 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 18:44 · PVG 02:44 · LAX 10:44 · JFK 13:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.