行业知识
Flutter学习7 - Dart 泛型
2026-10-25 22:18:00
来源:互联网转载
1、泛型类
//泛型类class Cache { final Map _cache = {}; void saveData(String key, T value) { _cache[key] = value; } //泛型方法 T? getData(String key) { return _cache[key]; }} void main() { Cache cache1 = Cache(); const String name1 = "Leon"; cache1.saveData(name1, 18); print("name: $name1 age: ${cache1.getData(name1)}"); //name: leon age: 18 Cache cache2 = Cache(); const String name2 = "Alice"; cache2.saveData(name2, "woman"); print("name: $name2 sex: ${cache2.getData(name2)}"); //name: Alice sex: woman} 2、泛型约束
class Person { String? name; int? age; Person(this.name, this.age); void display() { print("name: $name age: $age"); }} class Student extends Person { String? _school; Student(name, age, this._school) : super(name, age); @override void display() { print("name: $name age: $age school: $_school"); }} //泛型约束:T 只能是 Person 的子类class Member { T? _person; Member(this._person); void show() { if (_person != null) { _person!.display(); } }} void main() { Member member = Member(Student("Leon", 18, "hafo")); member.show(); //name: Leon age: 18 school: hafo} 3、补充:Flutter 的一些编程技巧
(1)空安全
//安全调用void safeUse() { List? list; print("list: ${list?.length}"); //list: null} (2)默认值
//默认值void defaultUse() { bool? isOpen; //默认值 String result = ''; if (isOpen ?? false) { //isOpen == true result = '打开'; } else { //isOpen == false || isOpen == null result = '关闭'; } print("result: $result"); //关闭} (3)集合判空
//集合判空void emptyUse() { List list = []; list.add(0); list.add(''); list.add(null); list.add(true); for (int i = 0; i