内容简介:目前跨端开发比较热门的就是这里主要就是记录一下学习
目前跨端开发比较热门的就是 React Native
和 Flutter
了,到底该选哪门技术似乎也快成了大前端圈的一个热门话题。对于web前端来说,基于web生态的 React Native
应该是一个更加顺畅而自然的选择;但 Flutter
让人动心的地方就是高性能和 跨端UI一致性。而 React Native
发展不太明朗和 Flutter
越发成熟的走势对比促使我从观望的心态转为加入 Flutter
。
这里主要就是记录一下学习 Flutter
的一些感想和看法:
- 包管理
- 布局和样式
- json
- 状态管理
包管理
pubspec.yaml
文件的作用类似于 npm
的 package.json
,而yaml格式也比json方便。但是不能用命令行自动安装包却让习惯了npm的我觉得麻烦。因为Flutter 安装依赖包是这么一个流程:
- 打开 pub.dev 网站;
- 搜索需要的包,得到包的名称和版本;
-
把包名称和版本填入
pubspec.yaml
,最后才开始下载包。
我觉得应该直接命令行安装包,让它帮我们下载,名称版本自动写入 pubspec.yaml
。如果没有指定版本就是默认下载最新版本,因为很多时候我们并不想知道版本号,给我个能用的最新的版本号就ok了。
布局和样式
就和很多人想的一样,为什么不使用 jsx 或者 xml 格式进行布局,因为基于代码的方式看起来太不直观了,之所以这样听说主要是能更方便的和 Dart
的hot reload特性配合使用,代码改动能立刻反映布局变化。但我还是期待有适配转化 DSL
的框架出现。
Flutter
一切都是widget,但是连很多属性都当成widget 这就让人有些看不明白了,比如 Center
, Align
, Padding
,为什么不把常用的样式属性都加入到布局组件里面呢?这导致出现了这么一种情况:嵌套严重,一个很简单的功能需要层层嵌套才能实现,而且样式也不能方便的复用。目前比较合理的建议就是适当抽取出子组件减少嵌套。
Json
Dart
作为强类型的语言,一切皆是对象。 Dart
要方便操作 json
就得把 json
转化为对象,这就意味着每用到一个 json
,就需要定义一个对应的类,这也是强类型语言的通病了。这绝对让人很怀念 js/ts 这种对json操作非常自然顺畅的弱类型/函数式语言。当然也不是没有妥协的解决方案,比较方便的就是 json_model
, Flutter实战
作者写的一个 工具 库,步骤也简单:
- 在工程根目录下创建一个名为 "jsons" 的目录;
- 创建或拷贝Json文件到"jsons" 目录中 ;
-
运行
pub run json_model
(Dart VM工程)orflutter packages pub run json_model
(Flutter中) 命令生成Dart model类,生成的文件默认在"lib/models"目录下
状态管理
Flutter
使用 initState
, setState
方法设置widget状态,原理类似 React
。当然这只是widget内部控制状态用的,跨组件通信还是需要其他方案的。官方推荐是使用 Provider
,使用下来中规中矩吧,当然还可以使用大名鼎鼎的 Redux
以及 mbox
。不过 Redux
本身就以过多的样板代码而出名,写 React
的时候就不喜欢用, hooks
出来后就果断就放弃 Redux
了。 hooks
才是真香啊, Flutter
什么时候才支持类似的函数式状态管理方案呢?
总结
说了这么多,本质就是为什么 Flutter
不向以 React
为代表的 web 生态看齐?更大的原因是 Flutter
的很多理念和开发模式其实远远落后于 React 。这也是为什么习惯 react/vue
的 web前端 对 于Flutter
感觉很别扭不顺手的原因了。
以上所述就是小编给大家介绍的《Flutter开发初探》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 小程序云开发初探
- 初探在 WSL 中设置 Vim 前端开发环境
- 使用MyEclipse开发Java EE应用:EJB项目开发初探(下)
- 使用MyEclipse开发Java EE应用:EJB项目开发初探(上)
- 数据可视化初探-从零开始开发一个渲染引擎概述
- iOS独立开发者使用Bmob第三方后台服务初探
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。