Flutter 不是真正的跨平台框架

月初,Google 重磅发布了专为 Web、移动和桌面而构建的 Flutter 2!将 Flutter 从移动开发框架扩展成可移植框架,因而开发者无需重写代码即可将应用扩展至桌面或网页。而本文作者认为,现在不应该再去想创建一个需要部署到所有平台的应用程序。

从 Flutter 2.0 发布以来,我就察觉到它被炒的有点过了。请不要误会,我并不是要否定它,其实我也是 Flutter 的粉丝,亦将一如既往的拥护它。

我在日常工作中经常使用 Flutter 来开发 iOS 和 Android 应用程序。由于早前我是用 Kotlin 或者 Swift 来开发原生的应用,支持多种特性,如:扫描 / 页面识别、pin/biometric 应用程序认证、通知、firebase 统计和一些高级的用户流,现在用 Flutter 来开发应用,我对 Flutter 的优缺点的了解更加透彻。

1、六大平台


通过今年的 Flutter Engage 会议我们可知已经可以使用 Flutter 在 iOS、 Android、 Mac、 Windows、 Linux 和 Web 这六个平台中的任何一个平台上开发应用。这太棒了!但事情远没有这么简单...你的确可以在这 6 个平台上部署你的应用程序,但是说实话,我很少这么做。我很难想象一个人会在不同的平台上部署同一个应用程序,我认为应该根据不同的平台特点使用不同的设计模式。在大型设备上使用底部弹窗、应用程序条、简洁的列表就很别扭。一般来说,适合在移动设备上的组件和设计模式在桌面设备上却不合时宜,反之亦然。我的一个非常好的朋友 Filip Hracek 在 Flutter Engage 演讲中提到“神奇的设计开发者”的相关话题,我非常赞同他的看法。我认为需要有更多的开发者真正知道他们正在做的是什么,而且不是盲目地跟从迭代面板。

*Scrum Sprint* 是一个可重复的固定时间框,在这个时间框内创造一个高价值的产品。-- 维基百科

强烈推荐大家观看 Filip 在 Youtube 上的相关视频片段https://www.youtube.com/watch?v=MIepaf7ks40。

接下来,我们重新回到 Flutter 这个话题:

2、不应该再去想创建一个需要部署到所有平台的应用程序

你更应该去想如何将你要编写的应用程序模块化,以便在未来更好地复用这些模块。给你们举个例子:在我的公司,我们正在开发专注于用户数据的应用程序。

这就需要创建自定义和高级的调查报告,我们不希望每次添加新问题时都要编写新的窗口小部件。我们的做法是:编写一个包含所有可能的调查逻辑的模块,在许多其他项目中复用它(而不需要每次都重写一遍相似的代码)

我给你举上面这个例子的目的是提醒你在构建一个应用程序时,你更应该着重思考你要做的应用程序或整个业务的重点是什么。更应该去重点思考,它背后的业务逻辑是什么?

在计算机软件中,业务逻辑或领域建模也是程序的一部分,它对真实世界的业务规则进行编码,确定如何创建、存储和修改数据。

当你明确了领域划分,你可以将一个领域封装成独立的模块,你可以将该模块在需要开发的 Flutter 应用程序中复用。

但 Luke,这有什么好大惊小怪的吗?

对,这是一个好问题!

对于相同的业务逻辑,你可以用不同的用户流来创建多个 Flutter 应用。你可以将要开发的 Flutter 应用进行分类(如:移动应用、桌面应用和 Web应用),这将能帮助关注到不同平台的差异,对特定平台进行特定处理最终将获得更好的用户体验。

3、针对不同平台要编**写多个应用程序**

虽然 Flutter 还算是一个相对比较新的技术,还主要针对小公司和个人开发者,但这不妨碍它成为一个人人皆可用的伟大工具。

我参与开发过多个企业级应用程序。根据我的经验,系统的每个部分都需要有一个清晰的工作流程。开发一个系统通常需要前端、后端等。为了节约成本,编写一个应用程序,在不同的平台运行也越发流行。为了实现这个目的,你需要雇一个团队进行专门开发。你敢想象,十几个人的团队开发同一套代码来实现所有平台的特性吗?这简直是管理层的噩梦。很可能出现:一部分开发人员开发的桌面特性与移动团队正在开发的特性相冲突的情况。

其次,应用程序包也会越来越臃肿,然而很多时候并不是每个平台都需要有一份软件包。现在,正值 Flutter 2.0 发布的时候,由于我并没有将所有的包都进行升级,还不支持 null 安全还需要手动解决依赖冲突的问题。

4、为什么 Flutter 不是一个跨平台的框架

在读了这篇文章之后,或许你能够理解为什么我会认为 Flutter 不是一个真正的跨平台框架。Flutter 是一个为我们提供了为每个平台构建应用程序所需的功能的工具。我认为,真正实现跨平台不应该只开发一个应用程序,更应该开发一组由相同的业务逻辑驱动的应用程序集合。

此外,当我们编写 Flutter 应用程序时,我们并没有跨越任何平台。我们这种所谓的跨平台,不过是用 Xamarin 或其他工具将写好的代码翻译成原生元素。

如果非要把 Flutter 和其他东西进行类比的话,那么与之相似的就是游戏引擎(如 Unity)。我们不需要专门在 Windows 或者 Mac 系统上开发对应平台的游戏。我们可以使用 Unity 编写,然后将其导出到一个特定的平台。使用 Unity 编写一个游戏然后导出到多个平台和真正的跨平台完全也是两码事。


https://mp.weixin.qq.com/s/H1IKT_n7ihVsMOe_hS-Xlw

如何快速提升 Flutter App 中的动画性能

发布于:3天以前  |  25次阅读  |  详细内容 »

Flutter 使用 Riverpod+Retrofit 构建 MVVM 开发模式

发布于:3天以前  |  35次阅读  |  详细内容 »

使用 Flutter 加速应用开发

发布于:14天以前  |  88次阅读  |  详细内容 »

深入分析 Flutter 渲染性能

发布于:16天以前  |  68次阅读  |  详细内容 »

深入分析 Flutter 渲染性能

发布于:21天以前  |  83次阅读  |  详细内容 »

Flutter 不是真正的跨平台框架

发布于:1月以前  |  202次阅读  |  详细内容 »

Flutter 2 来了!

发布于:1月以前  |  196次阅读  |  详细内容 »

Flutter Worker —— 闲鱼这样实现“逻辑跨平台”

发布于:1月以前  |  170次阅读  |  详细内容 »

针对 Web,移动端和桌面端构建的下一代 Flutter

发布于:1月以前  |  150次阅读  |  详细内容 »

使用 flutter_driver 进行集成测试

单元测试可以确保应用的各个部分正常工作,但如何确保整个应用正常工作呢?这就需要用到集成测试了。

发布于:6月以前  |  629次阅读  |  详细内容 »

详解:Flutter内存泄漏解决方案

众所周知,内存的高低是评判一款app的性能优劣的重要的指标之一。如何更简单的帮助开发者分析、暴露且解决内存泄漏问题,几乎是每一个平台或框架、开发者亟需的一个的"标配"的feature。但是对于flutter社区,缺少一款用得顺手的内存泄漏工具。 对于使用flutter而言,因使用dart语言,通过形成渲染树提交到c++的skia进行渲染,从dart层到c++层拥有很长的渲染链路,使用者必须对整个渲染链路有通盘深刻的理解,才能深刻此时此刻的内存使用情况。本文提出一种基于渲染树个数的方式寻找内存泄漏的解决方案。

发布于:6月以前  |  698次阅读  |  详细内容 »

开始使用 Flutter 构建 Windows 桌面应用吧!

我们的使命是为开发者提供一个开源的高效框架,帮助他们在任何平台上构建美观的原生应用。截至目前,我们已经为 Android 和 iOS 带来了生产级别的支持,发布了 8 个稳定版本,仅在 Google Play 商店中就有超过 10 万款应用使用 Flutter。我们在继续努力,将支持范围扩展至 web、macOS 和 Linux 等其他平台。如今,Flutter 的另一个目标,即支持 Windows 的 Flutter Alpha 版本已经发布。

发布于:6月以前  |  734次阅读  |  详细内容 »

如何有效定位Flutter内存问题?

内存水位升高导致的稳定性问题严重影响app用户体验,所以开发者们非常关注Flutter的内存表现。随着Flutter业务越来越多,闲鱼也面临着oom导致的crash率提升的问题,下面我们结合项目中实际遇到的内存问题和解决思路跟大家分享下flutter内存优化的经验。

发布于:6月以前  |  630次阅读  |  详细内容 »

推荐5个Flutter重磅开源项目!

大家好,我是hub哥,近年来,随着移动智能设备的快速普及,移动多端统一开发框架已成为一个热门话题。这里为大家整理了5个Flutter优质的开源项目,希望对大家有帮助

发布于:9月以前  |  1498次阅读  |  详细内容 »

Flutter在PLUS业务中的探索和实践

2016年京东为向核心客户提供更优质的购物体验,特别推出京东PLUS会员,旨在全方位提升和丰富用户网购体验,目前京东PLUS会员已成为电商行业付费人数最多的会员体系。作为PLUS的前端开发,我们思考最多的就是如何让页面更快更好的呈现在用户面前,如何用技术为用户提供最好的购物体验。

发布于:9月以前  |  1084次阅读  |  详细内容 »

京东技术中台Flutter实践之路(二)

发布于:9月以前  |  1349次阅读  |  详细内容 »

首发 | 闲鱼公开多年 Flutter 实践经验

Flutter从诞生到现在,已经成为了跨端开发的领跑者。闲鱼应用在flutter能够以模块形式存在前,进行了很长时间的混合app架构的探索,对原生工程进行较多改动,在官方推出flutter模块模式后,我们进行了大量调研,最终推出了一套开箱即用的混合工程脚手架flutter-boot,帮助大家快速搭建混合工程。

发布于:9月以前  |  1092次阅读  |  详细内容 »

打破重重阻碍,Flutter 和 Web 生态如何对接?

Flutter 设计之初是不考虑 Web 生态的,原因很简单:两种技术设计理念不同,强行融合很可能让彼此都丧失了优势。但是业界又有很多团队在做这种尝试,说明需求是存在的。今天,阿里无线开发专家门柳就来手把手教如何实现 Flutter 和 Web 生态的对接?

发布于:9月以前  |  1072次阅读  |  详细内容 »

"零"学习成本:使用 Web 标准开发动态化 Flutter 应用

Kraken 是由淘系技术部前端架构团队开发的一个基于 Flutter 的动态化框架,本文将带大家了解和认识 Kraken,分享 Kraken 的一些设计思想以及 Flutter 和 Web 技术对接的实践。

发布于:9月以前  |  978次阅读  |  详细内容 »

一文看完阿里巴巴 AliFlutter 客户端研发体系

Flutter 是开源的 UI 工具包,其能够帮助开发者通过一套代码库高效构建多平台精美应用,支持移动、Web、桌面和嵌入式平台。Flutter 组件采用现代响应式框架构建,中心思想是用组件 (widget) 构建 UI。淘宝终端技术部无线技术专家王康从 Flutter 的原理出发,介绍了 Flutter 的原理、业内现状,以及阿里巴巴在 Flutter 上所做的深度实践和探索。

发布于:9月以前  |  1117次阅读  |  详细内容 »

最多阅读

Flutter的手势GestureDetector分析详解 1年以前  |  4162次阅读
Flutter插件详解及其发布插件 1年以前  |  3655次阅读
在Flutter中添加资源和图片 2年以前  |  3455次阅读
发布Flutter开发的iOS程序 2年以前  |  2695次阅读
Flutter 状态管理指南之 Provider 1年以前  |  2422次阅读
在Flutter中发起HTTP网络请求 2年以前  |  2358次阅读
Flutter for Web详细介绍 1年以前  |  2300次阅读
使用Inspector检查用户界面 2年以前  |  2287次阅读
Flutter Widget框架概述 2年以前  |  2138次阅读
JSON和序列化 2年以前  |  1965次阅读
Flutter框架概览 2年以前  |  1961次阅读
为Flutter应用程序添加交互 2年以前  |  1951次阅读
Flutter路由详解 1年以前  |  1920次阅读
使用自定义字体 2年以前  |  1825次阅读
处理文本输入 2年以前  |  1814次阅读
编写国际化Flutter App 2年以前  |  1760次阅读
使用包来开发Flutter应用 2年以前  |  1738次阅读
发布Flutter开发的Android程序 2年以前  |  1731次阅读