在之前把环境折腾好了之后,我们开始打基础功,先把 dart 学好。
dart 这个语言还是比较奇怪的,之前根本没听过(可能是我孤陋寡闻了),据说有人问 flutter 开发者,为什么使用 dart 语言。开发者回答说:"dart 开发组就在我们隔壁,所以我们决定使用 dart" ?
不过没关系,所有的语言思想都差不多,有经验的入门还是比较简单的。开始进入正题吧~
关于后面 dart ,代码可以在 dartPad 上运行
基本概念
- 在 dart 中,所有的东西都是对象,无论是变量,数字或函数,所有的对象都是类的实例,所有的对象都从 Object 类继承
- 尽管 dart 是强类型的,但类型申明是可选的,因为 Dart 可以推断出类型,如果要明确的不适用任何类型,请使用特殊类型 dynamic
- dart 支持顶级变量的定义
- dart 没有 public,protected,private 的概念,如果函数或变量以下划线
_
开头,则这个函数或变量属于这个包私有
变量与常量
void main() { // 变量申明 var name = 'enda'; // 变量默认值为 null int lineCount; print(lineCount); // null // 可以在定义变量时指定变量的类型,通过指定变量类型,可以减少编译和运行时间 String name = 'enda'; // 常量定义 常量定义就不能修改 final firstName = 'E'; // 或者申明类型的常量定义 final int age = 20; const lastName = 'D'; }
数据类型
dart 内置了几种常见的数据类型
- numbers
- strings
- booleans
- lists (数组)
- maps
- runes (用于在字符串中表示 Unicode 字符)
- symbols
number 类型
number 类型分为 int 和 double
int 的取值范围为 -253 to 253 - 1
number 常见的操作方位包括: +
,-
,*
,/
以及位移 >>
int 类型转换
void main() { // 字符串转 int var one = int.parse('1'); assert(one == 1); // 字符串转浮点 var onePointOne = double.parse('1.1'); // int 转字符串 String oneAsString = 1.toString(); // double 转字符串 String piAsString = 3.14159.toStringAsFixed(2); }
String 类型
可以使用单引号或双引号创建字符串
字符串定义
var str1 = '单引号定义'; var str2 = "双引号定义"; var str3 = "转义 \'s ";
字符串连接
字符串连接,使用 +
操作符
// 字符串连接可以使用 + 号 var str4 = str1 +'-'+ str2;
多行字符串
使用 """
或 '''
来定义多行字符串
// 多行字符串 var str5 = '''多行字符串的定义简单吧''';
raw 字符串
使用 r
来定义
// 使用 r 修饰,表明是 raw 类型的字符串var str6 = r"In a raw string, even \n s";
Boolean 类型
bool 类型只有两个值 true
和 false
// 检查是否为空字符串var fullName = '';assert(fullName.isEmpty);// 检查是否为 0var hitPoints = 0;assert(hitPoints <= 0);// 检查是否为 nullvar unicorn;assert(unicorn == null);// 检查是否为 NaNvar iMeantToDoThis = 0 / 0;assert(iMeantToDoThis.isNaN);
List 类型
几乎每种语言中最常见的集合可能是数组或有序的对象。在 dart 中,数组是 LIST 对象
定义
var list = [1,2,3];
使用
dart 的 LIST 索引从 0 开始
list[1] = 10;list.length; // 获取长度
Maps 类型
map 将 key 和 value 关联到一起,key 必须是唯一的
定义
// 第一种定义var gifts = { // key value 'first' : 'partridge', 'second': 'turtledoves'};// 第二种定义var gifts2 = new Map();gifts2['first'] = 'partridge';
使用
// 获取值gifts['first'];// 判断 key 是否存在assert(gifts['fifth'] == null);// 获取长度gifts.length;
Runes 类型
Dart 中 runes 是 UTF-32 字符集的 string 对象。
codeUnitAt 和 codeUnit 用来获取 UTF-16 字符集的字符。使用runes 来获取 UTF-32 字符集的字符。Runes input = new Runes( '\u2665 \u{1f605} \u{1f60e} \u{1f47b} \u{1f596} \u{1f44d}');
学习资源
- 学习交流 QQ 群 (826912082)