Farlanki.

使用 Flutter 构建第一个应用后的一点感想

字数统计: 807阅读时长: 2 min
2019/02/09 Share

最近我偶然接触到了 Flutter 。Flutter 能让移动应用开发者真正做到编写一次代码,而在 iOS 、 Android 两个平台上运行,并且能获得不亚于原生应用的性能。今天的移动应用开发已经越来越注重效率了,所以个人感觉这种技术的前景还是很好的。下面就来说说开发了第一个应用之后的一点看法。

关于构建UI

hot reload

开发 flutter 应用时,可以使用 hot reload 。 hot reload 能让我们在不重新编译的前提下看到修改代码后的效果,不得不说这样子的效率是极高的。

控件

flutter 提供了很多种类的UI控件供开发者使用。基本上常见的UI控件都已经帮我们封装好了。如果我们的应用不包含一些很特殊的UI,那么构建起这些应用的UI是十分快的。另外, flutter 分别为 Android 和 iOS 提供了两个 UI 控件库,分别为 Material 和 cupertino ,这两个库可以让开发者做出和原生应用无异的 UI 效果,十分实用。

让人不爽的代码嵌套

由于 Flutter 应用提供的 UI 控件灵活性很大,widget(也就是UI控件)能做的事情很多,UI布局也是通过使用不同的widget完成的,所以在构建UI时会出现一大堆负责代码布局的widget层层嵌套,最后有一个widget负责展示数据的情况。

关于Dart语言

一点吐槽

开发 Flutter 应用使用的是 Dart 语言。dart 号称是支持函数式编程的,但是在实际使用的时候,我没有找到关于函数柯里化的相关语法,要手动写一层封装,不太爽。

关于应用性能

Flutter 使用的是 Skia 渲染引擎,Skia 渲染引擎是谷歌开发的使用 C++ 实现的一个渲染引擎,性能强劲。在实际开发中,的确感觉到对于小型应用,Flutter 应用的动画效果和原生应用的动画是没有区别的

代码组织方式

原生 iOS 应用的主流架构是 MVC 或者 MVVM,对于 Flutter 应用来说,选择就更加的多。除了 iOS 开发者熟悉的 MVC 和 MVVM,官方文档中还有展示了许多不同的架构,例如 BLoC、Redux等。部分代码组织方式借用了一些前端的思想。另外,你还可以使用最简单的 setState 。选择之多,让人眼花缭乱。在开始开发 Flutter 应用之前,选择一个合适自己的架构是很重要的。

多线程

Flutter 中对对 dart 语言中的 isolate 机制做了一个简单的封装,称之为 compute function。但是 compute function 目前还不支持运行异步方法。同时,dart 语言的自带 isolate 相关方法写起来比较麻烦,和iOS 中常用的 dispatch 方法的使用体验相差很远。

第三方库的使用

在 Flutter 中使用第三方库十分简单,只需要在配置文件中添加一行,在需要使用库的文件中引用一下。

CATALOG
  1. 1. 关于构建UI
    1. 1.1. hot reload
    2. 1.2. 控件
    3. 1.3. 让人不爽的代码嵌套
  2. 2. 关于Dart语言
    1. 2.1. 一点吐槽
  3. 3. 关于应用性能
  4. 4. 代码组织方式
  5. 5. 多线程
  6. 6. 第三方库的使用