dart : https://dart.dev/guides
mac安装:
# 安装
$ brew tap dart-lang/dart
$ brew install dart // 安装稳定版
$ brew install dart --devel // 安装dev版
# 更新
$ brew update
$ brew upgrade dart
$ brew cleanup dart
# 查看安装路径等信息
$ brew info dart
windows:
cchoco install dart-sdk -version <版本号>
linux系统:
# 安装
$ sudo apt-get update
$ sudo apt-get install apt-transport-https
$ sudo sh -c 'curl https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -'
$ sudo sh -c 'curl https://storage.googleapis.com/download.dartlang.org/linux/debian/dart_stable.list > /etc/apt/sources.list.d/dart_stable.list'
$ sudo apt-get update
$ sudo apt-get install dart
# 如果需要dev版,则使用以下指令替换上面的第四步
$ sudo sh -c 'curl https://storage.googleapis.com/download.dartlang.org/linux/debian/dart_unstable.list > /etc/apt/sources.list.d/dart_unstable.list'
# 设置环境变量
$ export PATH=/usr/lib/dart/bin:$PATH
语法:
常量定义:
const:
final:可以不赋值,惰性初始化,运行时第一次使用前初始化
// const time = new DateTime.now(); 报错
// final time = new DateTime.now();
变量:
var // 不要和类型一起写,自动推算类型
常用数据类型:
Numbers(数值):
int
double // 浮点类型
Strings(字符串):
String
Booleans(布尔):
bool: true / false;
List(数组)
Maps(字典)
字符串拼接:
String str1 = 'asd';
String str2 = 'qwe';
print("$str1 $str2"); 或+号拼接;
算术运算符:
print(a+b); // 加
print(a-b); // 减
print(a*b); // 乘
print(a/b); // 除
print(a%b); // 取余
print(a~/b); // 取整
关系运算符:
print(a==b); // 判断是否相等
print(a!=b); // 判断是否不等
print(a>b); // 判断是否大于
print(a<b); // 判断是否小于
print(a>=b); // 判断是否大于等于
print(a<=b); // 判断是否小于等于
逻辑运算符:
! // 取反
&& // 并且
|| // 或者
赋值运算符:
基本运算符:
= // 赋值
??= // b??=23; 表示如果b为空,b=23;
复合赋值运算符:
+=
-=
*=
/=
%=
~/=
三目运算符:
?:
??运算符:
?? // var a; var b= a ?? 12; a 为空 b = 12
类型转换:
int.parse(''); // string转换为int
double.parse(''); // string转换为double
.toString(); // 转换为string
.isEmpty // string判断为空
.isNaN // num判断为NAN
++ -- : 自增 自减 1
赋值运算中: b = a++; b = ++a
++ -- 写在前边,先运算再赋值
++ -- 写在后边,先赋值再运算;
循环:
for(){}
while(){} // 区别:先判断再执行
do{}while() // 区别:先执行再判断
switch(){}
// continue: 跳过当前循环继续循环; break:跳出循环结束,只能向外跳出一层
List:
常用属性:
length:长度;
reversed:翻转;
isEmpty:是否为空;
isNotEmpty:是否不为空;
常用方法:
add:增加
addAll:拼接数组
indexOf:查找,传入具体值,查找不到返回-1,查找到返回索引
remove:删除,传入具体值
removeAt:删除,传入索引值
fillRange(start,end,value):修改
insert(index,value):指定位置插入
insertAll(index,list):指定位置插入list
.toList():其他类型转为List
.join('以什么分割'):list转为字符串
.split('以什么切割'):字符串转为list
.forEach(){}:循环
new:
new Set(); // {} 去重
new List(); // []
new Map(); // {}
常用属性:
keys:获取所有key
values:获取所有value;
isEmpty:是否为空;
isNotEmpty:是否不为空;
常用方法:
remove(key):删除指定key的数据;
addAll({......}):合并映射,增加属性;
containsValue:查看映射的值,true / false;
forEach((key,value){});
map
where: 满足条件返回
any:只要集合里的元素有满足条件的返回true
every:集合里每个元素都满足条件返回true
方法:
返回类型 方法名称(参数......){
方法
return 返回值;
}
对象操作符:
?: 条件运算
as: 类型转换
is: 类型判断
..: 级联操作
类:
class 类名{}
extends 继承
with 多类继承 类,间隔 // class a with b,c{}
修饰符:使用 _ 把一个属性或方法定义为私有,须单独写个文件内部生效 // int _num (double num){ return num };
get area{} / set area{}: 计算属性
static void functionName (){} // 静态方法,不可访问非静态属性及方法
void functionName (){} // 非静态方法,可以访问静态属性及方法
抽象类:定义标准,不能被实例化,只有继承它的子类可以; // 例如接口封装
abstract class 类名 {};
abstract class DB{};
class Api implements DB{};