From b6672d05b6e3709a629bb40d10519f979709f22f Mon Sep 17 00:00:00 2001 From: kevinzhang19870314 Date: Thu, 29 Jul 2021 18:05:47 +0800 Subject: [PATCH 1/2] fix: 1. fix dart warnings; 2. ColorSucker sounds weird, change it to ColorPicker make more sence. --- README.md | 4 +- README_en.md | 4 +- custom_plugin_example/lib/main.dart | 4 +- custom_plugin_example/pubspec.lock | 38 ++--- example/lib/main.dart | 2 +- example/pubspec.lock | 122 +++++++------- kits/flutter_ume_kit_console/pubspec.lock | 144 ++++++++--------- .../test/console/console_manager_test.dart | 4 - kits/flutter_ume_kit_device/pubspec.lock | 150 +++++++++--------- .../memory_info/memory_info_page.dart | 4 +- kits/flutter_ume_kit_perf/pubspec.lock | 140 ++++++++-------- .../lib/show_code/page_info_helper.dart | 2 +- .../lib/show_code/show_code.dart | 6 +- kits/flutter_ume_kit_show_code/pubspec.lock | 142 ++++++++--------- kits/flutter_ume_kit_ui/coverage/lcov.info | 2 +- .../color_picker.dart} | 14 +- .../{color_sucker => color_picker}/icon.dart | 0 .../lib/components/hit_test.dart | 1 - .../widget_detail_inspector.dart | 8 +- .../lib/flutter_ume_kit_ui.dart | 2 +- kits/flutter_ume_kit_ui/pubspec.lock | 146 ++++++++--------- .../color_picker_test.dart} | 18 +-- lib/core/red_dot.dart | 2 +- lib/core/store_manager.dart | 5 +- lib/core/ui/dragable_widget.dart | 4 +- lib/core/ui/icon_cache.dart | 3 +- lib/core/ui/menu_page.dart | 2 +- lib/core/ui/root_widget.dart | 4 +- lib/core/ui/toolbar_widget.dart | 2 +- lib/service/inspector/inspector_overlay.dart | 8 +- lib/util/flutter_logo.dart | 14 +- lib/util/store_mixin.dart | 2 +- pubspec.lock | 138 ++++++++-------- .../vm_service/service_wrapper_test.dart | 1 - test/util/store_mixin_test.dart | 7 - 35 files changed, 556 insertions(+), 593 deletions(-) rename kits/flutter_ume_kit_ui/lib/components/{color_sucker/color_sucker.dart => color_picker/color_picker.dart} (95%) rename kits/flutter_ume_kit_ui/lib/components/{color_sucker => color_picker}/icon.dart (100%) rename kits/flutter_ume_kit_ui/test/components/{color_sucker/color_sucker_test.dart => color_picker/color_picker_test.dart} (85%) diff --git a/README.md b/README.md index 16eee5e..f92fdca 100644 --- a/README.md +++ b/README.md @@ -59,7 +59,7 @@ Flutter 应用内调试工具平台 PluginManager.instance // 注册插件 ..register(WidgetInfoInspector()) ..register(WidgetDetailInspector()) - ..register(ColorSucker()) + ..register(ColorPicker()) ..register(AlignRuler()) ..register(Performance()) ..register(ShowCode()) @@ -109,7 +109,7 @@ showDialog( Widget 信息
Widget 信息 Widget 详情
Widget 详情 - 颜色吸管
颜色吸管 + 颜色吸管
颜色吸管 对齐标尺
对齐标尺 diff --git a/README_en.md b/README_en.md index 6cb0784..fb6d92a 100644 --- a/README_en.md +++ b/README_en.md @@ -59,7 +59,7 @@ Visit [Develop plugin kits for UME](#develop-plugin-kits-for-ume) for more detai PluginManager.instance // Register plugin kits ..register(WidgetInfoInspector()) ..register(WidgetDetailInspector()) - ..register(ColorSucker()) + ..register(ColorPicker()) ..register(AlignRuler()) ..register(Performance()) ..register(ShowCode()) @@ -109,7 +109,7 @@ There are 10 plugin kits built in the current open source version of UME. Widget Info
Widget Info Widget Detail
Widget Detail - Color Sucker
Color Sucker + Color Sucker
Color Sucker Align Ruler
Align Ruler diff --git a/custom_plugin_example/lib/main.dart b/custom_plugin_example/lib/main.dart index 79fbd73..5f07e48 100644 --- a/custom_plugin_example/lib/main.dart +++ b/custom_plugin_example/lib/main.dart @@ -58,7 +58,7 @@ class _MyHomePageState extends State { ), Text( '$_counter', - style: Theme.of(context).textTheme.display1, + style: Theme.of(context).textTheme.headline4, ), ], ), @@ -72,7 +72,7 @@ class _MyHomePageState extends State { _hasTapped ? 'Open \nCustomLog \nto view log' : 'Tap here 👉', - style: Theme.of(context).textTheme.display1, + style: Theme.of(context).textTheme.headline4, ), SizedBox(width: 80) ])), diff --git a/custom_plugin_example/pubspec.lock b/custom_plugin_example/pubspec.lock index 67f991a..de021e8 100644 --- a/custom_plugin_example/pubspec.lock +++ b/custom_plugin_example/pubspec.lock @@ -7,7 +7,7 @@ packages: name: async url: "https://pub.dartlang.org" source: hosted - version: "2.5.0" + version: "2.6.1" boolean_selector: dependency: transitive description: @@ -92,7 +92,7 @@ packages: path: ".." relative: true source: path - version: "0.1.0" + version: "0.2.0-dev.0" flutter_web_plugins: dependency: transitive description: flutter @@ -139,21 +139,21 @@ packages: name: path_provider_linux url: "https://pub.dartlang.org" source: hosted - version: "0.0.1+2" + version: "2.0.2" path_provider_platform_interface: dependency: transitive description: name: path_provider_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "1.0.4" + version: "2.0.1" path_provider_windows: dependency: transitive description: name: path_provider_windows url: "https://pub.dartlang.org" source: hosted - version: "0.0.5" + version: "2.0.3" platform: dependency: transitive description: @@ -167,7 +167,7 @@ packages: name: plugin_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "1.0.3" + version: "2.0.1" process: dependency: transitive description: @@ -181,49 +181,49 @@ packages: name: quiver url: "https://pub.dartlang.org" source: hosted - version: "2.1.5" + version: "3.0.1" shared_preferences: dependency: transitive description: name: shared_preferences url: "https://pub.dartlang.org" source: hosted - version: "0.5.12+4" + version: "2.0.6" shared_preferences_linux: dependency: transitive description: name: shared_preferences_linux url: "https://pub.dartlang.org" source: hosted - version: "0.0.2+4" + version: "2.0.2" shared_preferences_macos: dependency: transitive description: name: shared_preferences_macos url: "https://pub.dartlang.org" source: hosted - version: "0.0.1+11" + version: "2.0.2" shared_preferences_platform_interface: dependency: transitive description: name: shared_preferences_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "1.0.4" + version: "2.0.0" shared_preferences_web: dependency: transitive description: name: shared_preferences_web url: "https://pub.dartlang.org" source: hosted - version: "0.1.2+7" + version: "2.0.1" shared_preferences_windows: dependency: transitive description: name: shared_preferences_windows url: "https://pub.dartlang.org" source: hosted - version: "0.0.2+3" + version: "2.0.2" sky_engine: dependency: transitive description: flutter @@ -235,7 +235,7 @@ packages: name: source_span url: "https://pub.dartlang.org" source: hosted - version: "1.8.0" + version: "1.8.1" stack_trace: dependency: transitive description: @@ -270,14 +270,14 @@ packages: name: test_api url: "https://pub.dartlang.org" source: hosted - version: "0.2.19" + version: "0.3.0" tuple: dependency: transitive description: name: tuple url: "https://pub.dartlang.org" source: hosted - version: "1.0.3" + version: "2.0.0" typed_data: dependency: transitive description: @@ -298,7 +298,7 @@ packages: name: vm_service url: "https://pub.dartlang.org" source: hosted - version: "4.2.0" + version: "7.2.0" win32: dependency: transitive description: @@ -312,7 +312,7 @@ packages: name: xdg_directories url: "https://pub.dartlang.org" source: hosted - version: "0.1.2" + version: "0.2.0" sdks: dart: ">=2.12.0 <3.0.0" - flutter: ">=1.20.0" + flutter: ">=2.0.0" diff --git a/example/lib/main.dart b/example/lib/main.dart index 7085ec2..c4dee6f 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -14,7 +14,7 @@ void main() { PluginManager.instance ..register(WidgetInfoInspector()) ..register(WidgetDetailInspector()) - ..register(ColorSucker()) + ..register(ColorPicker()) ..register(AlignRuler()) ..register(Performance()) ..register(ShowCode()) diff --git a/example/pubspec.lock b/example/pubspec.lock index 157728b..4cdb8d2 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -5,105 +5,105 @@ packages: dependency: transitive description: name: archive - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "3.1.2" async: dependency: transitive description: name: async - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.6.1" 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" crypto: dependency: transitive description: name: crypto - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "3.0.1" 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.3" device_info: dependency: transitive description: name: device_info - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.2" 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" 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" ffi: dependency: transitive description: name: ffi - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.1.2" file: dependency: transitive description: name: file - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "6.1.2" file_utils: dependency: transitive description: name: file_utils - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.0.1" flutter: @@ -172,163 +172,163 @@ packages: dependency: transitive description: name: globbing - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.0.0" image: dependency: transitive description: name: image - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "3.0.2" intl: dependency: transitive description: name: intl - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "0.17.0" js: dependency: transitive description: name: js - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "0.6.3" 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" mime: dependency: transitive description: name: mime - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.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" path_provider_linux: dependency: transitive description: name: path_provider_linux - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.0.2" path_provider_platform_interface: dependency: transitive description: name: path_provider_platform_interface - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.1" path_provider_windows: dependency: transitive description: name: path_provider_windows - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted - version: "2.0.1" + version: "2.0.3" petitparser: dependency: transitive description: name: petitparser - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "4.1.0" platform: dependency: transitive description: name: platform - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "3.0.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.1" process: dependency: transitive description: name: process - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted - version: "4.2.1" + version: "4.2.3" quiver: dependency: transitive description: name: quiver - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "3.0.1" share: dependency: transitive description: name: share - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.4" shared_preferences: dependency: transitive description: name: shared_preferences - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.6" shared_preferences_linux: dependency: transitive description: name: shared_preferences_linux - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.0.2" shared_preferences_macos: dependency: transitive description: name: shared_preferences_macos - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.0.2" shared_preferences_platform_interface: dependency: transitive description: name: shared_preferences_platform_interface - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.0" shared_preferences_web: dependency: transitive description: name: shared_preferences_web - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.0.1" shared_preferences_windows: dependency: transitive description: name: shared_preferences_windows - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.0.2" sky_engine: dependency: transitive description: flutter @@ -338,100 +338,100 @@ packages: dependency: transitive description: name: source_span - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.8.1" 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" system_info: dependency: transitive description: name: system_info - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.0.1" 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.3.0" tuple: dependency: transitive description: name: tuple - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.0" 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" vm_service: dependency: transitive description: name: vm_service - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted - version: "7.1.1" + version: "7.2.0" win32: dependency: transitive description: name: win32 - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.2.5" xdg_directories: dependency: transitive description: name: xdg_directories - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "0.2.0" xml: dependency: transitive description: name: xml - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "5.1.2" sdks: dart: ">=2.13.0 <3.0.0" - flutter: ">=1.20.0" + flutter: ">=2.0.0" diff --git a/kits/flutter_ume_kit_console/pubspec.lock b/kits/flutter_ume_kit_console/pubspec.lock index edc7f9d..70e6487 100644 --- a/kits/flutter_ume_kit_console/pubspec.lock +++ b/kits/flutter_ume_kit_console/pubspec.lock @@ -5,147 +5,147 @@ packages: dependency: transitive description: name: _fe_analyzer_shared - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "22.0.0" analyzer: dependency: transitive description: name: analyzer - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.7.1" args: dependency: transitive description: name: args - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.2.0" async: dependency: transitive description: name: async - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.6.1" 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" build: dependency: transitive description: name: build - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.3" built_collection: dependency: transitive description: name: built_collection - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "5.1.0" built_value: dependency: transitive description: name: built_value - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "8.1.1" 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" cli_util: dependency: transitive description: name: cli_util - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "0.3.3" clock: dependency: transitive description: name: clock - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.1.0" code_builder: dependency: transitive description: name: code_builder - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "4.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" convert: dependency: transitive description: name: convert - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "3.0.1" crypto: dependency: transitive description: name: crypto - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "3.0.1" dart_style: dependency: transitive description: name: dart_style - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.3" 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" ffi: dependency: transitive description: name: ffi - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.1.2" file: dependency: transitive description: name: file - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "6.1.2" fixnum: dependency: transitive description: name: fixnum - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.0.0" flutter: @@ -176,7 +176,7 @@ packages: dependency: "direct main" description: name: flutter_ume - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "0.2.0-dev.0" flutter_web_plugins: @@ -188,28 +188,28 @@ packages: dependency: transitive description: name: glob - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.1" intl: dependency: transitive description: name: intl - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "0.17.0" js: dependency: transitive description: name: js - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "0.6.3" json_annotation: dependency: transitive description: name: json_annotation - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "4.0.1" lcov: @@ -225,163 +225,163 @@ packages: dependency: transitive description: name: logging - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.0.1" 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" mime: dependency: transitive description: name: mime - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.0.0" mockito: dependency: "direct dev" description: name: mockito - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "5.0.12" package_config: dependency: transitive description: name: package_config - 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" path_provider_linux: dependency: transitive description: name: path_provider_linux - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.0.2" path_provider_platform_interface: dependency: transitive description: name: path_provider_platform_interface - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.1" path_provider_windows: dependency: transitive description: name: path_provider_windows - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted - version: "2.0.1" + version: "2.0.3" pedantic: dependency: transitive description: name: pedantic - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.11.1" platform: dependency: transitive description: name: platform - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "3.0.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.1" process: dependency: transitive description: name: process - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted - version: "4.2.1" + version: "4.2.3" pub_semver: dependency: transitive description: name: pub_semver - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.0" quiver: dependency: transitive description: name: quiver - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "3.0.1" share: dependency: "direct main" description: name: share - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.4" shared_preferences: dependency: "direct main" description: name: shared_preferences - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.6" shared_preferences_linux: dependency: transitive description: name: shared_preferences_linux - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.0.2" shared_preferences_macos: dependency: transitive description: name: shared_preferences_macos - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.0.2" shared_preferences_platform_interface: dependency: transitive description: name: shared_preferences_platform_interface - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.0" shared_preferences_web: dependency: transitive description: name: shared_preferences_web - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.0.1" shared_preferences_windows: dependency: transitive description: name: shared_preferences_windows - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.0.2" sky_engine: dependency: transitive description: flutter @@ -391,105 +391,105 @@ packages: dependency: transitive description: name: source_gen - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.0.3" source_span: dependency: transitive description: name: source_span - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.8.1" 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.3.0" tuple: dependency: "direct main" description: name: tuple - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.0" 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" vm_service: dependency: transitive description: name: vm_service - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted - version: "7.1.1" + version: "7.2.0" watcher: dependency: transitive description: name: watcher - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.0.0" win32: dependency: transitive description: name: win32 - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.2.5" xdg_directories: dependency: transitive description: name: xdg_directories - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "0.2.0" yaml: dependency: transitive description: name: yaml - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "3.1.0" sdks: diff --git a/kits/flutter_ume_kit_console/test/console/console_manager_test.dart b/kits/flutter_ume_kit_console/test/console/console_manager_test.dart index 57ecc0d..74ebee4 100644 --- a/kits/flutter_ume_kit_console/test/console/console_manager_test.dart +++ b/kits/flutter_ume_kit_console/test/console/console_manager_test.dart @@ -5,11 +5,7 @@ import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:tuple/tuple.dart'; -import 'package:flutter_ume/core/ui/global.dart'; import 'package:flutter_ume_kit_console/console/console_manager.dart'; -import 'package:flutter_ume_kit_console/flutter_ume_kit_console.dart'; - -import '../mock_classes.dart'; void main() { group('ConsoleManager', () { diff --git a/kits/flutter_ume_kit_device/pubspec.lock b/kits/flutter_ume_kit_device/pubspec.lock index 75cc305..c48496c 100644 --- a/kits/flutter_ume_kit_device/pubspec.lock +++ b/kits/flutter_ume_kit_device/pubspec.lock @@ -5,168 +5,168 @@ packages: dependency: transitive description: name: _fe_analyzer_shared - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "22.0.0" analyzer: dependency: transitive description: name: analyzer - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.7.1" args: dependency: transitive description: name: args - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.2.0" async: dependency: transitive description: name: async - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.6.1" 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" build: dependency: transitive description: name: build - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.3" built_collection: dependency: transitive description: name: built_collection - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "5.1.0" built_value: dependency: transitive description: name: built_value - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "8.1.1" 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" cli_util: dependency: transitive description: name: cli_util - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "0.3.3" clock: dependency: transitive description: name: clock - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.1.0" code_builder: dependency: transitive description: name: code_builder - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "4.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" convert: dependency: transitive description: name: convert - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "3.0.1" crypto: dependency: transitive description: name: crypto - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "3.0.1" dart_style: dependency: transitive description: name: dart_style - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.3" 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.2" 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" 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" ffi: dependency: transitive description: name: ffi - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.1.2" file: dependency: transitive description: name: file - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "6.1.2" file_utils: dependency: transitive description: name: file_utils - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.0.1" fixnum: dependency: transitive description: name: fixnum - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.0.0" flutter: @@ -197,7 +197,7 @@ packages: dependency: "direct main" description: name: flutter_ume - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "0.2.0-dev.0" flutter_web_plugins: @@ -209,35 +209,35 @@ packages: dependency: transitive description: name: glob - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.1" globbing: dependency: transitive description: name: globbing - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.0.0" intl: dependency: transitive description: name: intl - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "0.17.0" js: dependency: transitive description: name: js - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "0.6.3" json_annotation: dependency: transitive description: name: json_annotation - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "4.0.1" lcov: @@ -253,149 +253,149 @@ packages: dependency: transitive description: name: logging - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.0.1" 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" mockito: dependency: "direct dev" description: name: mockito - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "5.0.12" package_config: dependency: transitive description: name: package_config - 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" path_provider_linux: dependency: transitive description: name: path_provider_linux - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.0.2" path_provider_platform_interface: dependency: transitive description: name: path_provider_platform_interface - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.1" path_provider_windows: dependency: transitive description: name: path_provider_windows - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted - version: "2.0.1" + version: "2.0.3" pedantic: dependency: transitive description: name: pedantic - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.11.1" platform: dependency: "direct main" description: name: platform - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "3.0.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.1" process: dependency: transitive description: name: process - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted - version: "4.2.1" + version: "4.2.3" pub_semver: dependency: transitive description: name: pub_semver - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.0" quiver: dependency: transitive description: name: quiver - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "3.0.1" shared_preferences: dependency: transitive description: name: shared_preferences - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.6" shared_preferences_linux: dependency: transitive description: name: shared_preferences_linux - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.0.2" shared_preferences_macos: dependency: transitive description: name: shared_preferences_macos - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.0.2" shared_preferences_platform_interface: dependency: transitive description: name: shared_preferences_platform_interface - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.0" shared_preferences_web: dependency: transitive description: name: shared_preferences_web - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.0.1" shared_preferences_windows: dependency: transitive description: name: shared_preferences_windows - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.0.2" sky_engine: dependency: transitive description: flutter @@ -405,112 +405,112 @@ packages: dependency: transitive description: name: source_gen - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.0.3" source_span: dependency: transitive description: name: source_span - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.8.1" 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" system_info: dependency: "direct main" description: name: system_info - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.0.1" 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.3.0" tuple: dependency: transitive description: name: tuple - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.0" 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" vm_service: dependency: transitive description: name: vm_service - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted - version: "7.1.1" + version: "7.2.0" watcher: dependency: transitive description: name: watcher - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.0.0" win32: dependency: transitive description: name: win32 - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.2.5" xdg_directories: dependency: transitive description: name: xdg_directories - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "0.2.0" yaml: dependency: transitive description: name: yaml - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "3.1.0" sdks: diff --git a/kits/flutter_ume_kit_perf/lib/components/memory_info/memory_info_page.dart b/kits/flutter_ume_kit_perf/lib/components/memory_info/memory_info_page.dart index a8f3c37..54aa530 100644 --- a/kits/flutter_ume_kit_perf/lib/components/memory_info/memory_info_page.dart +++ b/kits/flutter_ume_kit_perf/lib/components/memory_info/memory_info_page.dart @@ -293,9 +293,7 @@ class _PerRow extends StatelessWidget { class _MemoryDetail extends StatefulWidget { _MemoryDetail({Key? key, required this.detail, required this.service}) - : assert(service != null), - assert(detail != null), - super(key: key); + : super(key: key); final _DetailModel detail; diff --git a/kits/flutter_ume_kit_perf/pubspec.lock b/kits/flutter_ume_kit_perf/pubspec.lock index ee49a6d..7640372 100644 --- a/kits/flutter_ume_kit_perf/pubspec.lock +++ b/kits/flutter_ume_kit_perf/pubspec.lock @@ -5,147 +5,147 @@ packages: dependency: transitive description: name: _fe_analyzer_shared - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "22.0.0" analyzer: dependency: transitive description: name: analyzer - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.7.1" args: dependency: transitive description: name: args - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.2.0" async: dependency: transitive description: name: async - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.6.1" 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" build: dependency: transitive description: name: build - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.3" built_collection: dependency: transitive description: name: built_collection - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "5.1.0" built_value: dependency: transitive description: name: built_value - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "8.1.1" 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" cli_util: dependency: transitive description: name: cli_util - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "0.3.3" clock: dependency: transitive description: name: clock - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.1.0" code_builder: dependency: transitive description: name: code_builder - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "4.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" convert: dependency: transitive description: name: convert - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "3.0.1" crypto: dependency: transitive description: name: crypto - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "3.0.1" dart_style: dependency: transitive description: name: dart_style - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.3" 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" ffi: dependency: transitive description: name: ffi - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.1.2" file: dependency: transitive description: name: file - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "6.1.2" fixnum: dependency: transitive description: name: fixnum - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.0.0" flutter: @@ -176,7 +176,7 @@ packages: dependency: "direct main" description: name: flutter_ume - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "0.2.0-dev.0" flutter_web_plugins: @@ -188,28 +188,28 @@ packages: dependency: transitive description: name: glob - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.1" intl: dependency: transitive description: name: intl - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "0.17.0" js: dependency: transitive description: name: js - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "0.6.3" json_annotation: dependency: transitive description: name: json_annotation - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "4.0.1" lcov: @@ -225,149 +225,149 @@ packages: dependency: transitive description: name: logging - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.0.1" 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" mockito: dependency: "direct dev" description: name: mockito - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "5.0.12" package_config: dependency: transitive description: name: package_config - 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" path_provider_linux: dependency: transitive description: name: path_provider_linux - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.0.2" path_provider_platform_interface: dependency: transitive description: name: path_provider_platform_interface - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.1" path_provider_windows: dependency: transitive description: name: path_provider_windows - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted - version: "2.0.1" + version: "2.0.3" pedantic: dependency: transitive description: name: pedantic - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.11.1" platform: dependency: transitive description: name: platform - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "3.0.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.1" process: dependency: transitive description: name: process - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted - version: "4.2.1" + version: "4.2.3" pub_semver: dependency: transitive description: name: pub_semver - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.0" quiver: dependency: transitive description: name: quiver - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "3.0.1" shared_preferences: dependency: transitive description: name: shared_preferences - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.6" shared_preferences_linux: dependency: transitive description: name: shared_preferences_linux - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.0.2" shared_preferences_macos: dependency: transitive description: name: shared_preferences_macos - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.0.2" shared_preferences_platform_interface: dependency: transitive description: name: shared_preferences_platform_interface - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.0" shared_preferences_web: dependency: transitive description: name: shared_preferences_web - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.0.1" shared_preferences_windows: dependency: transitive description: name: shared_preferences_windows - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.0.2" sky_engine: dependency: transitive description: flutter @@ -377,105 +377,105 @@ packages: dependency: transitive description: name: source_gen - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.0.3" source_span: dependency: transitive description: name: source_span - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.8.1" 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.3.0" tuple: dependency: transitive description: name: tuple - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.0" 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" vm_service: dependency: "direct main" description: name: vm_service - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted - version: "7.1.1" + version: "7.2.0" watcher: dependency: transitive description: name: watcher - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.0.0" win32: dependency: transitive description: name: win32 - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.2.5" xdg_directories: dependency: transitive description: name: xdg_directories - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "0.2.0" yaml: dependency: transitive description: name: yaml - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "3.1.0" sdks: diff --git a/kits/flutter_ume_kit_show_code/lib/show_code/page_info_helper.dart b/kits/flutter_ume_kit_show_code/lib/show_code/page_info_helper.dart index bbf7718..e3ad9e3 100644 --- a/kits/flutter_ume_kit_show_code/lib/show_code/page_info_helper.dart +++ b/kits/flutter_ume_kit_show_code/lib/show_code/page_info_helper.dart @@ -50,7 +50,7 @@ class PageInfoHelper { double _area(RenderObject object) { final Size size = object.paintBounds.size; - return size == null ? double.maxFinite : size.width * size.height; + return size.width * size.height; } // Init selection of current page diff --git a/kits/flutter_ume_kit_show_code/lib/show_code/show_code.dart b/kits/flutter_ume_kit_show_code/lib/show_code/show_code.dart index 702bda7..7c2818a 100644 --- a/kits/flutter_ume_kit_show_code/lib/show_code/show_code.dart +++ b/kits/flutter_ume_kit_show_code/lib/show_code/show_code.dart @@ -109,7 +109,9 @@ class ShowCodeState extends State with WidgetsBindingObserver { height: 22, child: CircularProgressIndicator(), ), - if (showCodeList && _codeList != null && _codeList!.isNotEmpty) + if (showCodeList && + _codeList != null && + _codeList!.isNotEmpty) PopupMenuButton( padding: EdgeInsets.zero, icon: Icon(Icons.arrow_drop_down), @@ -172,7 +174,7 @@ class ShowCodeState extends State with WidgetsBindingObserver { pageInfoHelper .getCodeListByKeyword(value) .then((codeList) { - if (codeList != null && codeList.isNotEmpty) { + if (codeList.isNotEmpty) { showCodeList = true; _codeList = codeList; } else { diff --git a/kits/flutter_ume_kit_show_code/pubspec.lock b/kits/flutter_ume_kit_show_code/pubspec.lock index 2f13861..c86cd74 100644 --- a/kits/flutter_ume_kit_show_code/pubspec.lock +++ b/kits/flutter_ume_kit_show_code/pubspec.lock @@ -5,147 +5,147 @@ packages: dependency: transitive description: name: _fe_analyzer_shared - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "22.0.0" analyzer: dependency: transitive description: name: analyzer - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.7.1" args: dependency: transitive description: name: args - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.2.0" async: dependency: transitive description: name: async - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.6.1" 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" build: dependency: transitive description: name: build - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.3" built_collection: dependency: transitive description: name: built_collection - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "5.1.0" built_value: dependency: transitive description: name: built_value - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "8.1.1" 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" cli_util: dependency: transitive description: name: cli_util - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "0.3.3" clock: dependency: transitive description: name: clock - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.1.0" code_builder: dependency: transitive description: name: code_builder - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "4.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" convert: dependency: transitive description: name: convert - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "3.0.1" crypto: dependency: transitive description: name: crypto - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "3.0.1" dart_style: dependency: transitive description: name: dart_style - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.3" 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" ffi: dependency: transitive description: name: ffi - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.1.2" file: dependency: transitive description: name: file - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "6.1.2" fixnum: dependency: transitive description: name: fixnum - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.0.0" flutter: @@ -176,7 +176,7 @@ packages: dependency: "direct main" description: name: flutter_ume - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "0.2.0-dev.0" flutter_web_plugins: @@ -188,28 +188,28 @@ packages: dependency: transitive description: name: glob - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.1" intl: dependency: transitive description: name: intl - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "0.17.0" js: dependency: transitive description: name: js - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "0.6.3" json_annotation: dependency: transitive description: name: json_annotation - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "4.0.1" lcov: @@ -225,163 +225,163 @@ packages: dependency: transitive description: name: logging - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.0.1" 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" mime: dependency: transitive description: name: mime - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.0.0" mockito: dependency: "direct dev" description: name: mockito - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "5.0.12" package_config: dependency: transitive description: name: package_config - 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" path_provider_linux: dependency: transitive description: name: path_provider_linux - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.0.2" path_provider_platform_interface: dependency: transitive description: name: path_provider_platform_interface - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.1" path_provider_windows: dependency: transitive description: name: path_provider_windows - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted - version: "2.0.1" + version: "2.0.3" pedantic: dependency: transitive description: name: pedantic - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.11.1" platform: dependency: transitive description: name: platform - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "3.0.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.1" process: dependency: transitive description: name: process - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "4.2.3" pub_semver: dependency: transitive description: name: pub_semver - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.0" quiver: dependency: transitive description: name: quiver - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "3.0.1" share: dependency: "direct main" description: name: share - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.4" shared_preferences: dependency: transitive description: name: shared_preferences - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.6" shared_preferences_linux: dependency: transitive description: name: shared_preferences_linux - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.0.2" shared_preferences_macos: dependency: transitive description: name: shared_preferences_macos - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.0.2" shared_preferences_platform_interface: dependency: transitive description: name: shared_preferences_platform_interface - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.0" shared_preferences_web: dependency: transitive description: name: shared_preferences_web - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.0.1" shared_preferences_windows: dependency: transitive description: name: shared_preferences_windows - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.0.2" sky_engine: dependency: transitive description: flutter @@ -391,105 +391,105 @@ packages: dependency: transitive description: name: source_gen - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.0.3" source_span: dependency: transitive description: name: source_span - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.8.1" 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: "direct main" 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.3.0" tuple: dependency: transitive description: name: tuple - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.0" 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" vm_service: dependency: "direct main" description: name: vm_service - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted - version: "7.1.1" + version: "7.2.0" watcher: dependency: transitive description: name: watcher - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.0.0" win32: dependency: transitive description: name: win32 - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.2.5" xdg_directories: dependency: transitive description: name: xdg_directories - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "0.2.0" yaml: dependency: transitive description: name: yaml - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "3.1.0" sdks: diff --git a/kits/flutter_ume_kit_ui/coverage/lcov.info b/kits/flutter_ume_kit_ui/coverage/lcov.info index 18267a2..6256b06 100644 --- a/kits/flutter_ume_kit_ui/coverage/lcov.info +++ b/kits/flutter_ume_kit_ui/coverage/lcov.info @@ -299,7 +299,7 @@ DA:244,2 LF:100 LH:62 end_of_record -SF:lib/components/color_sucker/color_sucker.dart +SF:lib/components/color_picker/color_picker.dart DA:14,1 DA:18,1 DA:20,1 diff --git a/kits/flutter_ume_kit_ui/lib/components/color_sucker/color_sucker.dart b/kits/flutter_ume_kit_ui/lib/components/color_picker/color_picker.dart similarity index 95% rename from kits/flutter_ume_kit_ui/lib/components/color_sucker/color_sucker.dart rename to kits/flutter_ume_kit_ui/lib/components/color_picker/color_picker.dart index fc720c8..6fda087 100644 --- a/kits/flutter_ume_kit_ui/lib/components/color_sucker/color_sucker.dart +++ b/kits/flutter_ume_kit_ui/lib/components/color_picker/color_picker.dart @@ -7,27 +7,27 @@ import 'package:image/image.dart' as img; import 'package:flutter_ume/flutter_ume.dart'; import 'icon.dart' as icon; -class ColorSucker extends StatefulWidget implements Pluggable { +class ColorPicker extends StatefulWidget implements Pluggable { final double scale; final Size size; - const ColorSucker({ + const ColorPicker({ Key? key, this.scale = 10.0, this.size = const Size(100, 100), }) : super(key: key); @override - _ColorSuckerState createState() => _ColorSuckerState(); + _ColorPickerState createState() => _ColorPickerState(); @override Widget buildWidget(BuildContext? context) => this; @override - String get name => 'ColorSucker'; + String get name => 'ColorPicker'; @override - String get displayName => 'ColorSucker'; + String get displayName => 'ColorPicker'; @override void onTrigger() {} @@ -37,7 +37,7 @@ class ColorSucker extends StatefulWidget implements Pluggable { MemoryImage(base64Decode(icon.iconData)); } -class _ColorSuckerState extends State { +class _ColorPickerState extends State { late Size _magnifierSize; double? _scale; BorderRadius? _radius; @@ -62,7 +62,7 @@ class _ColorSuckerState extends State { } @override - void didUpdateWidget(ColorSucker oldWidget) { + void didUpdateWidget(ColorPicker oldWidget) { if (oldWidget.size != widget.size) { _magnifierSize = widget.size; _radius = BorderRadius.circular(_magnifierSize.longestSide); diff --git a/kits/flutter_ume_kit_ui/lib/components/color_sucker/icon.dart b/kits/flutter_ume_kit_ui/lib/components/color_picker/icon.dart similarity index 100% rename from kits/flutter_ume_kit_ui/lib/components/color_sucker/icon.dart rename to kits/flutter_ume_kit_ui/lib/components/color_picker/icon.dart diff --git a/kits/flutter_ume_kit_ui/lib/components/hit_test.dart b/kits/flutter_ume_kit_ui/lib/components/hit_test.dart index 974c389..ce3e626 100644 --- a/kits/flutter_ume_kit_ui/lib/components/hit_test.dart +++ b/kits/flutter_ume_kit_ui/lib/components/hit_test.dart @@ -29,7 +29,6 @@ class HitTest { final List children = object.debugDescribeChildren(); for (int i = children.length - 1; i >= 0; i -= 1) { final DiagnosticsNode diagnostics = children[i]; - assert(diagnostics != null); if (diagnostics.style == DiagnosticsTreeStyle.offstage || diagnostics.value is! RenderObject) continue; final RenderObject child = diagnostics.value as RenderObject; diff --git a/kits/flutter_ume_kit_ui/lib/components/widget_detail_inspector/widget_detail_inspector.dart b/kits/flutter_ume_kit_ui/lib/components/widget_detail_inspector/widget_detail_inspector.dart index ba2ccde..7552a1c 100644 --- a/kits/flutter_ume_kit_ui/lib/components/widget_detail_inspector/widget_detail_inspector.dart +++ b/kits/flutter_ume_kit_ui/lib/components/widget_detail_inspector/widget_detail_inspector.dart @@ -112,9 +112,7 @@ class _DetailModel { } class _InfoPage extends StatefulWidget { - const _InfoPage({Key? key, required this.elements}) - : assert(elements != null), - super(key: key); + const _InfoPage({Key? key, required this.elements}) : super(key: key); final List elements; @@ -243,9 +241,7 @@ class __InfoPageState extends State<_InfoPage> { } class _DetailContent extends StatelessWidget { - const _DetailContent({Key? key, required this.element}) - : assert(element != null), - super(key: key); + const _DetailContent({Key? key, required this.element}) : super(key: key); final Element element; diff --git a/kits/flutter_ume_kit_ui/lib/flutter_ume_kit_ui.dart b/kits/flutter_ume_kit_ui/lib/flutter_ume_kit_ui.dart index 329c47a..4ebd641 100644 --- a/kits/flutter_ume_kit_ui/lib/flutter_ume_kit_ui.dart +++ b/kits/flutter_ume_kit_ui/lib/flutter_ume_kit_ui.dart @@ -1,6 +1,6 @@ library flutter_ume_kit_ui; export 'package:flutter_ume_kit_ui/components/align_ruler/align_ruler.dart'; -export 'package:flutter_ume_kit_ui/components/color_sucker/color_sucker.dart'; +export 'package:flutter_ume_kit_ui/components/color_picker/color_picker.dart'; export 'package:flutter_ume_kit_ui/components/widget_info_inspector/widget_info_inspector.dart'; export 'package:flutter_ume_kit_ui/components/widget_detail_inspector/widget_detail_inspector.dart'; diff --git a/kits/flutter_ume_kit_ui/pubspec.lock b/kits/flutter_ume_kit_ui/pubspec.lock index 34be25c..451a973 100644 --- a/kits/flutter_ume_kit_ui/pubspec.lock +++ b/kits/flutter_ume_kit_ui/pubspec.lock @@ -5,154 +5,154 @@ packages: dependency: transitive description: name: _fe_analyzer_shared - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "22.0.0" analyzer: dependency: transitive description: name: analyzer - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.7.1" archive: dependency: transitive description: name: archive - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "3.1.2" args: dependency: transitive description: name: args - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.2.0" async: dependency: transitive description: name: async - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.6.1" 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" build: dependency: transitive description: name: build - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.3" built_collection: dependency: transitive description: name: built_collection - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "5.1.0" built_value: dependency: transitive description: name: built_value - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "8.1.1" 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" cli_util: dependency: transitive description: name: cli_util - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "0.3.3" clock: dependency: transitive description: name: clock - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.1.0" code_builder: dependency: transitive description: name: code_builder - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "4.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" convert: dependency: transitive description: name: convert - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "3.0.1" crypto: dependency: transitive description: name: crypto - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "3.0.1" dart_style: dependency: transitive description: name: dart_style - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.3" 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" ffi: dependency: transitive description: name: ffi - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.1.2" file: dependency: transitive description: name: file - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "6.1.2" fixnum: dependency: transitive description: name: fixnum - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.0.0" flutter: @@ -183,7 +183,7 @@ packages: dependency: "direct main" description: name: flutter_ume - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "0.2.0-dev.0" flutter_web_plugins: @@ -195,35 +195,35 @@ packages: dependency: transitive description: name: glob - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.1" image: dependency: "direct main" description: name: image - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "3.0.2" intl: dependency: transitive description: name: intl - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "0.17.0" js: dependency: transitive description: name: js - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "0.6.3" json_annotation: dependency: transitive description: name: json_annotation - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "4.0.1" lcov: @@ -239,156 +239,156 @@ packages: dependency: transitive description: name: logging - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.0.1" 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" mockito: dependency: "direct dev" description: name: mockito - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "5.0.12" package_config: dependency: transitive description: name: package_config - 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" path_provider_linux: dependency: transitive description: name: path_provider_linux - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.0.2" path_provider_platform_interface: dependency: transitive description: name: path_provider_platform_interface - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.1" path_provider_windows: dependency: transitive description: name: path_provider_windows - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted - version: "2.0.1" + version: "2.0.3" pedantic: dependency: transitive description: name: pedantic - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.11.1" petitparser: dependency: transitive description: name: petitparser - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "4.1.0" platform: dependency: transitive description: name: platform - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "3.0.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.1" process: dependency: transitive description: name: process - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "4.2.3" pub_semver: dependency: transitive description: name: pub_semver - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.0" quiver: dependency: transitive description: name: quiver - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "3.0.1" shared_preferences: dependency: transitive description: name: shared_preferences - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.6" shared_preferences_linux: dependency: transitive description: name: shared_preferences_linux - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.0.2" shared_preferences_macos: dependency: transitive description: name: shared_preferences_macos - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.0.2" shared_preferences_platform_interface: dependency: transitive description: name: shared_preferences_platform_interface - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.0" shared_preferences_web: dependency: transitive description: name: shared_preferences_web - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.0.1" shared_preferences_windows: dependency: transitive description: name: shared_preferences_windows - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.0.2" sky_engine: dependency: transitive description: flutter @@ -398,112 +398,112 @@ packages: dependency: transitive description: name: source_gen - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.0.3" source_span: dependency: transitive description: name: source_span - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.8.1" 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.3.0" tuple: dependency: transitive description: name: tuple - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.0" 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" vm_service: dependency: transitive description: name: vm_service - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted - version: "7.1.1" + version: "7.2.0" watcher: dependency: transitive description: name: watcher - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.0.0" win32: dependency: transitive description: name: win32 - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.2.5" xdg_directories: dependency: transitive description: name: xdg_directories - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "0.2.0" xml: dependency: transitive description: name: xml - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "5.1.2" yaml: dependency: transitive description: name: yaml - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "3.1.0" sdks: diff --git a/kits/flutter_ume_kit_ui/test/components/color_sucker/color_sucker_test.dart b/kits/flutter_ume_kit_ui/test/components/color_picker/color_picker_test.dart similarity index 85% rename from kits/flutter_ume_kit_ui/test/components/color_sucker/color_sucker_test.dart rename to kits/flutter_ume_kit_ui/test/components/color_picker/color_picker_test.dart index ffddbeb..8c29b34 100644 --- a/kits/flutter_ume_kit_ui/test/components/color_sucker/color_sucker_test.dart +++ b/kits/flutter_ume_kit_ui/test/components/color_picker/color_picker_test.dart @@ -2,14 +2,14 @@ import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_ume/core/ui/global.dart'; -import 'package:flutter_ume_kit_ui/components/color_sucker/color_sucker.dart'; +import 'package:flutter_ume_kit_ui/components/color_picker/color_picker.dart'; import '../../mock_classes.dart'; void main() { - group('ColorSucker', () { + group('ColorPicker', () { test('Pluggable', () { - final pluggable = ColorSucker(); + final pluggable = ColorPicker(); final widget = pluggable.buildWidget(MockContext()); final name = pluggable.name; final onTrigger = pluggable.onTrigger; @@ -21,10 +21,10 @@ void main() { expect(onTrigger, isA()); expect(imageProvider, isNotNull); }); - testWidgets('ColorSucker pump widget', (tester) async { + testWidgets('ColorPicker pump widget', (tester) async { WidgetsFlutterBinding.ensureInitialized(); - final colorSucker = ColorSucker(); + final colorSucker = ColorPicker(); await tester.pumpWidget(MaterialApp( key: rootKey, @@ -36,10 +36,10 @@ void main() { expect(colorSucker, isNotNull); }); - testWidgets('ColorSucker Pan the point', (tester) async { + testWidgets('ColorPicker Pan the point', (tester) async { WidgetsFlutterBinding.ensureInitialized(); - final colorSucker = ColorSucker(); + final colorSucker = ColorPicker(); await tester.pumpWidget(MaterialApp( key: rootKey, @@ -67,10 +67,10 @@ void main() { expect(colorSucker, isNotNull); }); - testWidgets('ColorSucker Pan the toolbar', (tester) async { + testWidgets('ColorPicker Pan the toolbar', (tester) async { WidgetsFlutterBinding.ensureInitialized(); - final colorSucker = ColorSucker(); + final colorSucker = ColorPicker(); await tester.pumpWidget(MaterialApp( key: rootKey, diff --git a/lib/core/red_dot.dart b/lib/core/red_dot.dart index 593afe3..c9f1dfe 100644 --- a/lib/core/red_dot.dart +++ b/lib/core/red_dot.dart @@ -51,7 +51,7 @@ class _RedDotState extends State { @override Widget build(BuildContext context) { - if (_count == null || _count == 0) { + if (_count == 0) { return Container(); } return Container( diff --git a/lib/core/store_manager.dart b/lib/core/store_manager.dart index eed2f44..497ffc5 100644 --- a/lib/core/store_manager.dart +++ b/lib/core/store_manager.dart @@ -13,7 +13,7 @@ class PluginStoreManager { } void storePlugins(List plugins) async { - if (plugins == null || plugins.isEmpty) { + if (plugins.isEmpty) { return; } final SharedPreferences prefs = await _sharedPref; @@ -26,9 +26,6 @@ class PluginStoreManager { } void storeMinimalToolbarSwitch(bool value) async { - if (value == null) { - return; - } final SharedPreferences prefs = await _sharedPref; await prefs.setBool(_minimalToolbarSwitch, value); } diff --git a/lib/core/ui/dragable_widget.dart b/lib/core/ui/dragable_widget.dart index 7167853..229041d 100644 --- a/lib/core/ui/dragable_widget.dart +++ b/lib/core/ui/dragable_widget.dart @@ -24,9 +24,7 @@ class DragableGridView extends StatefulWidget { this.dragCompletion, required this.itemBuilder, required this.canAccept, - }) : assert(itemBuilder != null), - assert(canAccept != null), - assert(dataList != null && dataList.length >= 0), + }) : assert(dataList.length >= 0), super(key: key); @override diff --git a/lib/core/ui/icon_cache.dart b/lib/core/ui/icon_cache.dart index db96b64..4f9be59 100644 --- a/lib/core/ui/icon_cache.dart +++ b/lib/core/ui/icon_cache.dart @@ -6,8 +6,7 @@ class IconCache { static Widget? icon({ required Pluggable pluggableInfo, }) { - if (!_icons.containsKey(pluggableInfo.name) && - pluggableInfo.iconImageProvider != null) { + if (!_icons.containsKey(pluggableInfo.name)) { final i = Image(image: pluggableInfo.iconImageProvider); _icons.putIfAbsent(pluggableInfo.name, () => i); } else if (!_icons.containsKey(pluggableInfo.name)) { diff --git a/lib/core/ui/menu_page.dart b/lib/core/ui/menu_page.dart index ff342e1..b36c0a9 100644 --- a/lib/core/ui/menu_page.dart +++ b/lib/core/ui/menu_page.dart @@ -59,7 +59,7 @@ class _MenuPageState extends State void _saveData(List data) { List l = data.map((f) => f!.name).toList(); - if (l == null || l.isEmpty) { + if (l.isEmpty) { return; } Future.delayed(Duration(milliseconds: 500), () { diff --git a/lib/core/ui/root_widget.dart b/lib/core/ui/root_widget.dart index 8875580..6b83ce4 100644 --- a/lib/core/ui/root_widget.dart +++ b/lib/core/ui/root_widget.dart @@ -200,9 +200,7 @@ class __ContentPageState extends State<_ContentPage> { MenuAction itemTapAction = (pluginData) { _currentSelected = pluginData; _handleAction(_context, pluginData!); - if (pluginData.onTrigger != null) { - pluginData.onTrigger(); - } + pluginData.onTrigger(); }; _menuPage = MenuPage( action: itemTapAction, diff --git a/lib/core/ui/toolbar_widget.dart b/lib/core/ui/toolbar_widget.dart index 47ad603..f169af1 100644 --- a/lib/core/ui/toolbar_widget.dart +++ b/lib/core/ui/toolbar_widget.dart @@ -200,7 +200,7 @@ class __ToolBarContentState extends State<_ToolBarContent> { void _saveData(List data) { List l = data.map((f) => f!.name).toList(); - if (l == null || l.isEmpty) { + if (l.isEmpty) { return; } Future.delayed(Duration(milliseconds: 500), () { diff --git a/lib/service/inspector/inspector_overlay.dart b/lib/service/inspector/inspector_overlay.dart index 58b55c1..228207a 100644 --- a/lib/service/inspector/inspector_overlay.dart +++ b/lib/service/inspector/inspector_overlay.dart @@ -40,8 +40,7 @@ class _RenderInspectorOverlay extends RenderBox { required InspectorSelection selection, required this.needDescription, required this.needEdges, - }) : _selection = selection, - assert(selection != null); + }) : _selection = selection; final bool needDescription; final bool needEdges; @@ -84,8 +83,7 @@ class _InspectorOverlayLayer extends Layer { required this.selection, required this.needDescription, required this.needEdges, - }) : assert(overlayRect != null), - assert(selection != null); + }); InspectorSelection selection; @@ -249,7 +247,7 @@ class _InspectorOverlayLayer extends Layer { } class _SelectionInfo { - const _SelectionInfo(this.selection) : assert(selection != null); + const _SelectionInfo(this.selection); final InspectorSelection selection; RenderObject? get renderObject => selection.current; diff --git a/lib/util/flutter_logo.dart b/lib/util/flutter_logo.dart index 7cfeaef..afac052 100644 --- a/lib/util/flutter_logo.dart +++ b/lib/util/flutter_logo.dart @@ -121,12 +121,7 @@ class FlutterLogoDecoration extends Decoration { ui.Color this.textColor = const Color(0xFF616161), this.style = FlutterLogoStyle.markOnly, EdgeInsets this.margin = EdgeInsets.zero, - }) : assert(lightColor != null), - assert(darkColor != null), - assert(textColor != null), - assert(style != null), - assert(margin != null), - _position = identical(style, FlutterLogoStyle.markOnly) + }) : _position = identical(style, FlutterLogoStyle.markOnly) ? 0.0 : identical(style, FlutterLogoStyle.horizontal) ? 1.0 @@ -187,11 +182,8 @@ class FlutterLogoDecoration extends Decoration { assert(lightColor != null && darkColor != null && textColor != null && - style != null && margin != null && - _position != null && _position.isFinite && - _opacity != null && _opacity >= 0.0 && _opacity <= 1.0); return true; @@ -215,7 +207,6 @@ class FlutterLogoDecoration extends Decoration { /// * [Decoration.lerp], which interpolates between arbitrary decorations. static FlutterLogoDecoration? lerp( FlutterLogoDecoration? a, FlutterLogoDecoration? b, double t) { - assert(t != null); assert(a == null || a.debugAssertIsValid()); assert(b == null || b.debugAssertIsValid()); if (a == null && b == null) return null; @@ -326,8 +317,7 @@ class FlutterLogoDecoration extends Decoration { /// An object that paints a [BoxDecoration] into a canvas. class _FlutterLogoPainter extends BoxPainter { _FlutterLogoPainter(this._config) - : assert(_config != null), - assert(_config.debugAssertIsValid()), + : assert(_config.debugAssertIsValid()), super(null) { _prepareText(); } diff --git a/lib/util/store_mixin.dart b/lib/util/store_mixin.dart index 142bf1e..36a4dcd 100644 --- a/lib/util/store_mixin.dart +++ b/lib/util/store_mixin.dart @@ -27,6 +27,6 @@ mixin StoreMixin { Future fetchWithKey(String key) async { final SharedPreferences prefs = await _sharedPref; final savedKey = 'ume_${runtimeType.toString}_$key'; - return await prefs.get(savedKey); + return prefs.get(savedKey); } } diff --git a/pubspec.lock b/pubspec.lock index dd7fded..ffb3514 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,147 +5,147 @@ packages: dependency: transitive description: name: _fe_analyzer_shared - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "22.0.0" analyzer: dependency: transitive description: name: analyzer - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.7.1" args: dependency: transitive description: name: args - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.2.0" async: dependency: transitive description: name: async - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.6.1" 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" build: dependency: transitive description: name: build - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.3" built_collection: dependency: transitive description: name: built_collection - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "5.1.0" built_value: dependency: transitive description: name: built_value - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "8.1.1" 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" cli_util: dependency: transitive description: name: cli_util - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "0.3.3" clock: dependency: transitive description: name: clock - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.1.0" code_builder: dependency: transitive description: name: code_builder - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "4.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" convert: dependency: transitive description: name: convert - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "3.0.1" crypto: dependency: transitive description: name: crypto - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "3.0.1" dart_style: dependency: transitive description: name: dart_style - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.3" 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" ffi: dependency: transitive description: name: ffi - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.1.2" file: dependency: transitive description: name: file - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "6.1.2" fixnum: dependency: transitive description: name: fixnum - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.0.0" flutter: @@ -181,28 +181,28 @@ packages: dependency: transitive description: name: glob - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.1" intl: dependency: transitive description: name: intl - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "0.17.0" js: dependency: transitive description: name: js - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "0.6.3" json_annotation: dependency: transitive description: name: json_annotation - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "4.0.1" lcov: @@ -218,149 +218,149 @@ packages: dependency: transitive description: name: logging - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.0.1" 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" mockito: dependency: "direct dev" description: name: mockito - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "5.0.12" package_config: dependency: transitive description: name: package_config - 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" path_provider_linux: dependency: transitive description: name: path_provider_linux - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.0.2" path_provider_platform_interface: dependency: transitive description: name: path_provider_platform_interface - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.1" path_provider_windows: dependency: transitive description: name: path_provider_windows - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted - version: "2.0.1" + version: "2.0.3" pedantic: dependency: transitive description: name: pedantic - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.11.1" platform: dependency: transitive description: name: platform - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "3.0.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.1" process: dependency: transitive description: name: process - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted - version: "4.2.1" + version: "4.2.3" pub_semver: dependency: transitive description: name: pub_semver - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.0" quiver: dependency: transitive description: name: quiver - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "3.0.1" shared_preferences: dependency: "direct main" description: name: shared_preferences - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.6" shared_preferences_linux: dependency: transitive description: name: shared_preferences_linux - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.0.2" shared_preferences_macos: dependency: transitive description: name: shared_preferences_macos - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.0.2" shared_preferences_platform_interface: dependency: transitive description: name: shared_preferences_platform_interface - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.0" shared_preferences_web: dependency: transitive description: name: shared_preferences_web - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.0.1" shared_preferences_windows: dependency: transitive description: name: shared_preferences_windows - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.0.2" sky_engine: dependency: transitive description: flutter @@ -370,105 +370,105 @@ packages: dependency: transitive description: name: source_gen - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.0.3" source_span: dependency: transitive description: name: source_span - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.8.1" 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: "direct main" 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.3.0" tuple: dependency: "direct main" description: name: tuple - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.0" 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" vm_service: dependency: "direct main" description: name: vm_service - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted - version: "7.1.1" + version: "7.2.0" watcher: dependency: transitive description: name: watcher - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.0.0" win32: dependency: transitive description: name: win32 - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.2.5" xdg_directories: dependency: transitive description: name: xdg_directories - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "0.2.0" yaml: dependency: transitive description: name: yaml - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "3.1.0" sdks: diff --git a/test/service/vm_service/service_wrapper_test.dart b/test/service/vm_service/service_wrapper_test.dart index 1e8285a..989819e 100644 --- a/test/service/vm_service/service_wrapper_test.dart +++ b/test/service/vm_service/service_wrapper_test.dart @@ -1,6 +1,5 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_ume/service/vm_service/service_wrapper.dart'; -import 'package:mockito/mockito.dart'; void main() { group('ServiceWrapper', () { diff --git a/test/util/store_mixin_test.dart b/test/util/store_mixin_test.dart index 5ecd4ad..213a21c 100644 --- a/test/util/store_mixin_test.dart +++ b/test/util/store_mixin_test.dart @@ -1,12 +1,5 @@ -import 'dart:async'; -import 'dart:collection'; -import 'dart:typed_data'; - -import 'package:flutter/material.dart'; -import 'package:flutter/widgets.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:shared_preferences/shared_preferences.dart'; -import 'package:tuple/tuple.dart'; import '../utils/mock_classes.dart'; From 7015fe90ba82b083828a21df7e799bbb675fcb0d Mon Sep 17 00:00:00 2001 From: kevinzhang19870314 Date: Fri, 30 Jul 2021 18:09:19 +0800 Subject: [PATCH 2/2] feat: add a handler for color picker kit to make it more like magnifier, also to make it more accurate to picker a color --- .../components/color_picker/color_picker.dart | 99 ++++++++++++------ screenshots/color-picker.jpg | Bin 0 -> 151228 bytes 2 files changed, 67 insertions(+), 32 deletions(-) create mode 100644 screenshots/color-picker.jpg diff --git a/kits/flutter_ume_kit_ui/lib/components/color_picker/color_picker.dart b/kits/flutter_ume_kit_ui/lib/components/color_picker/color_picker.dart index 6fda087..73d2720 100644 --- a/kits/flutter_ume_kit_ui/lib/components/color_picker/color_picker.dart +++ b/kits/flutter_ume_kit_ui/lib/components/color_picker/color_picker.dart @@ -6,6 +6,7 @@ import 'package:flutter/rendering.dart'; import 'package:image/image.dart' as img; import 'package:flutter_ume/flutter_ume.dart'; import 'icon.dart' as icon; +import 'dart:math' as math; class ColorPicker extends StatefulWidget implements Pluggable { final double scale; @@ -39,11 +40,13 @@ class ColorPicker extends StatefulWidget implements Pluggable { class _ColorPickerState extends State { late Size _magnifierSize; + late Size _handlerSize; double? _scale; BorderRadius? _radius; Color _currentColor = Colors.white; img.Image? _snapshot; Offset _magnifierPosition = Offset.zero; + Offset _handlerPosition = Offset.zero; double _toolBarY = 60.0; Matrix4 _matrix = Matrix4.identity(); late Size _windowSize; @@ -53,11 +56,14 @@ class _ColorPickerState extends State { void initState() { _windowSize = ui.window.physicalSize / ui.window.devicePixelRatio; _magnifierSize = widget.size; + _handlerSize = Size(_magnifierSize.width / 2.5, _magnifierSize.height / 2); _scale = widget.scale; _radius = BorderRadius.circular(_magnifierSize.longestSide); _matrix = Matrix4.identity()..scale(widget.scale); _magnifierPosition = _windowSize.center(Offset.zero) - _magnifierSize.center(Offset.zero); + _handlerPosition = _windowSize.center(Offset.zero) - + _handlerSize.center(Offset(-_handlerSize.width, -_handlerSize.height)); super.initState(); } @@ -75,16 +81,18 @@ class _ColorPickerState extends State { } void _onPanUpdate(DragUpdateDetails dragDetails) { - _magnifierPosition = - dragDetails.globalPosition - _magnifierSize.center(Offset.zero); - double newX = dragDetails.globalPosition.dx; - double newY = dragDetails.globalPosition.dy; + _magnifierPosition = dragDetails.globalPosition - + _magnifierSize.center(Offset(_handlerSize.width, _handlerSize.height)); + _handlerPosition = + dragDetails.globalPosition - _handlerSize.center(Offset.zero); + double newX = dragDetails.globalPosition.dx - _magnifierSize.width / 2; + double newY = dragDetails.globalPosition.dy - _magnifierSize.height / 2; final Matrix4 newMatrix = Matrix4.identity() ..translate(newX, newY) ..scale(_scale, _scale) ..translate(-newX, -newY); _matrix = newMatrix; - _searchPixel(dragDetails.globalPosition); + _searchPixel(Offset(newX, newY)); setState(() {}); } @@ -146,8 +154,11 @@ class _ColorPickerState extends State { Widget build(BuildContext context) { if (_windowSize.isEmpty) { _windowSize = MediaQuery.of(context).size; - _magnifierPosition = - _windowSize.center(Offset.zero) - _magnifierSize.center(Offset.zero); + _magnifierPosition = _windowSize.center(Offset.zero) - + _magnifierSize + .center(Offset(_handlerSize.width, _handlerSize.height)); + _handlerPosition = + _windowSize.center(Offset.zero) - _handlerSize.center(Offset.zero); } Widget toolBar = Container( width: MediaQuery.of(context).size.width - 32, @@ -193,41 +204,65 @@ class _ColorPickerState extends State { alignment: Alignment.center, children: [ Positioned( - left: 0, - top: _toolBarY, - child: GestureDetector( - onVerticalDragUpdate: _toolBarPanUpdate, child: toolBar)), + left: 0, + top: _toolBarY, + child: GestureDetector( + onVerticalDragUpdate: _toolBarPanUpdate, + child: toolBar, + ), + ), + Positioned( + left: _handlerPosition.dx, + top: _handlerPosition.dy, + child: Transform.rotate( + angle: -math.pi / 4, + child: ClipRect( + child: GestureDetector( + onPanStart: _onPanStart, + onPanEnd: _onPanEnd, + onPanUpdate: _onPanUpdate, + child: Container( + height: _handlerSize.height, + width: _handlerSize.width, + decoration: BoxDecoration( + color: Colors.grey, + borderRadius: BorderRadius.zero, + border: Border.all( + color: Colors.grey, + width: 3, + ), + ), + ), + ), + ), + ), + ), Positioned( left: _magnifierPosition.dx, top: _magnifierPosition.dy, child: ClipRRect( borderRadius: _radius, - child: GestureDetector( - onPanStart: _onPanStart, - onPanEnd: _onPanEnd, - onPanUpdate: _onPanUpdate, - child: BackdropFilter( - filter: ui.ImageFilter.matrix(_matrix.storage, - filterQuality: FilterQuality.none), - child: Container( - child: Center( - child: Container( - height: 1, - width: 1, - decoration: const BoxDecoration( - color: Colors.grey, shape: BoxShape.circle), - ), + child: BackdropFilter( + filter: ui.ImageFilter.matrix(_matrix.storage, + filterQuality: FilterQuality.none), + child: Container( + child: Center( + child: Container( + height: 5, + width: 5, + decoration: const BoxDecoration( + color: Colors.red, shape: BoxShape.circle), ), - height: _magnifierSize.height, - width: _magnifierSize.width, - decoration: BoxDecoration( - borderRadius: _radius, - border: Border.all(color: Colors.grey, width: 3)), ), + height: _magnifierSize.height, + width: _magnifierSize.width, + decoration: BoxDecoration( + borderRadius: _radius, + border: Border.all(color: Colors.grey, width: 3)), ), ), ), - ) + ), ], ); } diff --git a/screenshots/color-picker.jpg b/screenshots/color-picker.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9a9faee48ee2611d2370b52298248972a53d2b4b GIT binary patch literal 151228 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