Flutter开发初探

时间: 2020-06-19阅读: 163标签: Flutter

目前跨端开发比较热门的就是 react Native 和 Flutter 了,到底该选哪门技术似乎也快成了大前端圈的一个热门话题。对于web前端来说,基于web生态的 react Native 应该是一个更加顺畅而自然的选择;但 Flutter 让人动心的地方就是高性能和 跨端UI一致性。而 react Native 发展不太明朗和 Flutter 越发成熟的走势对比促使我从观望的心态转为加入 Flutter 。

这里主要就是记录一下学习 Flutter 的一些感想和看法:

  • 包管理
  • 布局和样式
  • json
  • 状态管理


包管理

pubspec.yaml 文件的作用类似于 npm 的 package.json ,而yaml格式也比json方便。但是不能用命令行自动安装包却让习惯了npm的我觉得麻烦。因为Flutter 安装依赖包是这么一个流程:

  1. 打开 pub.dev 网站
  2. 搜索需要的包,得到包的名称和版本;
  3. 把包名称和版本填入 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实战 作者写的一个工具库,步骤也简单:

  1. 在工程根目录下创建一个名为 "jsons" 的目录;
  2. 创建或拷贝Json文件到"jsons" 目录中 ;
  3. 运行 pub run json_model (Dart VM工程)or flutter 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 感觉很别扭不顺手的原因了。

原文 http://www.cnblogs.com/edwardloveyou/p/13194314.html


站长推荐

1.云服务推荐: 国内主流云服务商,各类云产品的最新活动,优惠券领取。地址:阿里云腾讯云华为云

2.广告联盟: 整理了目前主流的广告联盟平台,如果你有流量,可以作为参考选择适合你的平台点击进入

链接: http://www.fly63.com/article/detial/9367

深入理解Flutter多线程

Flutter默认是单线程任务处理的,如果不开启新的线程,任务默认在主线程中处理。和iOS应用很像,在Dart的线程中也存在事件循环和消息队列的概念,但在Dart中线程叫做isolate。

Flutter 实现整个App变为灰色

在Flutter中实现整个App变为灰色是非常简单的,只需要在最外层的控件上包裹ColorFiltered,用法如下:

Flutter介绍

Flutter是Google开发的新一代跨平台方案,Flutter可以实现写一份代码同时运行在iOS和Android设备上,并且提供很好的性能体验。Flutter使用Dart作为开发语言,这是一门简洁、强类型的编程语言

Flutter事件监听

在大前端的开发中,必然存在各种各样和用户交互的情况:比如手指点击、手指滑动、双击、长按等等。在Flutter中,手势有两个不同的层次:

Flutter 国际化应用实战

借助App Store与Google Play,全世界任何一个国家的使用者都可以使用我们开发的应用,不过由于应用的使用者来自不同国家,所以在应用正式上架之前需要让应用能够支持多种语言,即应用的国际化。在Flutter开发中

初识flutter

关注flutter已经好久,因为没有发正式版,所以一直也不想过早的躺浑水,但是最近无意中看到几篇文章,再加上美团和咸鱼等app也一直在做灰度测试,所以上周开始看了一下官方文档,地址:https://flutter.io/docs/get-started/install,然后在此做一下总结。

Flutter 局部路由实现

Flutter是借鉴React的开发思想实现的,在子组件的插槽上,React有this.props.children,Vue有<slot></slot>。当然Flutter也有类似的Widget,那就是Navigator,不过是以router的形式实现(像<router-view></router-view>)。

编写第一个Flutter App

打开Android Studio菜单项选择 Start a new Flutter project ,进入选项选择默认即可。进入项目把 gradle 配置镜像源,需要把 google() 和 jcenter 替换成:

如何代码获取 Flutter APP 的 FPS

众所周知,官方提供了好几个办法来让我们在开发 Flutter app 的过程中可以使用查看 fps等性能数据,如 devtools ,具体见文档 Debugging Flutter apps 、 Flutter performance profiling等。

Flutter的布局和页面组件

在这里,你必须得安装好你的开发者环境,并且运行你的第一个flutter程序了。如果你还不知道怎么开始,请参考Flutter中文网安装教程或者Flutter官网安装教程进行安装环境。

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!

文章投稿关于web前端网站点搜索站长推荐网站地图站长QQ:522607023

小程序专栏: 土味情话心理测试脑筋急转弯幽默笑话段子句子语录成语大全运营推广