「 Dart 」一文了解 Dart 基础知识

本文介绍了 Dart 的环境搭建以及 Dart 语法,包括变量与常量、数据类型、函数、操作符、类、泛型等等。

安装

  1. Dart for Windows (gekorm.com) 下载安装包安装 Dart SDK。

  2. 在 VSCode 中安装 Dart 和 Code Runner 插件。

  3. 新建一个 .dart 文件,输出 “Hello dart!” :

void main() {
  print('Hello dart!');
} 

Run Code:

Hello dart! 

变量和常量

变量

在Dart中变量的声明有三个关键字:var 、dynamic 和 Object 。

像 JS,Dart 中的变量可以不预先定义变量类型,也可以在变量前加类型来声明变量:

var a = 114514;
String str = 'this is string'; 

使用这两种方法声明变量之后,后续不能够更改变量类型。

var a = 114514;
a = '12345'; // 报错 

使用dynamic 来声明变量可以使得在编译阶段不检查类型,这与 JavaScript 一样:

dynamic str = 'this is string'; 
str = 114514;
print(str); 

常量

使用 constfinal 定义。

const PI = 3.14; 

const 需要是编译时常量,而final不需要:

const constDateTime = DateTime.now(); // 报错
final finalDateTime = DateTime.now(); 

数据类型

数值

数值类型 num 包含 intdouble 两个子类。

String

Dart 字符串是 UTF-16 编码的字符序列。

可以在字符串中通过${expression}语法插入表达式。

可以通过 == 比较字符串。

bool

ifassert表达式里面,它们的值必须是bool类型。默认值是null而非false

List

List类似数组,默认接收的类型是dynamic,可以向其中添加任意对象:

List list = [1, 2, 3]; 

常用的属性和方法:

常用属性:
    length          长度
    reversed        翻转,结合 toList()
    isEmpty         是否为空
    isNotEmpty      是否不为空
常用方法:  
    add(value)         增加	
    addAll(list)      拼接数组	
    indexOf(value)     查找,传入 value 返回 index,找不到返回 -1
    remove(value)      删除,传入 value	
    removeAt(index)    删除,传入索引值	
    fillRange(startIndex,endIndex,value)   修改,[参数1, 参数2)的数据修改为参数3  
    insert(index,value);            指定位置插入    
    insertAll(index,list)           指定位置插入List
    toList()    其他类型转换成List  
    join(分隔符)      List 转换成 String
    split(分隔符)     String 转化成 List
    forEach   
    map
    where
    any
    every
    
这些方法在 Set 和 Map 中大多也可以使用 

Set

Set 表示容器中的对象唯一,按照添加的先后顺序排序。Set 是没有顺序且去重后的集合,所以没有索引值。

Set set = {'a', 'b', 'a', 'c'};
print(set); // {a, b, c}
print(set.toList()); // [a, b, c] 

Map

Map 按照添加的先后顺序排序。

Map map = {'foo': 'apple', 'bar': 'banana'};
print(map); // {foo: apple, bar: banana}
print(map.keys.toList()); // [foo, bar]
print(map.values.toList()); // [apple, banana]
map.addAll({'baz':'pear'});
map.remove("baz");
print(map.containsValue("apple")); // true 

循环数据的方法

forEachmapwhereanyevery

List:
	for、for ... in:略
	forEach:
		List list=["apple", "banana", "pear"];
		list.forEach((value){
			print(value); // apple banana pear
		})
	map:
		List list=["apple", "banana", "pear"];
		List newList = list.map((value){
			return value + "1";
		}).toList();
		print(newList); // [apple1, banana1, pear1]
	where:
		List list = [1, 2, 3, 4, 5];
		List newList = list.where((value){
			return value > 3;
		}).toList();
		print(newList); // [4, 5]
	any:只要 value 中有满足条件的就返回 true
		bool b = list.any((value){
			return value > 3;
		});
		print(b); // true
	every:每一个 value 都要满足条件才返回 true
Set:同 List
Map:
	forEach:
		Map person = {
			"name": "Jack",
			"age": 20,
		};
		person.forEach((key, value){
			print("$key - $value"); // name - Jack age - 20
		}); 

函数

像JS,函数也是对象,类型为Function。因此函数也可以作为变量的值当函数的参数或者返回值。

支持使用=>缩写语法,不同于 ES6 的箭头函数,这里箭头只能指向函数的返回值:

String hello(var name) => 'hello $name';
// 等价于
String hello(var name){
    return 'hello $name';
} 

若没有返回值,默认为null

入口函数

入口函数即 main 函数,如果没有返回值可以省略 void。

可选参数

  1. 可选命名参数

命名参数要用花括号括起来,命名参数可以有默认值,不指定默认值则为 null

String add({var a, var b = 1}) => '$a' + '$b';
var a = add(b: 2);
print(a); // null2 
  1. 可选位置参数

在方括号内可以设置非必填参数,默认值可加可不加,默认值为 null

String add(var a, [var b = 1]) => '$a' + '$b';
var a = add(1);
print(a); // 11 

匿名函数

即省略函数名的函数:

var func = (a, b) => a + b;
print(func(1, 
  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值