| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- 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 = <int>[];
- 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 {}
|