Flutter之dart入门-数据类型和基本语法

300 阅读3分钟

前言

Flutter是谷歌的移动UI框架,可以快速在IOS和Android上构建高质量的原生用户界面。Flutter可以和现有代码一起工作。在全世界,Flutter正在被越来越多的开发者和组织使用,并且Flutter是完全免费、开源的。它的的底层是用Dart写的。

版本

1.x是稳定版

2.x是新版,2018年发布

通过Dart 2,我们大大加强和简化了类型系统,清理了语法,并从头开始重建了大量开发人员工具链,使移动和Web开发更加愉快和高效。

(以后用Dart2来进行开发)

第一个Dart程序

Image.png

数据类型

变量
  • 使用var来声明,有不同类型的值。
    •  var a = 10; print(a);
    •  注:一个变量不能重复声明
  • 未初始化时,默认的值为null
    • var a; print(a); // null
  • final 不能重复赋值
    • final b = 30;
  • ?? 非空判断

注意

  • var是泛型,不规定数据类型,对数据类型进行自动识别

Image.png

Image.png

    • 你使用var的时候,如果你只声明,不赋值,那么它所能够拾别的数据类型是dynamic,也就是泛型
    • 如果你声明+赋值,那么它会自动对赋值的数据进行数据类型的拾别,比如第一张图,a的类型就是String,而第二张图,a的类型就是dynamic泛型
  • final是只赋值一次,针对的是基本类型,如果是map键值对或者List,里面的属性后面是可以修改的,但是const是什么情况都不可以修改的

Image.png

Image.png

  • const 定义的值一旦声明就不能修改
  • final和const两个都是声明和赋值要同时进行
  • const后面的值不能是运行后的结果,也就是说函数的运行结果不能用const接收,而final是可以的
  • var、final、const  三者都不规定数据类型
  • final的使用场景
    • 修视变量、修饰参数

Image.png

Image.png

Image.png

常量

  • const声明常量
  • 使用const声明的必须是编译器的常量。
    • 注:final 赋值后可以再修改,const不能修改

数据类型

  • 数值型  Number
  • 字符串 String
  • 布尔型 Boolean
  • 列表 List
  • 键值对  Map
  • Runes、Synbols(不常用)

数值

  • num 分为整形 int, 浮点型 double, 二者都继承自num
  • 运算符: + - * / ~/ %
  • 常用属性: isNaN、isEven、isOdd 等
  • 常用方法: abs()、round()、floor() // 绝对值,四舍五入、取整...

注意

  • ~/   表示先除后取整

Image.png

字符串

  • 使用单引号,双引号创建
  • 使用三个引号 或者 三个双引号 创建多行字符串
  • 使用r创建原始raw字符串
  • 插值表达式 ${ } 添加变量
  • 运算符: +、*、== 、[]
  • 字符串方法: replaceAll

Image.png

注意

  • 三个单引号可以支持多行
  • 单个变量花括号要省略

布尔值

  • bool 的结果是 true/false
  • 与或非:&& || !

List(数组)

  • 创建List: List list = [1, 2, 3, "hello", true];
  • 创建不可变的List List list2 = const[1,2,3];
  • 创建固定类型的List List list3 = [1, 2, 3];
  • 构造创建: List list4 = new List();

Image.png

List常用操作

  • []取值,length获取长度
  • add(),相当于push;insert()插入指定位置,第一项是索引,第二项是value
  • remove(),clear()
  • forEach()
  • indexOf(),lastIndexOf()...

Map(键值对)

  • 创建 Map: Map language = { "first": "dart", "second": "java" };
  • 创建不可变的 Map: Map language = const { "first": "dart", "second": "java" };
  • 构造创建: Map language = new Map();

Image.png

注意:

  • Map的key可以是不同的数据类型

常用操作

  • [], length
  • isEmpty, isNotEmpty
  • keys, values
  • forEach()

Image.png

  • remove(key)
  • containsKey(key) // 是否包含属性名
  • containsValue(val) // 是否包含属性值

流程控制:选择结构、循环结构

  • if判断 / 三元运算符
  • for循环
  • while, do while
  • continue, break
  • switch ... case
  • break, continue