V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lsk569937453
V2EX  ›  程序员

现在 flutter 的桌面端都这么成熟了吗?

  •  
  •   lsk569937453 · 142 天前 · 12356 次点击
    这是一个创建于 142 天前的主题,其中的信息可能已经有所发展或是发生改变。
    刚在 github 的热门项目上看到这个项目,https://github.com/KRTirtho/spotube ,居然是 flutter 开发的桌面端+移动端。我是 windows ,下载下来看了一下,包也不是很大,流畅度还行,就是样式明显还有优化的空间。这样的话对小公司来说简直就是福音阿,毕竟人手又不足。一套代码,多端发布还是挺爽的。

    我之前用 react native 开发的跨移动端程序,现在在用 tauri 开发桌面端。虽然之前在 v2 上看到很多人不看好 flutter ,毕竟性能又不行(渲染引擎是 skia),样式代码嵌套简直就是地狱。没想到 flutter 这几年一直在发展,桌面端也稳定了。刚看了一下 issue ,还是 10000+,哈哈。
    79 条回复    2024-01-18 15:14:25 +08:00
    CaffreySun
        1
    CaffreySun  
       142 天前   ❤️ 2
    flutter 桌面上的 webview 是硬伤
    murmur
        2
    murmur  
       142 天前
    所以这说明了什么,qq 音乐用 webview 就做出这效果来了,还是几年前,据说当年给 win7 还是啥版本的 qq 音乐上 webview 还得了集团技术优秀
    purringpal
        3
    purringpal  
       142 天前 via iPhone   ❤️ 2
    综合水平一直是 flutter 最高吧,rn 和 uni 拥护者大部分是 web 前端开发者,人员基数巨大,所以给人一种声音很大的感觉
    keppelfei
        4
    keppelfei  
       142 天前
    跨平台移动端自己倒是可以用同一套代码,pc 端代代码其实不好用同一套的,尺寸都不一样,如果每个地方都适配还不如重新开个分支。逻辑倒是可以通用一套,另外很多三方插件可能对 pc 端支持并不好,所以如果冲着一套代码就去用 flutter ,我觉得你可以收了这个心思
    murmur
        5
    murmur  
       142 天前
    @purringpal no no no ,你理解错了,这个观点是随着硬件的发展,和浏览器内核的完善,游戏类渲染和浏览器渲染的差距,在非游戏层面,会越来越少,而 web 是成熟技术,组件最多,框架最多,调试也最完善,各种地方复用也是最简单

    flutter 单一个类游戏渲染,你所有的调试技术全不管用了,出了问题你还得怀疑是不是底层渲染的问题,这个底层可不是谁都动得了的,浏览器打 css 补丁可就太容易了
    jonyJJ
        6
    jonyJJ  
       142 天前
    可以说只会越来越好,开发一般的应用也是够用了,flutter 桌面开发需要解决的两个点:multi window 和 platform webview , 目前官方都在推进中,期待 2024 年能够完成。
    messnoTrace
        7
    messnoTrace  
       142 天前
    用 flutter 做休闲游戏开发 3 年了,基本毫无问题,除了一些效果不如 unity 和 cocos ,所以做个应用毫无问题,
    sentinelK
        8
    sentinelK  
       142 天前   ❤️ 5
    flutter 最近也有在生产中试用,用下来,最难受的还是语法格式。

    ((((((((((((
    毕竟这样的嵌套不是一般人能忍的。
    ))))))))))))

    甚至一个样式、一个事件,都是一层嵌套。
    chengxiao
        9
    chengxiao  
       142 天前
    Localsend 企业微信 闲鱼
    也都是 Flutter
    purringpal
        10
    purringpal  
       142 天前   ❤️ 4
    @murmur 你的角度太偏了,什么底层漏洞什么浏览器打补丁,调查一下有几个人关注这些… 跨平台专注的是应用开发,Flutter 调试方不方便你试试就知道了,反而是你说的底层框架决定了 RN 上限低,哪怕应用层轮子再多,也只是爽了开发者,用户体验就是烂,我司已经全面下线 RN 相关模块,只用原生+Flutter 。
    NewTab12138
        11
    NewTab12138  
       142 天前
    我们现在基本都是 flutter 做移动端全套,还可能外加 h5 和 web
    murmur
        12
    murmur  
       142 天前   ❤️ 4
    @chengxiao 闲鱼是体验差的代表,如果没有闲鱼我可能对 flutter 还会评价更好一些
    beimenjun
        13
    beimenjun  
       142 天前
    跨平台方案终究是要牺牲一些的东西的,想一套代码多个平台运行来省人力的钱,那就要付出对应的代价。

    而且支持的平台越多,踩的坑越多,本质上也很难说省了多少时间。

    反正对于开源的产品,有点小问题,你又没花钱,又不是不能用。

    对于付费的产品,你只要能忍,又不是不能用。
    SilentOrFight
        14
    SilentOrFight  
       142 天前
    @jonyJJ #6 webview 推进多年了,只能说 flutter 推进很慢,好多开发者实际开发中提的痛点都推的慢,唉,再不加快,Jetpack Compose 就要真正实现跨平台了,到时我情愿写 kt 也不愿意写 dart
    0o0O0o0O0o
        15
    0o0O0o0O0o  
       142 天前   ❤️ 5
    反正我无条件支持 flutter 和 electron 之类的跨平台方案用户像楼上这样互掐,这样 Linux 可以用上更多 GUI 程序🥰
    buf1024
        16
    buf1024  
       142 天前
    稳定不至于,只能说基本可用,很多功能要第三方插件支持,而且第三方支持不一定有你自己所需的功能,还是要自己修改,或写插件支持。
    joyhub2140
        17
    joyhub2140  
       142 天前   ❤️ 1
    2023 除了苹果自带的那个 safari ,其他主流浏览器都对 webassemble 支持完善了哈,我非常看好 flutter web 端哈。

    dart 编译成 wasm gc 产物直接跑在浏览器了,用 dart 来写网页完全没问题。

    flutter 官方 webassemble GC 示例: https://flutterweb-wasm.web.app/
    cincout
        18
    cincout  
       142 天前
    @chengxiao 闲鱼就算了, 用 flutter 又不全部用
    taosimple
        19
    taosimple  
       142 天前
    @messnoTrace flutter 用什么游戏引擎
    mainjzb
        20
    mainjzb  
       142 天前
    😅没想到 v2 还有人看 issue 数量来搞笑。。。我以为只能在知乎看到
    随便翻一下 github 常见库
    rust 9k+
    vscode 7k+
    TypeScript 5k+
    elasticsearch 4.1k+
    messnoTrace
        21
    messnoTrace  
       142 天前
    @taosimple 现在用的是 flame
    monkeyWie
        22
    monkeyWie  
       142 天前
    flutter 对于独立开发者来说是真的香,比如我这个项目: https://github.com/GopeedLab/gopeed
    还有更复杂的: https://github.com/reqable/reqable-app
    murmur
        23
    murmur  
       142 天前
    @joyhub2140 wasm 又不能操作 dom ,目前 webasm 的用途最大还是代码混淆,我不用 webasm 一样可以写 web 啊

    一般的混淆 beautify 了还可以调试,wasm 那是真的没法调了
    pursuer
        24
    pursuer  
       142 天前
    跨平台的库很多,但是浏览器有个非常重要的特性就是标准化的开放性。比如如果想在自己的应用中嵌入或引用其他来源的组件/内容,在浏览器上可以直接一个标签解决,并且标准化程度很高。但应用框架要实现类似效果就比较困难。这个优势甚至足以在大部分场景下让浏览器的缺陷能被接受。
    fomenyesu
        25
    fomenyesu  
       142 天前
    @joyhub2140
    flutter 官方 webassemble GC 示例: https://flutterweb-wasm.web.app/

    官方示例 打开速度这么慢? 有什么好?
    XCFOX
        26
    XCFOX  
       142 天前
    「综合水平一直是 flutter 最高」这个结论是怎么得出来的?

    在我看来 Flutter 自认为的优势也是最大的缺点就是自绘。目前甚至很长的一段时间内自绘的性能/用户体验是比不过原生的。
    假如原生的体验是 100 分,那么目前 Flutter 的上限大概只有 90 分,希望 Impeller 完善之后能把上限提高些。反观 React Native 始终使用原生渲染,在 0.68 使用全新的 Fabric 架构解决了 js 通讯瓶颈后,在性能上已经不成问题了,上限可以达到原生的 100 分。

    体验一下 V2EX 的 Flutter 客户端和 React Native 客户端,Flutter 版本滑动、翻页的时候存在明显卡顿,RN 的体验明显好得多。
    https://github.com/guozhigq/flutter_v2ex
    https://github.com/liaoliao666/v2ex
    lucifer518
        27
    lucifer518  
       142 天前
    @sentinelK #8
    不要全部写在一起
    我举个例子
    buildWidget1() {...}
    buildWidget2() {...}
    buildWidget3() {...}

    build{
    Column([
    buildWidget1(),
    buildWidget2(),
    buildWidget3(),
    ])
    }

    也可以自定义用变量声明 widget
    const widget = Widget();

    写法可以类似 React
    所以你说的这个问题基本不存在
    buf1024
        28
    buf1024  
       142 天前
    补充#16 ,贴上之前用 flutter 写的,支持三端: https://github.com/buf1024/hiqradio
    =======
    稳定不至于,只能说基本可用,很多功能要第三方插件支持,而且第三方支持不一定有你自己所需的功能,还是要自己修改,或写插件支持。
    ybz
        29
    ybz  
       142 天前   ❤️ 1
    flutter 有自己的调试工具并不比浏览器控制台差。

    性能问题,Impeller 之后会好一些,虽然还是难以达到原生级别的性能。

    代码嵌套用多了你会发现其实真香。

    深入使用后你会发现全自绘带来了很多原本原生自带的功能很多都需要 Flutter 自己实现,比如在原生上很平常的文本选择在 Flutter 里面是自己重头实现的,这其中还要考虑多平台。虽然 Flutter 现在已经都实现了但是其中很多细节达不到原生的体验,还有很大的优化空间。

    然后 Flutter 包括各个平台嵌入层、引擎层、框架层、官方 packages 、开发工具、测试工具、还有 Dart ,随便哪个东西都是一个大项目,但是真正 Google 的全职开发其实没多少人,又要推进新功能,又还有 1w+个 issues 根本忙不过来。
    MegatronKing
        30
    MegatronKing  
       142 天前   ❤️ 6
    我是 Reqable 的作者,Reqable 是基于 Flutter 框架的大型项目,已上线桌面端 + 移动端平台,https://github.com/reqable/reqable-app 。就目前阶段来讲,Flutter 桌面端还没有完全成熟,但也差不多了,还有些坑。从开发效率和生态上讲,不如 Electron ,从流畅度、性能、体积等用户体验度上来讲,超过 Electron 。长久来看,开发效率和生态有逐步提高的空间,也就是后面会越来越好,值得长期投资,这也是我为什么选择 Flutter 的原因。

    ![Reqable]( https://reqable.com/zh-CN/assets/images/screenshot_macos-b946ce3ac47e27dfcfa3323d20122552.jpg)

    我刚刚将 Reqable 项目的 Flutter 版本从 3.10.4 升级到 3.16.5 ,MD2 升级到 MD3 ,花了不少时间(大约 1 天多)来处理升级后带来的问题,这个过程其实挺痛苦的,中途差点放弃,但还是咬牙坚持下来解决了所有升级带来的新问题。这可能是 Flutter 框架快速迭代的一大痛点,长远来看也值得。
    kkk9
        31
    kkk9  
       142 天前
    @fomenyesu #25 HK 节点表示秒开
    beimenjun
        32
    beimenjun  
       142 天前
    @ybz 确实,Flutter 长期看最大的风险在 Google……
    zhengjing
        33
    zhengjing  
       142 天前
    flutter 写写公司的一些桌面小工具非常不错,简单快速跨平台
    mainjzb
        34
    mainjzb  
       142 天前
    @XCFOX 我去下载了这俩 app 试用了一中午,我感觉这个 flutter app 一部分原因是作者自己加入了一堆花里胡哨的功能维护不好的导致的。甚至在一个帖子里,快速下滑都能发现右侧滚动条来回跳动。
    RN 原生体验确实很原生
    lwlizhe
        35
    lwlizhe  
       142 天前
    我现在的工作,就在公司做 flutter 基建和推广,怎么说呢,假如别的组用的 QT 这种,跟他们推广 flutter 桌面端就比较尴尬了,从性能、内存、功能支持方面确实都比不上 QT ,多窗口这种也支持的比较困难,感觉离成熟还是有一定差距。
    Sniper000
        36
    Sniper000  
       142 天前
    我们公司的 APP ,ToB 的 基本都用 Flutter 了,稳定跑了 2 年了,没啥大问题,效率是很高,开发很快,反正我已经不喜欢使用原生 iOS 开发了。
    ydong
        37
    ydong  
       142 天前   ❤️ 1
    @murmur "webasm 的用途最大是代码混淆",你是认真的吗
    murmur
        38
    murmur  
       142 天前
    @ydong 跑高性能程序有 app ,可以直接调硬件功能,你优化的再牛逼的算法也比不过别人直接调硬件编解码器和 AI 核心对吧
    EngAPI
        39
    EngAPI  
       142 天前
    咸鱼在 ios 上是真的费电
    clue
        40
    clue  
       142 天前
    vs code 就是完全基于 electron / webview 的, 未来我是看好统一的 web 标准, 性能越来越过剩, 大家都是往开发效率更高的平台上迁

    以前 pc 独立客户端的程序都在 web 化, 移动端也是迟早的事
    flyqie
        41
    flyqie  
       142 天前 via Android
    觉得 flutter 唯一好的点就是难被逆向。

    真要写的话还是喜欢要么 native 要么 web 。
    qinfengge
        42
    qinfengge  
       142 天前
    下载了这个仓库里面的软件试了下,登不上去 spotify 。。。看 issues 发现有人说 dart 不支持使用系统代理?🤔
    https://github.com/KRTirtho/spotube/issues/974
    https://github.com/dart-lang/sdk/issues/50434
    hamsterbase
        43
    hamsterbase  
       142 天前 via Android   ❤️ 6
    我来分享一下我开发使用的技术。 目前 mac ,ios 都上架 store 了。

    1. 桌面端使用 electron + web
    2. docker 版使用 nodejs + web
    3. 手机版用 rn ,在 rn 内置 nodejs 服务器,应用启动时启动 nodejs ,然后再启动 webview 。rn 只拿来套壳,提供一部分原生 API 。

    这样所有端都是基于同一套代码,同一种语言开发的, 纯前端的逻辑就用 web 写,涉及到文件操作就用 node 。
    移动端和桌面端交互不一样,视图层要写两遍。

    同时参考 vscode ,前后端用 ipc 通信,electron 用 electron ipc ,web 用 websocket 。
    justincnn
        44
    justincnn  
       142 天前
    这种全平台支持的,才是好东西,
    像 ms 和 mac 搞封闭的,都会邪教,哈哈
    cooaer
        45
    cooaer  
       142 天前 via iPhone
    @sentinelK 可以尝试一下 styled_widget 这个库,能解决一些嵌套问题
    dogfeet
        46
    dogfeet  
       142 天前
    求推荐一些 flutter 开发的较重型的 app 体验下。
    iyeatse
        47
    iyeatse  
       142 天前 via iPhone   ❤️ 4
    又到了我第二喜欢的前端框架大战环节,我的评价是每个应用自带一个 flutter engine ,并没有比自带一个 chrome 内核更高端
    nbboy
        48
    nbboy  
       142 天前
    uni 和 flutter 选哪个?如果是 android 端的话
    murmur
        49
    murmur  
       142 天前
    @nbboy 国产无脑 uni ,初创小程序的优先级比 app 还高
    flyqie
        50
    flyqie  
       142 天前 via Android
    @iyeatse #47

    那第一喜欢是啥,好奇。
    iyeatse
        51
    iyeatse  
       142 天前   ❤️ 7
    @flyqie 当然是 murmur 大战 v 站果粉
    azu001
        52
    azu001  
       142 天前
    @nbboy flutter 把,uni 渲染性能不太行。
    raymonguo
        53
    raymonguo  
       142 天前
    flutter 对标的是原生。。。的开发体验。。。
    c2const
        54
    c2const  
       142 天前
    感觉小一点的公司可能就只开发一个平台了,不需要跨平台技术 :)
    xfans
        55
    xfans  
       142 天前
    现在 flutter 最大的问题就是 web 端加载慢,没办法 seo 。写了个拼图小游戏,加载太慢了。https://realpuzzle.pages.dev/
    GPT9
        56
    GPT9  
       142 天前
    @murmur #23 小伙子,你有这种想法只能说的开发的业务太简单了,纯 web 就能应付,你用 js 写个 ffmpeg 出来试试。
    murmur
        57
    murmur  
       142 天前
    @GPT9 你们没有转码服务器吗?
    GPT9
        58
    GPT9  
       142 天前
    @murmur #57 算了,当我没说过,感觉你压根就不知道 wasm 用来解决什么问题的。
    murmur
        59
    murmur  
       142 天前
    @GPT9 wasm 本意是让第三方语言写的代码可以转给 web 用,但是哪里有这么多本意啊,需要算法的时候我想要 native app ,不想要一个 web 页面凑合事,你也别跟 b 站一样借着 webasm 拿我电脑跑软解码
    jarnanchen
        60
    jarnanchen  
       142 天前
    这个 app 最近好热门
    javaisthebest
        61
    javaisthebest  
       142 天前
    想问一下 如果用 flutter 搞 web 端是否可行呢?

    打算学一学 🤔️
    murmur
        62
    murmur  
       142 天前
    @GPT9 最开始吹 webasm 是基于 flutter 吹的,google 不想把 dart 翻译成 js ,所以在前端跑了个 dart 虚拟机,你也失去了所有前端调试逻辑,本来 js+css 挺熟的,结果你看到的是个 canvas+dart 虚拟机,这咋个调试( prod 模式的前端一样可以调试,prod 的 flutter 你试试,全 wasm 你怎么看)

    从 google 的角度,他爽了,他开发一次多次跑,从我的角度,我如果不是 dev 模式我都没法调试的,我在用一个 h5 应用但是我所有的 h5 知识都没法用
    joyhub2140
        63
    joyhub2140  
       141 天前
    @GPT9 哈哈,在他看来,wasm 甚至无存在的意义。
    James369
        64
    James369  
       141 天前
    讨厌 dart ,除非它换语言,不然不会用 flutter
    jadeborner
        65
    jadeborner  
       141 天前
    @joyhub2140 #63 就是单纯为了杠而杠,你随便说啥他都能反驳你
    AndyZhuAZ
        66
    AndyZhuAZ  
       141 天前
    不知道为什么 flutter 话题下面总会出现固定杠精
    Alias4ck
        67
    Alias4ck  
       141 天前
    @murmur 你对 wasm 是不是有什么误解? 建议看下官方介绍
    zoozobib
        68
    zoozobib  
       141 天前
    4 年实践,css 不熟,dart 一周,直接画 UI ,毫无门槛,dart 真香.
    状态管理真香
    跨平台真香
    SPA page 的 Static Interop 真香
    Pichai
        69
    Pichai  
       141 天前
    我想知道 telegram 的多端客户端是那个框架开发的?
    Hanggi
        70
    Hanggi  
       141 天前
    @sentinelK 如果是这么写,任谁都很难接受,优化一下编写方式会比较好
    HaroldFinchNYC
        71
    HaroldFinchNYC  
       141 天前
    @Pichai QT
    MetroWind
        72
    MetroWind  
       141 天前
    C++ 用户飘过
    SilenceLL
        73
    SilenceLL  
       141 天前
    @Pichai telegram 的流畅跟业务的专一也有很大的关系,国内很多软件初期都是很好用,但是加了一堆奇奇怪怪的东西后就卡顿,发热
    Bluecoda
        74
    Bluecoda  
       141 天前
    @sentinelK 看来你还没有经过 lisp 的洗礼
    andytao
        75
    andytao  
       141 天前
    GLib/GTK 开发飘过。。。。
    guanyinhang
        76
    guanyinhang  
       140 天前
    @joyhub2140 看好啥,F12 看不到 DOM 节点和样式,一整个硕大的 canvas ,不说调试火葬场,就是搜索引擎也没法抓取内容
    HaroldFinchNYC
        77
    HaroldFinchNYC  
       137 天前
    @zoozobib 状态管理用啥库?
    liulihaocai
        78
    liulihaocai  
       128 天前 via Android
    @murmur 第一次听说有人要调试 prod ,贵公司的 web 不做反调的吗
    murmur
        79
    murmur  
       128 天前
    @liulihaocai 我们是内部应用,不需要反扒
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2270 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 10:53 · PVG 18:53 · LAX 03:53 · JFK 06:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.