- 本篇文章教你认识flutter框架特点及了解Dart的基本语法
1. flutter是什么?
- 是谷歌推出并开源的移动端应用开发框架,主打跨平台、高保真、高性能;
- 开发者可以通过Dart语言开发app,一套代码同时运行在iOS和Android平台
- flutter提供了丰富的组件、接口,开发者可以很快地为flutter添加native扩展。同时flutter还使用native引擎渲染视图,这无疑能为用户提供良好的体验。
2. flutter安装步骤:
参考官网:https://flutterchina.club/setup-macos/ 自认为没有比官方文档更详细更有说服力的文章了;
3. flutter使用步骤:
![95e66da477e89d5d60152505b7feb1ff.png](https://img-blog.csdnimg.cn/img_convert/95e66da477e89d5d60152505b7feb1ff.png)
- 初识Dart:Dart的诞生解决js存在的、在语言本质上无法改进的缺陷;
· Dart特性:
- JIT(开发)&AOT(上线 )(编译模式)
- 内存分配&垃圾回收机制
- 单线程模型
- 无需单独的声明式布局
· Dart语法
1. .dart后缀名的文件
- 有一个入口函数main
2. 流程控制:
- if和else条件必须使用布尔值
- for循环(for、forEach、for in)
- while循环(while、do while)
- break中断循环,continue跳到下一个循环
- switch和case,被比较的对象必须都是同一个类的实例,并且这个类不能重写
- assert如果布尔值条件为false,则使用assert语句中断正常执行
3. 变量的声明
- var类似于js中的var,可以接收任何类型的变量,但是变量一旦赋值类型就会确认,后期不可改变为其他类型;
- dynamic声明的变量可以赋值任意对象,可以在后期改变赋值类型;
- object是Dart所以对象的根基类,所以类型都是object的子类(包括undefined和null),所以任何类型都可以赋值给object声明的对象;
- final变量在第一次使用时被初始化;
- const声明的变量是一个编译时常量;
4. 函数
- 函数的声明
![363d8feeb134f1903662dea67561fc38.png](https://img-blog.csdnimg.cn/img_convert/363d8feeb134f1903662dea67561fc38.png)
- 如果没有显示声明返回值类型时会默认当作是dynamic处理,注意,函数返回值没有类型判断
- 对于只包含一个表达式的函数,可以使用简写语法
![e67411ca588b8e3ad4921f115a0f12fb.png](https://img-blog.csdnimg.cn/img_convert/e67411ca588b8e3ad4921f115a0f12fb.png)
- 函数作为变量使用
![6bb4ecc1dae0bad4446b61e258eb7ae0.png](https://img-blog.csdnimg.cn/img_convert/6bb4ecc1dae0bad4446b61e258eb7ae0.png)
- 函数作为参数使用
![ee3951ba8147455ed4dd2da93afd88c8.png](https://img-blog.csdnimg.cn/img_convert/ee3951ba8147455ed4dd2da93afd88c8.png)
- 可选位置参数, 使用[]说明该参数为可选的
![c5ef9a32ec92ca7dabc5a85861ee6e2b.png](https://img-blog.csdnimg.cn/img_convert/c5ef9a32ec92ca7dabc5a85861ee6e2b.png)
- 可选的命名参数
![0c76e0284c53740b0ddde7504672a3f0.png](https://img-blog.csdnimg.cn/img_convert/0c76e0284c53740b0ddde7504672a3f0.png)
5. 类和对象
- 类的定义使用class关键字
- 类首字母必须大写
- 使用new关键字和构造函数来创建对象
> 类的继承:
- 使用extends创建子类,super引用父类,子类可以重写实力方法、getter和setter
- 可以使用@override关键字,子类可以重写实例的方法,getters和setters
- 可重写操作符
- 当用户调用你定义的类中不存在的属性与方法时,可以做出一些响应,通过重写onSuchMethod()
![236e8dfda2c9f236be0eb357847c5c31.png](https://img-blog.csdnimg.cn/img_convert/236e8dfda2c9f236be0eb357847c5c31.png)
6. 异常处理
- 异常是Error和Exception的类型
- Exception主要是程序本身可以处理的异常,比如:IOException
- Error是程序无法处理的错误,表示运行应用程序较严重问题
- Dart2是不检测异常是否声明的,也就是说方法或函数不需要声明要抛出那些异常
![7264c6d14e1b19c84562c6902c75273c.png](https://img-blog.csdnimg.cn/img_convert/7264c6d14e1b19c84562c6902c75273c.png)