- 原文地址:13 Reasons Why you should choose/ consider to move to Flutter
- 原文做者:Ganesh .s.p
- 译文出自:掘金翻译计划
- 本文永久连接:github.com/xitu/gold-m…
- 译者:YueYong
- 校对者:MeandNi
13 个你应该转向 Dart 而且选择或者学习利用 Flutter 去开发你的下一个 app 的理由。前端
现在的企业须要在选择移动技术时作出关键选择。他们不断的测试和评估技术,以求不论用户使用什么移动设备或操做系统都能有强大的数字体验。企业若是不能提供易于使用的产品和服务,那么不管使用何种渠道或设备,都有可能落后于竞争对手。android
目前面临的挑战即是跨平台应用的开发存在问题。在某些状况下,尽管开发人员尽了最大努力,其用户体验仍然落后于原生 app 。近年来,咱们看到了各类移动框架的出现,如 React Native、Xamarin 和 AngularJS ,它们帮助咱们更容易地产生较好地数字体验。最近咱们看到一个新玩家加入了这场游戏——谷歌的 Flutter。ios
从内部来看,Flutter 看起来像是谷歌各类技术和概念的大杂烩,然而却产生一个难以想象的强大的移动框架。它是基于 Dart (谷歌的内部编程语言)开发的,它可让 Flutter 访问 Skia 图形库,而这正是 Chrome 浏览器所使用的。除此以外,Flutter 与谷歌的 Material Design 规范紧密结合;其中最著名的即是 Android 用户已经熟知的“卡片图案”。git
让咱们看看 13 个选择 Flutter 做为你的开发环境甚至能够选择它开始你的职业生涯的理由,github
1. Flutter 克服了传统跨平台的限制web
长期以来,建立真正的跨平台方法一直是技术顾问的苦恼所在,他们厌倦了为同一产品制做多个版本。可是,实际上,跨平台应用的用户体验一般落后于原生 app,由于你常常须要即时编译 JavaScript 来构建 UI 体验。数据库
使用 Flutter,你不只能够拥有“一次编写”的优点,还能够建立高性能的“原生”体验,由于 Flutter 应用程序是提早编译出机器可执行的二进制文件。它克服了其余跨平台方法中的一些常见问题。编程
2. 开发人员的生产力提升了十倍后端
这种生产力的提升来自 Flutter 的“热重载”(也就是所谓的“有状态的热重载”和“热重启”)。这样,开发人员能够在不到一秒的时间内看到他们对应用程序状态所作的更改;而且在不到 10s 的时间内改变 app 的结构。浏览器
没有必要去启动另外一个 Gradle 构建程序——由于你能够在保存后查看你的修改。对于开发人员来讲,这一般很容易掌握——在使用“热重载”时几乎没有等待时间,由于在默认状况下,每次保存时都会实时改变。
然而,优点是相当重要的。使用 Flutter 开发时间一般会减小 30-40%,由于在 Android 开发中,每次修改后 Gradle 都须要从新构建,这会下降 Android 开发人员的速度。
3. 先后端只需一套代码
在 Android 编程中,前端( Views )有单独的文件,由后端( Java )引用,与之不一样的是,flutter 使用一种语言( Dart )来完成这两项工做,并使用一个响应式框架。
Dart 借鉴了其余语言众多流行的特性,同时不会让你感到陌生,由于它和 Java 或者其余语言类似。Dart 的构建考虑了开发人员的易用性,从而使许多常见任务变得更加容易。你能够在这学到更多有关 Dart 的知识: Dart 语言之旅.
4. 这是一种强大的开箱即用的设计体验
因为 Flutter 团队对 Material design 规范的积极适配,使得开发者很容易就能够建立出功能强大的 UI 体验。它能够帮助你生成一般只能在原生 app 中才能体验到的平滑、流畅,由于 Flutter 的发行版构建的就是一个原生 app 。
Flutter 的小部件同时也实现了 iOS 的人机界面设计规范,可让你在 iPhone 和 iPad 上也能得到那种原生的“体验”。
5. 有一个数量众多且开源的软件库
大量可用的开源包能够帮助你更快、更轻松地建立应用程序,并且目前有许多可用的包可使许多复杂的任务变得更容易。
因为不断加入的开发人员对 Flutter 的做出的积极贡献,因此即便这个开源库还不够成熟,但它依然在积极壮大。
6. 与 Firebase 的紧密结合
Firebase 为云存储、云功能、实时数据库、托管、身份验证等一系列服务提供开箱即用的支持。你的基础设施彻底能够是无服务器的、冗余的和可扩展的。这意味着你没必要花费大量时间和资源来构建后端。
它还能够直接与一个工具结合使用来自动化你的开发和发布过程以促进持续交付(例如 Fastlane)。所以,你没必要在团队中提供专门的 DevOps 支持。
7. 大量 IDE支持 Flutter
在使用 Flutter 进行编程时,你能够从许多集成开发环境中进行选择。一开始我使用的是 Android Studio,但后来我看 Flutter Live 时使用的是VS Code。这让我很疑惑,由于我发现不少 Flutter 开发人员都在使用 Visual Studio Code。当我尝试以后,我明白为何这么多人喜欢它了。 VS Code 相较于 Android Studio 和 IntelliJ 更加轻量,速度也快得多,而且具备二者中的大部分特性。就我我的而言,我已经转向 VS Code,可是你也可使用许多其余的 IDE ,你无需切换就能够开始 Flutter 的工做。
8. UI听从性——一切都是一个小部件
在 flutter 中,全部的东西都是一个小部件,例如 Appbar, Drawer, Snackbar, Scaffold 等等。开发者能够很容易地将一个小部件包装在另外一个小部件中以实现一些效果,例如将一个部件包装在一个 Center 小部件中,就可让其居中。
以上这些都是为了确保你的用户不管使用什么平台运行你的软件均可以有相同的用户体验。你还应该阅读下述 flutter 文档:Everything’s a widget
9. Android/iOS 的不一样主题
根据用户的平台分配正确的主题就像使用三元 if 检查用户正在运行的平台同样简单;容许 UI 在运行时决定使用哪些 UI 组件。
下面是一个示例代码,它用于检查当前运行的平台,若是是 iOS,它返回一个以紫色做为主色调的主题。
return new MaterialApp(
// default theme here
theme: new ThemeData(),
builder: (context, child) {
final defaultTheme = Theme.of(context);
if (defaultTheme.platform == TargetPlatform.iOS) {
return new Theme(
data: defaultTheme.copyWith(
primaryColor: Colors.purple
),
child: child,
);
}
return child;
}
);
复制代码
10. 使用 Code Magic 进行持续集成.
Code magic 是 2018 年 12 月 4 日在 Flutter Live 中使用的一个开源工具。Code magic 很容易学习,而且彻底免费!它是一种高度复杂的 CI 工具,专门针对 Flutter 进行了优化。 Code magic 使构建过程无缝对接。
运行中的 Code Magic
11. 2Dimensions 让动画制做更简单
我第一次尝试使用 Flutter + Flare——Bouncy
一样是在 Flutter live 2018 期间推出的惊人的在线工具,能够轻松建立很是棒的 UI 或动画。它弥补了 UI 设计人员和开发人员之间的差距,减小了应用 UI 或动画相关更改所需的时间。
Flare的学习曲线很浅,我在使用了它以后,对建立动画的简单性感到惊讶! 你能够看到 app 在这里工做,我甚至在球上加了一个反射,给它一个更逼真的外观。
12. 运行在桌面和 Web 端的 Flutter
Flutter 团队如今已经有了能够在 web 浏览器中工做的 Flutter 原型 app ,这让全部人都感到震惊。在 Flutter Live 中,以前的绝密项目 “Hummingbird” 向世界公开。很快,你就可使用相同的代码轻松地为移动端、桌面端和 web 端建立应用程序。
13.来自 Flutter 团队和 Flutter 社区的持续支持
在过去的三周里,我一直在用 Flutter 工做,并注意到来自 Flutter 团队和社区的不少支持和鼓励;尤为是 Scott Stoll, Nilay Yener 和 Simon Lightfoot(仅举几个例子)。每一个星期三,Flutter 社区中许多比较知名的名字均可以在 Zoom at #HumpDayQandA 上看到,在那里你能够实时获取来自真人的有关 Flutter 的帮助。即使你没有任何问题,那也是一个很好的地方,由于你能够从他们回答别人的问题中学到不少。
这是我参加 #HumpDayQandA 的照片。 来自 Flutter Egypt 的创始人,谷歌开发者 Amed Abu Eldahab的推文。
使用 Flutter 的价值很明显,也颇有吸引力,由于它减轻了初创公司试图将产品发布到多个平台所面临的许多困难;特别是处理在有限的时间和预算内将软件产品推向市场的时候。
你们好,我是 Ganesh S P. ,是一名经验丰富的 Java 开发人员,具备普遍的创造性思惟,同时是一名企业家和演说家,如今正冒险进入 Flutter 的世界。你能够在 LinkedIn 或者 github 找到我,或者关注个人 twitter_。在空闲时间,我是一名在 GadgetKada 上的内容创造者。你也能够给我发邮件ganesh.sp006@gmail.com讨论任何有关科技的话题。
感谢 Nash 和 Scott Stoll.
若是发现译文存在错误或其余须要改进的地方,欢迎到 掘金翻译计划 对译文进行修改并 PR,也可得到相应奖励积分。文章开头的 本文永久连接 即为本文在 GitHub 上的 MarkDown 连接。
掘金翻译计划 是一个翻译优质互联网技术文章的社区,文章来源为 掘金 上的英文分享文章。内容覆盖 Android、iOS、前端、后端、区块链、产品、设计、人工智能等领域,想要查看更多优质译文请持续关注 掘金翻译计划、官方微博、知乎专栏。