[DTK] 强烈建议提供flutter类似dtk的开发sdk包
Tofloor
poster avatar
p13148822303
deepin
2021-09-10 06:17
Author

flutter对linux的支持已经不错了,要是有类似dtk一样在flutter中能直接调用的sdk,还有打包发布工具。

那deepin的开发者和专属应用一定会更多

毕竟QT...开发工具太难用了。真没兴趣去学习。

或者基于jetpack compose进行开发也行

Reply Favorite View the author
All Replies
小兰米
deepin
2021-09-10 07:48
#1

这事不好做,原因如下:

1. Flutter目前主要目标是移动设备应用,没有桌面平台打包工具。要自己弄一个打包工具得写新编译器,这跟弄一个新开发语言没区别。

2. Flutter支持的本地语言有Java、Kotlin、Objective-C、Swift,这其中Java就不用说了,Kotlin只支持与C语言互通,支持QT很难;OC没有MACOS以外的编译器。

3. 当然,Swift是支持与C++互通的,但这样倒不如说直接与Dtk互通更好,为什么一定要加个Flutter呢?

4. Flutter使用的是自有的渲染引擎,官方并未提供让这套引擎运行于Linux操作系统的方案,这也是一个巨大的工程。

综上所述,要让Flutter成为桌面应用开发的解决方案的难度很大。

虽然Swift理论上可以与QT互通(本人的理解),但它在Linux上却没有免费好用的IDE支持,收费的倒有,很贵!

除此之外,微软的.Net Core也开源了,他们的WPF也开源了,理论上也是可以作为一种方案,但遗憾的是它在Linux上也没有好用的IDE。

总不能要求所有的程序员都用记事本吧?

 

所以说,目前来讲,Linux上可行的桌面应用开发方案中,只有QT和node/Electron同时具备编程语言和开发环境的优势。

Reply View the author
DebuggerX
deepin
2021-09-10 19:15
#2

楼上可能并不是很了解fluuter,说的不太对,我作为快5年的flutter开发,并且正巧最近准备用flutter写一个deepin/uos专用的工具,试着回答一下你的问题。

1. flutter的linux桌面支持使用的是gtk作为容器,而dtk是基于qt的,所以个人理解,想直接把dtk中的一些核心类库移植到flutter中使用,现阶段只能将其用gtk重写,这应该是不太现实的。至于UI部分,flutter的渲染完全是自绘,如果你想要实现类似dtk的组件风格,只能基于flutter组件库用dart重写样式,这个要求官方去做也一样不太现实,毕竟不能要求deepin的开发再去学一遍flutter。

2. 打包发布工具这个事儿,我觉得其实还好。因为flutter编译为linux桌面应用后,产物二进制几乎可以说是没有而外依赖的,所以打包起来还是很简单的,直接按照UOS的打包规范处理即可。

Reply View the author
butu
deepin
2021-09-10 19:40
#3

compose for desktop目前还是测试阶段吧

Reply View the author
joo
deepin
2021-09-11 09:55
#4
小兰米

这事不好做,原因如下:

1. Flutter目前主要目标是移动设备应用,没有桌面平台打包工具。要自己弄一个打包工具得写新编译器,这跟弄一个新开发语言没区别。

2. Flutter支持的本地语言有Java、Kotlin、Objective-C、Swift,这其中Java就不用说了,Kotlin只支持与C语言互通,支持QT很难;OC没有MACOS以外的编译器。

3. 当然,Swift是支持与C++互通的,但这样倒不如说直接与Dtk互通更好,为什么一定要加个Flutter呢?

4. Flutter使用的是自有的渲染引擎,官方并未提供让这套引擎运行于Linux操作系统的方案,这也是一个巨大的工程。

综上所述,要让Flutter成为桌面应用开发的解决方案的难度很大。

虽然Swift理论上可以与QT互通(本人的理解),但它在Linux上却没有免费好用的IDE支持,收费的倒有,很贵!

除此之外,微软的.Net Core也开源了,他们的WPF也开源了,理论上也是可以作为一种方案,但遗憾的是它在Linux上也没有好用的IDE。

总不能要求所有的程序员都用记事本吧?

 

所以说,目前来讲,Linux上可行的桌面应用开发方案中,只有QT和node/Electron同时具备编程语言和开发环境的优势。

你确认你真的用过flutter吗?

Reply View the author
joo
deepin
2021-09-11 11:06
#5

flutter已提供了for linux desktop的整个工具链,按照官网的安装指南即可,唯一阻碍是需要翻墙。flutter的官方安装和升级都是通过dart(或flutter)的工具链命令从github下载源码编译安装的,换句话说深度不好维护或者维护也没有意义。这里说一下flutter for linux不是用gtk(或qt)的容器,也没有用X11,甚至没有用opengl等linux的图形接口。flutter在5个平台windows、Mas os、linux、android、ios都是除显卡驱动以外,上层的所有都是google自己开发或收购回来。我记得不是很清楚chrome40之前是用gtk的,由于不是太理想,google决定自己开发一个2D图形人机接口,这就是Skia引擎,它是跳出三界之外的,除了显卡驱动以外,不用任何操作系统本身的Widget,chrome40之后使用的是Skia引擎。然后,我说说flutter是怎样来的,最早在2011年发布dart语言(dart没发布之前我就关注dart的讨论,我是2005年用gmail的),目的是想取代js,谷歌用dart做了一系列的尝试,包括web组件、聚合物、angular dart都是基于web的结果都失败,包括dart本身都不成功。因此dart开发团队认为web过于复杂,虽然html5做了一些简化,还css(呵呵css2、css3.....),不利于描述用户界面,更要命的是为兼容不同浏览器以及版本,做过web前端的都知道充满了各种奇淫技巧。于是dart团队和chrome团队在17年抛弃用dart开发web的想法,尝试紧借鉴html和css核心,底层开始开发一个框架不需要兼容任何东西的,由于chrome的团队太了解html和css的优缺点,而且有现成的Skia引擎,第一个flutter验证原型就是从chrome裁剪出来的,开发Widget和API由dart团队打造,这两个团队都是大神级别,仅仅花2个月就已验证了框架的性能、开发体验都超出预期,后来用一年时间就发布第一个预览版,18年就发布了正式版。

Reply View the author
fxt0706
deepin
2022-01-06 19:14
#6

Flutter 目前在 X86 的 Linux 上已经可以直接编译成桌面程序运行了,如同2楼所说,只需要有套符合 UOS UI 规范的界面,按照 UOS 打包规范打包就行。

界面 UI 的问题可以自绘,也可以等着有大佬或者官方在 pub 上发包,现阶段 UOS UI 文档也不是很完善,只涵盖了比较基础的一些 UI 标准,自绘起来不会太难了。

至于GTK和Qt的问题不是很理解,如果能在 Deepin 运行起界面并正常使用,也无所谓是不是 Qt 实现吧?

Reply View the author