فهرست منبع

[新增]1.新增logger;2.dio 测试case;

石头哥哥 5 سال پیش
والد
کامیت
416d47d922
5فایلهای تغییر یافته به همراه108 افزوده شده و 26 حذف شده
  1. 20 0
      lib/MyColor.dart
  2. 57 7
      lib/Spacecraft.dart
  3. 14 14
      lib/dio_test.dart
  4. 16 5
      lib/main.dart
  5. 1 0
      pubspec.yaml

+ 20 - 0
lib/MyColor.dart

@@ -0,0 +1,20 @@
+class MyColor {
+  String blue;
+  String red;
+
+  MyColor({this.blue, this.red});
+
+  factory MyColor.fromJson(Map<String, dynamic> json) {
+    return MyColor(
+      blue: json['blue'],
+      red: json['red'],
+    );
+  }
+
+  Map<String, dynamic> toJson() {
+    final Map<String, dynamic> data = new Map<String, dynamic>();
+    data['blue'] = this.blue;
+    data['red'] = this.red;
+    return data;
+  }
+}

+ 57 - 7
lib/Spacecraft.dart

@@ -1,7 +1,32 @@
+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) {
     // 这里可以实现初始化代码。
@@ -12,17 +37,24 @@ class Spacecraft {
 
   // 只读的非 final 的属性
   // ? ; isnull
+  //launchDate!=null
+//  int get launchYear => launchDate != null ? launchDate.year : 0;
   int get launchYear => launchDate?.year;
 
   // 方法。
   void describe() {
-    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('尚未发射');
+    _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();
     }
   }
 }
@@ -42,3 +74,21 @@ class Orbiter extends Spacecraft {
     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 {}

+ 14 - 14
lib/dio_test.dart

@@ -1,11 +1,11 @@
 //test
 import 'package:dio/dio.dart';
-import 'package:dio_retry/dio_retry.dart';
-import 'package:logging/logging.dart';
+import 'package:logger/logger.dart';
 import 'package:pretty_dio_logger/pretty_dio_logger.dart';
 
 //https://pub.flutter-io.cn/packages/retrofit
 void getHttp() async {
+  var l = Logger();
   try {
     final dio = Dio(); // new ?
     dio.interceptors.addAll([
@@ -16,24 +16,24 @@ void getHttp() async {
           responseHeader: false,
           error: true,
           compact: true,
-          maxWidth: 90),
-      RetryInterceptor(
-        dio: dio,
-        logger: Logger('Retry'),
-        options: const RetryOptions(
-          retryInterval: Duration(seconds: 5),
-        ),
-      )
+          maxWidth: 90)
     ]);
-    // ignore: omit_local_variable_types
+
+    var listName = <int>[];
+    listName.add(1);
+    listName.any((i) => i != 0);
+    var bigInt = BigInt.from(100)..bitLength;
+    l.i('级联>>> $bigInt');
+
+    l.i('开始异步网络请求>>>>>> ');
     //await dio.get('http://www.mocky.io/v2/5d7fc75c3300000476f0b557');
     await dio.post('http://127.0.0.1:28389/s/v3/article/loading',
         options:
             RequestOptions(contentType: 'application/x-www-form-urlencoded'),
         data:
             'articleType=1&bannerType=1&token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1ODM5MDYyNjcsImlkIjoiMTE3MTM0NjA3NzY4MTQ1NTEwNCIsIm9yaWdfaWF0IjoxNTgyNjEwMjY3fQ.AtPAvN9p7QMwTs7RwyUu2NDQI4p22AF4rgQtTxFbaNY&uid=1171346077681455104');
-  } on Exception catch (e) {
-    // catch io exception
-    print('$e');
+    l.i('网络请求完毕!');
+  } catch (e) {
+    l.e(e);
   } finally {}
 }

+ 16 - 5
lib/main.dart

@@ -3,6 +3,7 @@ import 'dart:convert';
 import 'package:logger/logger.dart' as L;
 import 'package:simple_logger/simple_logger.dart';
 import 'package:xdart_test/Bicycle.dart';
+import 'package:xdart_test/MyColor.dart';
 import 'package:xdart_test/dio_test.dart';
 import 'package:xdart_test/xdart_test.dart' as c_test;
 
@@ -76,7 +77,9 @@ void main(List<String> arguments) {
   var imageJson = json.encode(image);
   print('image json :$imageJson');
 
+  //命名构造函数
   var spacecraft = Spacecraft.unlaunched('神舟五号');
+  spacecraft.addCount(1);
   spacecraft.describe();
 
   var orbiter = Orbiter('神州10号', DateTime.now(), 100.0);
@@ -84,11 +87,16 @@ void main(List<String> arguments) {
 
   //带名字的构造函数
   var prettyPrinter = L.PrettyPrinter(
-      methodCount: 3, // number of method calls to be displayed
-      errorMethodCount: 8, // number of method calls if stacktrace is provided
-      lineLength: 120, // width of the output
-      colors: true, // Colorful log messages
-      printEmojis: false, // Print an emoji for each log message
+      methodCount: 3,
+      // number of method calls to be displayed
+      errorMethodCount: 8,
+      // number of method calls if stacktrace is provided
+      lineLength: 120,
+      // width of the output
+      colors: true,
+      // Colorful log messages
+      printEmojis: false,
+      // Print an emoji for each log message
       printTime: true // Should each log print contain a timestamp
       );
   var logger = L.Logger(
@@ -119,5 +127,8 @@ void main(List<String> arguments) {
   var dateTime = DateTime.now();
   logger.i('$dateTime');
 
+  final color = MyColor(blue: '蓝色');
+  logger.i('${json.encode(color)}');
+
   getHttp();
 }

+ 1 - 0
pubspec.yaml

@@ -13,6 +13,7 @@ dependencies:
   logger: ^0.8.3
   dio_retry: ^0.1.9-beta
   logging: ^0.11.4
+  common_utils: ^1.1.3
 
 dev_dependencies:
   pedantic: ^1.8.0