Flutter -- 12.枚举&泛型
2021-11-17 本文已影响0人
MissStitch丶
1.枚举
- 枚举的index从0开始,依次递增
- 枚举不能赋值
- 不能添加方法
/*
* 1.枚举的index从0开始,依次递增
* 2.枚举不能赋值
* 3.不能添加方法
* */
enum Direction {
top,
left,
bottom,
right
}
testEnum() {
print(Direction.top.index); //0
print(Direction.left.index); //1
print(Direction.bottom.index); //2
print(Direction.right.index); //3
}
2.泛型
- 对不特定数据类型的支持,比如网络请求
dio
返回数据,PopupMenuItem
中的点击回调数据 - 一般为了给类添加泛型变量或者指定方法参数类型
1.类的泛型
- 格式为:
class Person<T>{}
testGeneric() {
Generic generic = Generic<int>(data: 10);
generic.showData(); //10
}
class Generic<T>{
T? data;
Generic({this.data});
showData() {
print(data);
}
}
2.方法的泛型
testGeneric() {
//创建时指定了类型
// Generic generic = Generic<int>();
// generic.add('1', 2); //2 //加不进去'1', 因为'1'不是int类型
// generic.add(3, 4); //2, 3, 4 //加进去了3,因为R与T是一个类型
// generic.add('1', '2'); //由于上面指定了为int, 这里不能传入String,会报错
//创建时不知道类型
Generic generic1 = Generic();
generic1.add('1', 2); //1, 2
generic1.add(3, 4); // 1, 2, 3, 4
//当类定义时,没有指定泛型时,element is T这个会为true,
}
class Generic<T>{
final List<T> list = [];
add<R>(R element, T value) {
if (element is T) {
list.add(element);
}
list.add(value);
list.forEach(print);
}
}