Flutter介绍
Flutter与主流框架对比
- Cordova:混合式开发框架Hybrid App,个人认为完胜Cordova,因为Cordova还是基于网页技术进行包装的,里面还是HTML+CSS,利用JavaScript进行桥接的方式进行开发,开发出来的还是网页,从体验和流畅度不如原生。
- RN(React Native):生成原生App,但以View为基础潜入,所以效率上RN比Cordova高很多,但是RN的渲染机制是基于前端框架的考虑,复杂的UI渲染是依赖多个View叠加的,例如:渲染listView列表,每一个小框架都是一个单独view,然后相互结合叠加,此时如果滑动刷新会有多个对象进行渲染,所以页面会导致变慢,但RN效率还是可观的,可以达到60帧每秒,很难在往上了(瓶颈)。
- Flutter:在渲染技术上(吸收前两者教训后),选择了自己实现GDI,由于有更好的可控性,使用了谷歌的Dart语言,避免了RN那种通过桥接器与JavaScript通信导致效率低下的问题,所以在性能比RN更高一筹,有经验开发者可以打开Android开发者选项中的显示边界布局,可以看到Flutter是整体的布局,而RN是View层层嵌套组成,可以达到120帧每秒。
生态环境
Google公司出品和推广,并在中国也有推广中心
开发环境搭建
小伙伴要记得点击同意下载文件,下载按提示安装后,启动终端输入java,如果出现一些提示,证明安装成功
第三步:安装完成后,mac打开.bash_profile文件,将以下代码复制到文件中:
export PUB_HOSTED_URL=https://pub.flutter-io.cnexport FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cnexport PATH=PATH_TO_FLUTTER_GIT_DIRECTORY/flutter/bin:$PATH
备注:第三行PATH_TO_FLUTTER_GIT_DIRECTORY是Flutter SDK的路径
第四步:终端运行flutter doctor(会给出提示)
浏览器输入developer.android.com
下载Android Studio按照提示安装
运行Android Studio 右下角选择configure安装flutter插件
最后运行flutter doctor出现如下所示,就证明环境搭建好了
来测试一下:
在VScode中新建项目,运动终端输入flutter create demo创建flutter项目,并在VScode运行该项目,点击右下角No Device,打开之前安装过的虚拟机 (demo是项目名字)
接下来终端进入项目目录,输入flutter run运行项目,就可以在虚拟机看到刚拉下来的初始化项目了
如果做到这一步,那说明我们基本的开发环境已经构建完成了。
第一个HelloWorld
StatefullWidget和StatelessWidget的区别:
StatefullWidget:动态组件,如进度条组件
StatelessWidget:静态组件,如文本框
VScode控制虚拟机快捷键:
R键:点击后热加载,直接查看预览效果
P键:在虚拟机中显示布局网格,工作中经常使用
O键:切换Android和IOS的预览模式
Q键:退出调试预览模式
也可以使用VScode中 debug热更新模式(耗性能)
常用组件讲解
TextWidget文本组件
textAlign:文本对齐属性
maxLines:文本显示的最大行数
overflow:控制文本的溢出效果
style属性的用法
Container容器组件
创建容器组件: 在body的child中写入 Container即可
padding 内边距属性:
EdgeInsets.all(): 统一设置
EdgeInsets.fromLTRB(val1, val2, val3, val4)
Alignment属性与一些样式属性的使用,见下图
注意:所有的属性都是组件Widget,万物皆组件。
Image图片组件
Fit属性(根据图片父容器控制图片拉伸 挤压 裁切)
图片混合模式( 需要2个值 )
repeat图片重复充满容器
...
ListView组件
ListTile使用: 形成列表组件中的一列,相当于列表瓦片,要一层层装饰起来,不仅可以在ListView使用,还可以用在其它组件
leading / title:最开始的位置 / 内容
横向列表的使用
scrollDirection基本语法
接下来直接在主页面中引入ListView即可:
动态列表的使用
GridView网格列表使用
好了,混子前端也知道总结的很糙,但跟着流程走下来,你一定会入门Flutter
这里如果连官网API都没读过的话建议移步到官网看一下
最后老规矩,欢迎点赞和纠错,祝大家工作愉快!