一、常量与变量
运算符:~/ 取整
赋值运算符: ??= 无值赋值
常用属性:isNaN(是否是非数字)、isEven(是否是偶数)、isOdd(是否是奇数
常用方法:abs()(取绝对值)、round()(四舍五入)、floor()(大于它的最小整数)、ceil()(小于它的最大整数)、toInt()(变成整型)、toDouble()(变成浮点型)
二、字符串
字符串创建:可以使用三个单引号或者三个双引号创建多行字符串、使用r创建raw原始的字符串.
字符串操作:字符串也可以进行+ * == [],分别为字符串相加,乘以倍数,是否相等,取某个字符.
插值表达式:${expression}常用属性:length、isEmpty、isNotEmpty
常用方法:
三、布尔型表示:bool
四、List
List中的元素可以是有不同的类型
创建List :var list=[1,2,3];
创建不可变得List:var list = const[1,2,3]
构造创建:var list=new List();//在dart2 中已经去掉了new关键字
五、Map
创建map:var user={"name":"zoey","age":18}
创建不可变的map:var user=const {"name":"zoey","age":18}
构造创建var user=new Map();
var map1={"first":"dart",1:true};//key还可以不是字符串??
六、dynamic
可以理解为泛型
七、关系运算符
判断内容是否相同使用==,而在java中==表示的是判断两个引用是否相等,判断内容相当用的是equals
八、可选参数
可选命名参数:{param1,param2,...}
必填的参数不用写参数名,可选的参数必须要写参数名,而且可以跳过一些参数,不按顺序传,只要参数名对得上就可以了,这种方式用得比较多
可选位置参数:[param1,param2,...]
根据参数的位置,默认的进行传参,但不能跳过某个参数
可选参数必须在必选参数后面
八、构造函数
当想在对象上执行多个操作时可以使用级联操作符(..)//链式调用
私有属性使用(_)开头
实例变量: 如果在定义实例变量时设置它的值,而不是在构造函数或其他函数中赋值,则赋值操作发生在构造函数和初始化列表执行之前
如果父类没有无名无参数的默认构造函数,则子类必须手动调用一个父类构造函数。在:后面构造函数体之前指定要调用的父类构造函数
class Person {
Person.fromJson(Map data) {
print('in Person');
}
}
class Employee extends Person {
// Person 没有默认构造函数
// 所以必需指定 super.fromJson(data) 构造函数
Employee.fromJson(Map data) : super.fromJson(data) {
print('in Employee');
}
}
重定向构造函数: 有些构造函数只是调用同一个类中的另外一个构造函数
class Point {
num x;
num y;
Point(this.x, this.y); // 该类的主要构造函数
Point.alongXAxis(num x) : this(x, 0); // 调用主要构造函数
}
常量构造函数: 如果类生成从来不改变的对象,则可以把这些对象定义为编译器常量。用一个const构造函数赋值为实例变量,并将实例变量设置为final来实现
class ImmutablePoint {
final num x;
final num y;
const ImmutablePoint(this.x, this.y);
static final ImmutablePoint origin = const ImmutablePoint(0, 0);
}
工厂构造函数: 如果一个构造函数并不总是要创建新的对象(或从缓存中返回实例),可以用factory关键字修饰构造函数
class Logger {
final String name;
bool mute = false;
// _cache is library-private, thanks to the _ in front of its name.
static final Map<String, Logger> _cache = <String, Logger>{};
factory Logger(String name) {
if (_cache.containsKey(name)) {
return _cache[name];
} else {
final logger = new Logger._internal(name);
_cache[name] = logger;
return logger;
}
}
Logger._internal(this.name);
void log(String msg) {
if (!mute) {
print(msg);
}
}
}
九、类型测试操作符
操作符 描述
as Typecase(类型转换)
is 如果对象是该类型,则返回true
is! 如果对象是该类型,则返回false
assert语句只在检测模式下有效,在生产模式下无任何效果
使用assert语句检测执行条件。如果条件是false,则中断执行并抛出异常(AssertionError)
评论 (0)