我对Flutter和Dart的体验

作为一名Android开发人员,我一直对混合移动应用程序开发世界着迷。 用一个代码库为Android和iOS开发应用程序就像梦想成真! 您不必处理维护两个不同项目的所有麻烦,也不需要学习如何为Android和iOS开发应用程序,这将花费您很多时间。

这就是为什么我一直是此类框架的早期采用者的原因。 我已经接触过Ionic,但是由于我来自Android,并且没有网络开发的实际经验,因此学习并让我自己有兴趣在它上面投入实际时间有点困难。 这对我来说是令人失望的经历,并且由于几乎所有这些解决方案都是基于Web的,所以我失去了兴趣。 至少在Google宣布Flutter之前。

Flutter与其他混合应用程序开发方法不同,这主要是因为它使用Dart

  • Dart真的很容易学习。 感觉非常熟悉,语法简洁明了。
  • Dart被“提前”(AOT)编译成用于多个平台的本机代码,从而无需JavaScript桥(例如Ionic或React Native),并提高了性能。
  • Hot Reload功能使您可以快速轻松地试验代码并查看更改的效果,而无需等待应用程序生成,从而提高了工作效率。
  • 一切都是小部件,每个小部件都是UI一部分的不可变声明。 与其他将视图,布局和其他属性分开的框架不同。
  • 它带有一组适用于Android和iOS的小部件,以匹配本机小部件的外观和感觉,可以轻松地对其进行调整和自定义。

这些就是一些使我立即对Flutter感兴趣的原因。 而且,由于在Coletiv,我们总是被鼓励学习和尝试新事物,所以我很快就对Flutter进行了实验。

Flutter可能是我们使用一个代码库开发合适的应用程序所需的解决方案,这主要是因为它使用了Dart。

这个想法很简单。 在葡萄牙,有一个应用程序可以为您的停车会议付费,但是这些会议最多只能持续2个小时。 这意味着,每次您需要将车停放超过2个小时时,都必须手动续订泊车时段。 真烦人!!! 此外,如果您忘记这样做,您会在挡风玻璃上受到罚款。

因此我们做到了:“为什么不构建一个可以自动更新停车会话的应用程序,直到您指定停车时间?”,Flutter似乎是完美的解决方案,至少在纸面上。

我们希望该应用程序可同时在Android和iOS上使用,并且我们希望尽快完成,因为这只是一个实验。

在不到一周的时间里,我们开发了一个功能性应用程序,其最低限度允许用户设置停车会话(请查看我们的Github)。 但是,一旦我们尝试在后台自动更新这些会话,Flutter便开始揭示一些缺少的功能,并迅速提醒我,现在才为他的第一个1.0版本做好准备。

在不到一周的时间内,我们开发了一个功能性应用程序,其最低限度允许用户设置停车会话。 这显示了Flutter可以带来多高的生产力。

没有简单的方法可以在Flutter应用程序的后台执行Dart代码(请检查此问题)。 可以使用平台通道来完成此操作,但是这需要您为Android和iOS进行平台特定的代码编写,而这违背了在项目中使用Flutter的目的(如果您想进一步了解这一点,我建议您阅读本文)。

Flutter团队开发了一个可用于Android的插件,即Android Alarm Manager插件。 它允许使用“警报管理器”在Android上计划和运行后台代码,但即使这样也存在类似问题。 在iOS方面,至少就我所知,还没有针对此问题的解决方案。

我们不能期望Flutter团队在一年之内就能完成Android和iOS十年的发展。

我认为,像在后台运行代码之类的功能非常重要,使用Flutter SDK的开发人员应该可以轻松访问。 相反,至少在这一点上,Flutter团队为我们提供了自行完成此任务的工具,并希望社区提供有助于实现后台代码执行的插件。

你知道吗? 我们不能为此判断! 我们可能会认为,由于Google支持Flutter,他们不得不做得更好,但实际上Flutter团队规模并不大,我们不能指望他们在一年之内就能做到Android和iOS花费了十年的时间。 而且由于Flutter和Dart是完全开源的,因此让我们感到高兴,并尽一切努力使这些出色的项目变得更好。

该项目的源代码可以在这里找到。


希望我的经验对您有所帮助。 如果您有兴趣试用Flutter,可以在这里开始。 另外,请不要忘记阅读Dart语言导览,以帮助您了解Dart的工作原理。

非常感谢您的阅读,如果您喜欢本文,请确保单击that按钮。 对我们来说意义重大! 同样不要忘了在 Codium Twitter LinkedIn 关注 Coletiv 因为我们不断发布有关多种技术的越来越有趣的文章。

如果您不知道,Coletiv是来自Porto的软件开发工作室,专门从事Elixir,iOS和Android应用程序开发。 但是我们做各种各样的事情。 我们会为您精心设计UX / UI设计,Web开发,甚至是安全性。

那么, 让我们一起做点什么?