Spacecraft.dart 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. import 'package:dio/dio.dart';
  2. //https://dart.cn/codelabs/dart-cheatsheet
  3. class Spacecraft {
  4. String name;
  5. DateTime launchDate;
  6. final _lock = Lock();
  7. int _aProperty = 0;
  8. var _values = <int>[];
  9. void addCount(int num) {
  10. _lock.lock();
  11. _values.add(num);
  12. _lock.unlock();
  13. }
  14. //get values len
  15. int get len => _values.length;
  16. int get aProperty => _aProperty;
  17. set aProperty(int value) {
  18. _aProperty = value;
  19. }
  20. // 构造函数,带有可以直接为成员变量赋值的语法糖。
  21. Spacecraft(this.name, this.launchDate) {
  22. // 这里可以实现初始化代码。
  23. }
  24. // 命名构造函数,转发到默认构造函数。
  25. Spacecraft.unlaunched(String name) : this(name, null);
  26. // 只读的非 final 的属性
  27. // ? ; isnull
  28. //launchDate!=null
  29. // int get launchYear => launchDate != null ? launchDate.year : 0;
  30. int get launchYear => launchDate?.year;
  31. // 方法。
  32. void describe() {
  33. _lock.lock();
  34. try {
  35. print('宇宙飞船:$name');
  36. if (launchDate != null) {
  37. // ignore: omit_local_variable_types
  38. int years = DateTime.now().difference(launchDate).inDays ~/ 365;
  39. print('发射时间:$launchYear ($years years ago)');
  40. } else {
  41. print('尚未发射');
  42. }
  43. } finally {
  44. _lock.unlock();
  45. }
  46. }
  47. }
  48. class Orbiter extends Spacecraft {
  49. //属性
  50. num altitude;
  51. Orbiter.Check(this.altitude) : super(null, null);
  52. Orbiter(String name, DateTime launchDate, this.altitude)
  53. : super(name, launchDate);
  54. //
  55. @override
  56. String toString() {
  57. return 'Orbiter{altitude: $altitude}';
  58. }
  59. }
  60. //sudo "/Applications/Install macOS Catalina.app/Contents/Resources/createinstallmedia" --volume /Volumes/CantChat
  61. class Shape {
  62. Shape();
  63. //factory constructors
  64. //can return sub class object
  65. factory Shape.fromTypeName(String typeName) {
  66. if (typeName == 'square') return Square();
  67. if (typeName == 'circle') return Circle();
  68. print('I don\'t recognize $typeName');
  69. return null;
  70. }
  71. }
  72. class Square extends Shape {}
  73. class Circle extends Shape {}