flutter 移动应用开发实战

此文章来自 B站视频教程 传送门

介绍

  • Dart 致力于打造漂亮且高质量的跨屏体验

    • 针对客户端开发优化
    • 丰富而强大的框架
    • 令人愉悦且灵活的工具
  • 安装

    • 一般跟随框架安装,比如Flutter
    • 可通过DartPad 在线编写和运行代码

重要概念

  • 一切变量都是对象,包括数字,函数和 null
  • 对象是类的实例,所有类都继承 Object
  • 强类型但支持类型推断
  • 如果不想指定具体类型可以使用 dynamic
  • 支持泛型,比如 List 或 List
  • 支持顶层函数、类方法、实例方法和嵌套函数
  • 支持顶层变量、类变量、实例变量和局部变量

变量

  • 变量类型可自动推断、或者显示指定
  • 未初始化的变量其值都为null、包括数字
  • 如果某个变量的值在定义后不会在改变、那就声明为 final 或 const
  • final 和 const变量只能赋值一次、但const 变量的值需要在编译时就能确认
  • final 和 const变量必须在其定义时就完成初始化(如果不初始化那他们的值就只能是null)
  • const 除了用来声明变量、也可以用来声明值、也就是常量
  • 初始化 const 变量时可以省去值前面的 const、因为 const变量的值肯定的是一个常量
  • 常值用来防止内容变化、常量用来避免变量寻址、final 变量用来提升代码安全性

内置类型

  • 数字(num)

    • num 是 int 和 double的基类
    • int 为 64位整数、 double 为64为浮点数
  • 字符串(String)

    • 字符串是UTF-16码元(Code Unit)序列、每个 Unicode 字符映射为1个或2个码元
    • 字符串字面量可以使用单引号或双引号
    • 使用 ${expression} 来插入变量值、如果 expression 是个合法的标识符、则可以省去 {}
    • 使用毗连字符串常量或者 + 操作符来拼接字符串
    • 使用 r 前缀来声明原始字符串、其内不作字符转义
    • 只要内部插入的表达式为编译时常量、则字符串字面量为编译时常量
  • 布尔(bool)

    • 只有两个值 true 和 false,都是编译时常量
    • 在需要布尔类型的地方必须使用布尔值
  • 列表(List)

    • 列表就是其他语言的数组,用来表示对象序列
    • 列表索引序号从 0 开始,直到 list.length - 1
    • 在列表字面量前使用 const 来声明常值
    • 使用 [] 操作符来操作列表元素
  • 哈希表(Map)

    • 哈希表用来关联键和值、键和值可以是任意类型的对象、但键必须唯一
    • 使用 [] 操作符来操作哈希表的值
    • 在哈希表字面量前使用 const 来声明常值
  • 符文(Rune)

    • Rune 是由 UTF-32 码点(Code Point)组成的字符串,一个Rune字符对应一个 Unicode 字符
    • 码点一般使用 4个十六进制字符 uXXXX 来表示,如果超过 4个,则需要使用 {} 将十六进制字符括起来
    • 字符串和 Rune 直接可互相转换

函数

  • 函数也是一种对象,类型为Function
  • 函数参数和返回值类型可以省略,以支持动态类型
  • 如果函数体只包含一个表达式,可使用箭头语法来定义
  • 可选参数

    • 可选命名参数使用{}来指定,并可使用注解 @required 标注为必须
    • 可选位置参数使用 [] 指定
    • 可选参数默认值使用 = 来指定,如为指定则默认值为null
  • 每个程序都应有个位于顶层的 main函数,它是程序入口
  • 函数可作为函数参数值,也可赋值给变量
  • 可定义匿名函数,一般作为函数参数值或赋值给变量
  • 变量作用域静态确定,也就是同代码布局,每对大括号定义一个作用域,嵌套大括号定义嵌套作用域
  • 闭包是一个能访问其外层作用域变量的函数,即便该函数在其他地方被调用
  • 如果函数没有指定返回值,则默认返回null,如果确实不想返回任何值,则可指定返回类型为void

后续敬请期待。。。

你可能感兴趣的:(flutter)