From 050d008c5d67941d17b34c34bdace561ce3ce704 Mon Sep 17 00:00:00 2001 From: laiiihz Date: Wed, 14 Apr 2021 13:29:03 +0800 Subject: [PATCH] fix context err --- CHANGELOG.md | 4 +++ example/lib/main.dart | 2 +- example/pubspec.lock | 62 ++++++++++++++++----------------- lib/src/power_logger.dart | 34 ++++++------------ lib/src/widgets/logger_fab.dart | 20 +++++++---- pubspec.lock | 56 ++++++++++++++--------------- pubspec.yaml | 2 +- 7 files changed, 89 insertions(+), 91 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 65898ae..c9d7284 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # CHANGELOG +## [1.1.1-nullsafety.3] + +* fix context error. + ## [1.1.0-nullsafety.2] * performance enhanced. diff --git a/example/lib/main.dart b/example/lib/main.dart index bd5ac00..7cc78d9 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -77,7 +77,7 @@ class _MyHomePageState extends State { : () async { loading = true; setState(() {}); - await NetTool.dio.get(_textController.text).catchError((e) {}); + await NetTool.dio.get(_textController.text).catchError((_) {}); loading = false; setState(() {}); }, diff --git a/example/pubspec.lock b/example/pubspec.lock index bbf15de..0a00903 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -5,84 +5,84 @@ packages: dependency: transitive description: name: async - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.5.0" auto_size_text: dependency: transitive description: name: auto_size_text - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "3.0.0-nullsafety.0" boolean_selector: dependency: transitive description: name: boolean_selector - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.1.0" characters: dependency: transitive description: name: characters - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.1.0" charcode: dependency: transitive description: name: charcode - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.2.0" clock: dependency: transitive description: name: clock - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.1.0" collection: dependency: transitive description: name: collection - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.15.0" cupertino_icons: dependency: "direct main" description: name: cupertino_icons - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.0.2" device_info: dependency: transitive description: name: device_info - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.0" device_info_platform_interface: dependency: transitive description: name: device_info_platform_interface - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.1" dio: dependency: "direct main" description: name: dio - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "4.0.0" fake_async: dependency: transitive description: name: fake_async - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.2.0" flutter: @@ -94,7 +94,7 @@ packages: dependency: transitive description: name: flutter_highlight - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "0.7.0" flutter_test: @@ -106,63 +106,63 @@ packages: dependency: "direct main" description: name: get - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "4.1.4" highlight: dependency: transitive description: name: highlight - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "0.7.0" http_parser: dependency: transitive description: name: http_parser - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "4.0.0" logger: dependency: transitive description: name: logger - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.0.0" matcher: dependency: transitive description: name: matcher - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "0.12.10" meta: dependency: transitive description: name: meta - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.3.0" package_info: dependency: transitive description: name: package_info - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.0" path: dependency: transitive description: name: path - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.8.0" plugin_platform_interface: dependency: transitive description: name: plugin_platform_interface - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.0" power_logger: @@ -171,7 +171,7 @@ packages: path: ".." relative: true source: path - version: "1.1.0" + version: "1.1.1-nullsafety.3" sky_engine: dependency: transitive description: flutter @@ -181,56 +181,56 @@ packages: dependency: transitive description: name: source_span - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.8.0" stack_trace: dependency: transitive description: name: stack_trace - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.10.0" stream_channel: dependency: transitive description: name: stream_channel - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.1.0" string_scanner: dependency: transitive description: name: string_scanner - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.1.0" term_glyph: dependency: transitive description: name: term_glyph - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.2.0" test_api: dependency: transitive description: name: test_api - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "0.2.19" typed_data: dependency: transitive description: name: typed_data - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.3.0" vector_math: dependency: transitive description: name: vector_math - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.1.0" sdks: diff --git a/lib/src/power_logger.dart b/lib/src/power_logger.dart index 8b72ad3..8e6586e 100644 --- a/lib/src/power_logger.dart +++ b/lib/src/power_logger.dart @@ -1,14 +1,11 @@ import 'package:flutter/material.dart'; +import 'package:flutter/scheduler.dart'; import 'package:power_logger/src/widgets/logger_fab.dart'; class PowerLogger { /// debug tag static bool debug = true; - static OverlayEntry? entry; - - static late BuildContext globalContext; - ///初始化 /// ///默认开启debug @@ -19,8 +16,7 @@ class PowerLogger { @Deprecated("use PowerLogger.start") static init(BuildContext context, {bool debug = true}) { PowerLogger.debug = debug; - globalContext = context; - if (debug) if (debug) _insertToOverlay(); + if (debug) if (debug) _insertToOverlay(context); } ///初始化 @@ -35,28 +31,20 @@ class PowerLogger { bool debug = true, Alignment initAlignment = Alignment.center, }) { - globalContext = context; - WidgetsBinding.instance!.addPostFrameCallback((_) { - PowerLogger.debug = debug; - if (debug) _insertToOverlay(initAlignment: initAlignment); + PowerLogger.debug = debug; + SchedulerBinding.instance!.addPostFrameCallback((_) { + if (debug) _insertToOverlay(context, initAlignment: initAlignment); }); } - static _insertToOverlay({Alignment initAlignment = Alignment.center}) { - entry = OverlayEntry( + static _insertToOverlay( + BuildContext context, { + Alignment initAlignment = Alignment.center, + }) { + Overlay.of(context)!.insert(OverlayEntry( builder: (context) { return LoggerFab(initAlignment: initAlignment); }, - ); - Overlay.of(globalContext)!.insert(entry!); - } - - static insertToOverlay({Alignment initAlignment = Alignment.center}) => - _insertToOverlay( - initAlignment: initAlignment, - ); - - static removeFromOverlay() { - if (entry != null) entry!.remove(); + )); } } diff --git a/lib/src/widgets/logger_fab.dart b/lib/src/widgets/logger_fab.dart index a4fc2b2..9f52f95 100644 --- a/lib/src/widgets/logger_fab.dart +++ b/lib/src/widgets/logger_fab.dart @@ -21,6 +21,8 @@ class LoggerFabState extends State const SpringDescription(mass: 15, stiffness: 1000, damping: 0.7); Alignment get alignment => _dragAlignment; + bool opened = false; + double _normalizeVelocity(Offset velocity, Size size) { final normalizedVelocity = Offset( velocity.dx / size.width, @@ -78,13 +80,17 @@ class LoggerFabState extends State onPanEnd: (details) => _runAnimation(details.velocity.pixelsPerSecond, size), onTap: () async { - Alignment initAlignment = _dragAlignment; - PowerLogger.removeFromOverlay(); - await Navigator.push( - context, - MaterialPageRoute(builder: (context) => PowerLoggerView()), - ); - PowerLogger.insertToOverlay(initAlignment: initAlignment); + if (!opened) { + opened = true; + await Navigator.push( + context, + MaterialPageRoute(builder: (context) => PowerLoggerView()), + ); + opened = false; + } else { + opened = false; + Navigator.pop(context); + } }, child: const _FabButton(), ), diff --git a/pubspec.lock b/pubspec.lock index b63723f..ed4bc53 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,77 +5,77 @@ packages: dependency: transitive description: name: async - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.5.0" auto_size_text: dependency: "direct main" description: name: auto_size_text - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "3.0.0-nullsafety.0" boolean_selector: dependency: transitive description: name: boolean_selector - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.1.0" characters: dependency: transitive description: name: characters - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.1.0" charcode: dependency: transitive description: name: charcode - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.2.0" clock: dependency: transitive description: name: clock - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.1.0" collection: dependency: transitive description: name: collection - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.15.0" device_info: dependency: "direct main" description: name: device_info - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.0" device_info_platform_interface: dependency: transitive description: name: device_info_platform_interface - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.1" dio: dependency: "direct main" description: name: dio - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "4.0.0" fake_async: dependency: transitive description: name: fake_async - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.2.0" flutter: @@ -87,7 +87,7 @@ packages: dependency: "direct main" description: name: flutter_highlight - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "0.7.0" flutter_test: @@ -99,56 +99,56 @@ packages: dependency: transitive description: name: highlight - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "0.7.0" http_parser: dependency: transitive description: name: http_parser - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "4.0.0" logger: dependency: "direct main" description: name: logger - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.0.0" matcher: dependency: transitive description: name: matcher - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "0.12.10" meta: dependency: transitive description: name: meta - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.3.0" package_info: dependency: "direct main" description: name: package_info - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.0" path: dependency: transitive description: name: path - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.8.0" plugin_platform_interface: dependency: transitive description: name: plugin_platform_interface - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.0" sky_engine: @@ -160,56 +160,56 @@ packages: dependency: transitive description: name: source_span - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.8.0" stack_trace: dependency: transitive description: name: stack_trace - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.10.0" stream_channel: dependency: transitive description: name: stream_channel - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.1.0" string_scanner: dependency: transitive description: name: string_scanner - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.1.0" term_glyph: dependency: transitive description: name: term_glyph - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.2.0" test_api: dependency: transitive description: name: test_api - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "0.2.19" typed_data: dependency: transitive description: name: typed_data - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.3.0" vector_math: dependency: transitive description: name: vector_math - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.1.0" sdks: diff --git a/pubspec.yaml b/pubspec.yaml index 0c08c02..fcb2a5e 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: power_logger description: A well log tool on flutter, support Dio and custom type data. -version: 1.1.0-nullsafety.2 +version: 1.1.1-nullsafety.3 homepage: https://github.com/laiiihz/power_logger environment: