import 'package:dio/dio.dart'; //https://dart.cn/codelabs/dart-cheatsheet class Spacecraft { String name; DateTime launchDate; final _lock = Lock(); int _aProperty = 0; var _values = []; void addCount(int num) { _lock.lock(); _values.add(num); _lock.unlock(); } //get values len int get len => _values.length; int get aProperty => _aProperty; set aProperty(int value) { _aProperty = value; } // 构造函数,带有可以直接为成员变量赋值的语法糖。 Spacecraft(this.name, this.launchDate) { // 这里可以实现初始化代码。 } // 命名构造函数,转发到默认构造函数。 Spacecraft.unlaunched(String name) : this(name, null); // 只读的非 final 的属性 // ? ; isnull //launchDate!=null // int get launchYear => launchDate != null ? launchDate.year : 0; int get launchYear => launchDate?.year; // 方法。 void describe() { _lock.lock(); try { print('宇宙飞船:$name'); if (launchDate != null) { // ignore: omit_local_variable_types int years = DateTime.now().difference(launchDate).inDays ~/ 365; print('发射时间:$launchYear ($years years ago)'); } else { print('尚未发射'); } } finally { _lock.unlock(); } } } class Orbiter extends Spacecraft { //属性 num altitude; Orbiter.Check(this.altitude) : super(null, null); Orbiter(String name, DateTime launchDate, this.altitude) : super(name, launchDate); // @override String toString() { return 'Orbiter{altitude: $altitude}'; } } //sudo "/Applications/Install macOS Catalina.app/Contents/Resources/createinstallmedia" --volume /Volumes/CantChat class Shape { Shape(); //factory constructors //can return sub class object factory Shape.fromTypeName(String typeName) { if (typeName == 'square') return Square(); if (typeName == 'circle') return Circle(); print('I don\'t recognize $typeName'); return null; } } class Square extends Shape {} class Circle extends Shape {}