7

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

 1 year ago
source link: https://www.v2ex.com/t/1005711
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

V2EX  ›  程序员

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

  lsk569937453 · 13 小时 14 分钟前 · 6682 次点击
刚在 github 的热门项目上看到这个项目,https://github.com/KRTirtho/spotube ,居然是 flutter 开发的桌面端+移动端。我是 windows ,下载下来看了一下,包也不是很大,流畅度还行,就是样式明显还有优化的空间。这样的话对小公司来说简直就是福音阿,毕竟人手又不足。一套代码,多端发布还是挺爽的。

我之前用 react native 开发的跨移动端程序,现在在用 tauri 开发桌面端。虽然之前在 v2 上看到很多人不看好 flutter ,毕竟性能又不行(渲染引擎是 skia),样式代码嵌套简直就是地狱。没想到 flutter 这几年一直在发展,桌面端也稳定了。刚看了一下 issue ,还是 10000+,哈哈。
68 条回复    2024-01-04 22:44:30 +08:00
CaffreySun

CaffreySun      13 小时 12 分钟前   ❤️ 1

flutter 桌面上的 webview 是硬伤
murmur

murmur      13 小时 10 分钟前

所以这说明了什么,qq 音乐用 webview 就做出这效果来了,还是几年前,据说当年给 win7 还是啥版本的 qq 音乐上 webview 还得了集团技术优秀
purringpal

purringpal      13 小时 9 分钟前 via iPhone   ❤️ 2

综合水平一直是 flutter 最高吧,rn 和 uni 拥护者大部分是 web 前端开发者,人员基数巨大,所以给人一种声音很大的感觉
keppelfei

keppelfei      13 小时 9 分钟前

跨平台移动端自己倒是可以用同一套代码,pc 端代代码其实不好用同一套的,尺寸都不一样,如果每个地方都适配还不如重新开个分支。逻辑倒是可以通用一套,另外很多三方插件可能对 pc 端支持并不好,所以如果冲着一套代码就去用 flutter ,我觉得你可以收了这个心思
murmur

murmur      13 小时 6 分钟前

@purringpal no no no ,你理解错了,这个观点是随着硬件的发展,和浏览器内核的完善,游戏类渲染和浏览器渲染的差距,在非游戏层面,会越来越少,而 web 是成熟技术,组件最多,框架最多,调试也最完善,各种地方复用也是最简单

flutter 单一个类游戏渲染,你所有的调试技术全不管用了,出了问题你还得怀疑是不是底层渲染的问题,这个底层可不是谁都动得了的,浏览器打 css 补丁可就太容易了
jonyJJ

jonyJJ      12 小时 59 分钟前

可以说只会越来越好,开发一般的应用也是够用了,flutter 桌面开发需要解决的两个点:multi window 和 platform webview , 目前官方都在推进中,期待 2024 年能够完成。
messnoTrace

messnoTrace      12 小时 56 分钟前

用 flutter 做休闲游戏开发 3 年了,基本毫无问题,除了一些效果不如 unity 和 cocos ,所以做个应用毫无问题,
sentinelK

sentinelK      12 小时 55 分钟前   ❤️ 3

flutter 最近也有在生产中试用,用下来,最难受的还是语法格式。

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

甚至一个样式、一个事件,都是一层嵌套。
chengxiao

chengxiao      12 小时 51 分钟前

Localsend 企业微信 闲鱼
也都是 Flutter
purringpal

purringpal      12 小时 50 分钟前   ❤️ 4

@murmur 你的角度太偏了,什么底层漏洞什么浏览器打补丁,调查一下有几个人关注这些… 跨平台专注的是应用开发,Flutter 调试方不方便你试试就知道了,反而是你说的底层框架决定了 RN 上限低,哪怕应用层轮子再多,也只是爽了开发者,用户体验就是烂,我司已经全面下线 RN 相关模块,只用原生+Flutter 。
NewTab12138

NewTab12138      12 小时 50 分钟前

我们现在基本都是 flutter 做移动端全套,还可能外加 h5 和 web
murmur

murmur      12 小时 49 分钟前   ❤️ 3

@chengxiao 闲鱼是体验差的代表,如果没有闲鱼我可能对 flutter 还会评价更好一些
beimenjun

beimenjun      12 小时 47 分钟前

跨平台方案终究是要牺牲一些的东西的,想一套代码多个平台运行来省人力的钱,那就要付出对应的代价。

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

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

对于付费的产品,你只要能忍,又不是不能用。
SilentOrFight

SilentOrFight      12 小时 45 分钟前

@jonyJJ #6 webview 推进多年了,只能说 flutter 推进很慢,好多开发者实际开发中提的痛点都推的慢,唉,再不加快,Jetpack Compose 就要真正实现跨平台了,到时我情愿写 kt 也不愿意写 dart
0o0O0o0O0o

0o0O0o0O0o      12 小时 44 分钟前   ❤️ 4

反正我无条件支持 flutter 和 electron 之类的跨平台方案用户像楼上这样互掐,这样 Linux 可以用上更多 GUI 程序?
buf1024

buf1024      12 小时 41 分钟前

稳定不至于,只能说基本可用,很多功能要第三方插件支持,而且第三方支持不一定有你自己所需的功能,还是要自己修改,或写插件支持。
joyhub2140

joyhub2140      12 小时 38 分钟前   ❤️ 1

2023 除了苹果自带的那个 safari ,其他主流浏览器都对 webassemble 支持完善了哈,我非常看好 flutter web 端哈。

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

flutter 官方 webassemble GC 示例: https://flutterweb-wasm.web.app/
cincout

cincout      12 小时 36 分钟前

@chengxiao 闲鱼就算了, 用 flutter 又不全部用
taosimple

taosimple      12 小时 34 分钟前

@messnoTrace flutter 用什么游戏引擎
mainjzb

mainjzb      12 小时 28 分钟前

?没想到 v2 还有人看 issue 数量来搞笑。。。我以为只能在知乎看到
随便翻一下 github 常见库
rust 9k+
vscode 7k+
TypeScript 5k+
elasticsearch 4.1k+
messnoTrace

messnoTrace      12 小时 27 分钟前

@taosimple 现在用的是 flame
murmur

murmur      12 小时 20 分钟前

@joyhub2140 wasm 又不能操作 dom ,目前 webasm 的用途最大还是代码混淆,我不用 webasm 一样可以写 web 啊

一般的混淆 beautify 了还可以调试,wasm 那是真的没法调了
pursuer

pursuer      12 小时 17 分钟前

跨平台的库很多,但是浏览器有个非常重要的特性就是标准化的开放性。比如如果想在自己的应用中嵌入或引用其他来源的组件/内容,在浏览器上可以直接一个标签解决,并且标准化程度很高。但应用框架要实现类似效果就比较困难。这个优势甚至足以在大部分场景下让浏览器的缺陷能被接受。
fomenyesu

fomenyesu      12 小时 15 分钟前

@joyhub2140
flutter 官方 webassemble GC 示例: https://flutterweb-wasm.web.app/

官方示例 打开速度这么慢? 有什么好?
XCFOX

XCFOX      11 小时 48 分钟前

「综合水平一直是 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

lucifer518      11 小时 45 分钟前

@sentinelK #8
不要全部写在一起
我举个例子
buildWidget1() {...}
buildWidget2() {...}
buildWidget3() {...}

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

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

写法可以类似 React
所以你说的这个问题基本不存在
buf1024

buf1024      11 小时 18 分钟前

补充#16 ,贴上之前用 flutter 写的,支持三端: https://github.com/buf1024/hiqradio
=======
稳定不至于,只能说基本可用,很多功能要第三方插件支持,而且第三方支持不一定有你自己所需的功能,还是要自己修改,或写插件支持。
ybz

ybz      11 小时 11 分钟前

flutter 有自己的调试工具并不比浏览器控制台差。

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

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

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

然后 Flutter 包括各个平台嵌入层、引擎层、框架层、官方 packages 、开发工具、测试工具、还有 Dart ,随便哪个东西都是一个大项目,但是真正 Google 的全职开发其实没多少人,又要推进新功能,又还有 1w+个 issues 根本忙不过来。
MegatronKing

MegatronKing      10 小时 37 分钟前   ❤️ 4

我是 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

kkk9      10 小时 35 分钟前

@fomenyesu #25 HK 节点表示秒开
beimenjun

beimenjun      10 小时 28 分钟前

@ybz 确实,Flutter 长期看最大的风险在 Google……
zhengjing

zhengjing      10 小时 25 分钟前

flutter 写写公司的一些桌面小工具非常不错,简单快速跨平台
mainjzb

mainjzb      10 小时 15 分钟前

@XCFOX 我去下载了这俩 app 试用了一中午,我感觉这个 flutter app 一部分原因是作者自己加入了一堆花里胡哨的功能维护不好的导致的。甚至在一个帖子里,快速下滑都能发现右侧滚动条来回跳动。
RN 原生体验确实很原生
lwlizhe

lwlizhe      9 小时 35 分钟前

我现在的工作,就在公司做 flutter 基建和推广,怎么说呢,假如别的组用的 QT 这种,跟他们推广 flutter 桌面端就比较尴尬了,从性能、内存、功能支持方面确实都比不上 QT ,多窗口这种也支持的比较困难,感觉离成熟还是有一定差距。
Sniper000

Sniper000      9 小时 26 分钟前

我们公司的 APP ,ToB 的 基本都用 Flutter 了,稳定跑了 2 年了,没啥大问题,效率是很高,开发很快,反正我已经不喜欢使用原生 iOS 开发了。
ydong

ydong      9 小时 9 分钟前   ❤️ 1

@murmur "webasm 的用途最大是代码混淆",你是认真的吗
murmur

murmur      9 小时 8 分钟前

@ydong 跑高性能程序有 app ,可以直接调硬件功能,你优化的再牛逼的算法也比不过别人直接调硬件编解码器和 AI 核心对吧
EngAPI

EngAPI      9 小时 4 分钟前

咸鱼在 ios 上是真的费电
clue

clue      9 小时 3 分钟前

vs code 就是完全基于 electron / webview 的, 未来我是看好统一的 web 标准, 性能越来越过剩, 大家都是往开发效率更高的平台上迁

以前 pc 独立客户端的程序都在 web 化, 移动端也是迟早的事
flyqie

flyqie      8 小时 39 分钟前 via Android

觉得 flutter 唯一好的点就是难被逆向。

真要写的话还是喜欢要么 native 要么 web 。
hamsterbase

hamsterbase      8 小时 35 分钟前 via Android   ❤️ 4

我来分享一下我开发使用的技术。 目前 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

justincnn      8 小时 19 分钟前

这种全平台支持的,才是好东西,
像 ms 和 mac 搞封闭的,都会邪教,哈哈
cooaer

cooaer      8 小时 18 分钟前 via iPhone

@sentinelK 可以尝试一下 styled_widget 这个库,能解决一些嵌套问题
dogfeet

dogfeet      8 小时 18 分钟前

求推荐一些 flutter 开发的较重型的 app 体验下。
iyeatse

iyeatse      8 小时 17 分钟前 via iPhone   ❤️ 4

又到了我第二喜欢的前端框架大战环节,我的评价是每个应用自带一个 flutter engine ,并没有比自带一个 chrome 内核更高端
nbboy

nbboy      8 小时 7 分钟前

uni 和 flutter 选哪个?如果是 android 端的话
murmur

murmur      8 小时 2 分钟前

@nbboy 国产无脑 uni ,初创小程序的优先级比 app 还高
flyqie

flyqie      8 小时 0 分钟前 via Android

@iyeatse #47

那第一喜欢是啥,好奇。
iyeatse

iyeatse      7 小时 53 分钟前   ❤️ 2

@flyqie 当然是 murmur 大战 v 站果粉
chendi58

chendi58      7 小时 52 分钟前

@nbboy flutter 把,uni 渲染性能不太行。
raymonguo

raymonguo      7 小时 43 分钟前

flutter 对标的是原生。。。的开发体验。。。
c2const

c2const      7 小时 32 分钟前

感觉小一点的公司可能就只开发一个平台了,不需要跨平台技术 :)
xfans

xfans      7 小时 26 分钟前

现在 flutter 最大的问题就是 web 端加载慢,没办法 seo 。写了个拼图小游戏,加载太慢了。https://realpuzzle.pages.dev/
GPT9

GPT9      7 小时 8 分钟前

@murmur #23 小伙子,你有这种想法只能说的开发的业务太简单了,纯 web 就能应付,你用 js 写个 ffmpeg 出来试试。
murmur

murmur      7 小时 6 分钟前

@GPT9 你们没有转码服务器吗?
GPT9

GPT9      6 小时 39 分钟前

@murmur #57 算了,当我没说过,感觉你压根就不知道 wasm 用来解决什么问题的。
murmur

murmur      6 小时 34 分钟前

@GPT9 wasm 本意是让第三方语言写的代码可以转给 web 用,但是哪里有这么多本意啊,需要算法的时候我想要 native app ,不想要一个 web 页面凑合事,你也别跟 b 站一样借着 webasm 拿我电脑跑软解码
jarnanchen

jarnanchen      6 小时 21 分钟前

这个 app 最近好热门
javaisthebest

javaisthebest      6 小时 21 分钟前

想问一下 如果用 flutter 搞 web 端是否可行呢?

打算学一学 ?️
murmur

murmur      6 小时 12 分钟前

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

从 google 的角度,他爽了,他开发一次多次跑,从我的角度,我如果不是 dev 模式我都没法调试的,我在用一个 h5 应用但是我所有的 h5 知识都没法用
joyhub2140

joyhub2140      4 小时 47 分钟前

@GPT9 哈哈,在他看来,wasm 甚至无存在的意义。
James369

James369      1 小时 59 分钟前

讨厌 dart ,除非它换语言,不然不会用 flutter
jadeborner

jadeborner      1 小时 24 分钟前

@joyhub2140 #63 就是单纯为了杠而杠,你随便说啥他都能反驳你
AndyZhuAZ

AndyZhuAZ      1 小时 19 分钟前

不知道为什么 flutter 话题下面总会出现固定杠精
Alias4ck

Alias4ck      1 小时 10 分钟前

@murmur 你对 wasm 是不是有什么误解? 建议看下官方介绍
zoozobib

zoozobib      1 小时 7 分钟前

4 年实践,css 不熟,dart 一周,直接画 UI ,毫无门槛,dart 真香.
状态管理真香
跨平台真香
SPA page 的 Static Interop 真香

</div


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK