当前位置: 首页 > news >正文

Flutter学习7 - Dart 泛型

1、泛型类

//泛型类
class Cache<T> {final Map<String, T> _cache = {};void saveData(String key, T value) {_cache[key] = value;}//泛型方法T? getData(String key) {return _cache[key];}
}
void main() {Cache<int> cache1 = Cache();const String name1 = "Leon";cache1.saveData(name1, 18);print("name: $name1   age: ${cache1.getData(name1)}"); //name: leon   age: 18Cache<String> 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);void display() {print("name: $name   age: $age  school: $_school");}
}
//泛型约束:T 只能是 Person 的子类
class Member<T extends Person> {T? _person;Member(this._person);void show() {if (_person != null) {_person!.display();}}
}
void main() {Member<Student> 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 == trueresult = '打开';} else {//isOpen == false || isOpen == nullresult = '关闭';}print("result: $result"); //关闭
}

(3)集合判空

//集合判空
void emptyUse() {List list = [];list.add(0);list.add('');list.add(null);list.add(true);for (int i = 0; i < list.length; i++) {if ([0, '', null].contains(list[i])) {print("index: $i   value: 空");} else {print("index: $i   vaule: ${list[i]}");}}// index: 0   value: 空// index: 1   value: 空// index: 2   value: 空// index: 3   vaule: true
}
http://www.lryc.cn/news/311266.html

相关文章:

  • Git 基本操作 ⼯作区、暂存区、版本库
  • 利用Vue3的新API(customRef)实现防抖效果
  • 【Linux】在 Ubuntu 系统下使用 Screen 运行 Python 脚本
  • jxls——自定义命令设置动态行高
  • 前端面试练习24.3.2-3.3
  • 优先级队列(Java )
  • 大宋咨询如何进行汽车门店6S标准现场检查
  • 仿牛客网项目---点赞模块的实现
  • 【AI视野·今日CV 计算机视觉论文速览 第300期】Fri, 1 Mar 2024
  • 【单片机学习的准备】
  • 力扣hot100:438.找到字符串中所有字母异位词
  • Kali Linux 2024.1
  • springboot启动加载
  • 基于Java的智能停车场管理系统(Vue.js+SpringBoot)
  • ESD Clamp cell是什么?
  • 费率电能表
  • 2张图2秒钟3D重建!这款AI工具火爆GitHub,网友:忘掉Sora
  • C++高级面试题:请解释 C++ 中的指针和引用之间的区别。
  • Git 配置处理客户端无法正常访问到 github 原网站时,npm 下载依赖包失败的问题
  • 前端爬虫+可视化Demo
  • keepAlive
  • 蓝桥杯练习题——dp
  • kotlin基础语法
  • 淘宝天猫商家爬虫工具 电商采集软件使用教程
  • 建库建表时,最容易忽略的10个细节
  • 【基础知识】什么是 PPO(Proximal Policy Optimization,近端策略优化)
  • 程序员如何选择职业赛道?
  • [LeetBook]【学习日记】寻找和为指定数字的连续数字
  • 阿里云中小企业扶持权益
  • 2核4g服务器能支持多少人访问?并发数性能测评