Giter VIP home page Giter VIP logo

flutter_ume's Introduction

flutter_ume

简体中文

UME is an in-app debug kits platform for Flutter apps.

platforms license

pub package pub package pub package pub package pub package

Since ^1.0.0, flutter_ume starts adapting to the Flutter 3. See [Quick Start] to learn more.

banner

Scan QR code or click link to download apk. Try it now! https://github.com/bytedance/flutter_ume/releases/download/v0.2.1.0/app-debug.apk

There are 13 plugin kits built in the latest open source version of UME. Developer could create custom plugin kits, and integrate them into UME. Visit Develop plugin kits for UME for more details.

Please see Plugins from community to make your flutter_ume stronger.

Quick Start

All packages whose names are prefixed with flutter_ume_kit_ are function plug-ins of UME, and users can access them according to demand

  1. Edit pubspec.yaml, and add dependencies.

    Compatible with Flutter 3 since version 1.0.0.

    dev_dependencies:
      flutter_ume: ^1.0.1
      flutter_ume_kit_ui: ^1.0.0
      flutter_ume_kit_device: ^1.0.0
      flutter_ume_kit_perf: ^1.0.0
      flutter_ume_kit_show_code: ^1.0.0
      flutter_ume_kit_console: ^1.0.0
      flutter_ume_kit_dio: ^1.0.0

    ↓ Null-safety version, compatible with Flutter 2.x

    dev_dependencies: # Don't use UME in release mode
      flutter_ume: ^0.3.0+1
      flutter_ume_kit_ui: ^0.3.0+1
      flutter_ume_kit_device: ^0.3.0
      flutter_ume_kit_perf: ^0.3.0
      flutter_ume_kit_show_code: ^0.3.0
      flutter_ume_kit_console: ^0.3.0
      flutter_ume_kit_dio: ^0.3.0

    ↓ Non-null-safety version, compatible with Flutter 1.x

    dev_dependencies: # Don't use UME in release mode
      flutter_ume: ^0.1.1
      flutter_ume_kit_ui: ^0.1.1
      flutter_ume_kit_device: ^0.1.1
      flutter_ume_kit_perf: ^0.1.1
      flutter_ume_kit_show_code: ^0.1.1
      flutter_ume_kit_console: ^0.1.1 
  2. Run flutter pub get

  3. Import packages

    import 'package:flutter_ume/flutter_ume.dart'; // UME framework
    import 'package:flutter_ume_kit_ui/flutter_ume_kit_ui.dart'; // UI kits
    import 'package:flutter_ume_kit_perf/flutter_ume_kit_perf.dart'; // Performance kits
    import 'package:flutter_ume_kit_show_code/flutter_ume_kit_show_code.dart'; // Show Code
    import 'package:flutter_ume_kit_device/flutter_ume_kit_device.dart'; // Device info
    import 'package:flutter_ume_kit_console/flutter_ume_kit_console.dart'; // Show debugPrint
    import 'package:flutter_ume_kit_dio/flutter_ume_kit_dio.dart'; // Dio Inspector
  4. Edit main method of your app, register plugin kits and initial UME

    void main() {
      if (kDebugMode) {
        PluginManager.instance                                 // Register plugin kits
          ..register(WidgetInfoInspector())
          ..register(WidgetDetailInspector())
          ..register(ColorSucker())
          ..register(AlignRuler())
          ..register(ColorPicker())                            // New feature
          ..register(TouchIndicator())                         // New feature
          ..register(Performance())
          ..register(ShowCode())
          ..register(MemoryInfoPage())
          ..register(CpuInfoPage())
          ..register(DeviceInfoPanel())
          ..register(Console())
          ..register(DioInspector(dio: dio));                  // Pass in your Dio instance
        // After flutter_ume 0.3.0
        runApp(UMEWidget(child: MyApp(), enable: true));
        // Before flutter_ume 0.3.0
        runApp(injectUMEWidget(child: MyApp(), enable: true));
      } else {
        runApp(MyApp());
      }
    }
  5. flutter run for running or flutter build apk --debugflutter build ios --debug for building productions.

Some functions rely on VM Service, and additional parameters need to be added for local operation to ensure that it can connect to the VM Service.

Flutter 2.0.x, 2.2.x and other versions run on real devices, flutter run needs to add the --disable-dds parameter. After Pull Request #80900 merging, --disable-dds was renamed to --no-dds.

IMPORTANT

From 0.1.1/0.2.1 version,we don't need set useRootNavigator: false. The following section only applies to versions before version 0.1.1/0.2.1 .

Since UME manages the routing stack at the top level, methods such as showDialog use rootNavigator to pop up by default, therefore must pass in the parameter useRootNavigator: false in showDialog, showGeneralDialog and other 'show dialog' methods to avoid navigator errors.

showDialog(
  context: context,
  builder: (ctx) => AlertDialog(
        title: const Text('Dialog'),
        actions: <Widget>[
          TextButton(
              onPressed: () => Navigator.pop(context),
              child: const Text('OK'))
        ],
      ),
  useRootNavigator: false); // <===== It's very IMPORTANT!

Features

There are 13 plugin kits built in the current open source version of UME.

UI kits

Widget Info
Widget Info
Widget Detail
Widget Detail
Align Ruler
Align Ruler
Color Picker
Color Picker
Color Sucker
Color Sucker
Touch Indicator
Touch Indicator

Performance Kits

Memory Info
Memory Info
Perf Overlay
Perf Overlay

Device Info Kits

CPU Info
CPU Info
Device Info
Device Info

Show Code

Show Code
Show Code

Console

Console
Console

Dio Inspector

Dio Inspector
Dio Inspector

Develop plugin kits for UME

UME plugins are located in the ./kits directory, and each one is a package. You can refer to the example in ./custom_plugin_example about this chapter.

  1. Run flutter create -t package custom_plugin to create your custom plugin kit, it could be package or plugin.

  2. Edit pubspec.yaml of the custom plugin kit to add UME framework dependency.

    dependencies:
      flutter_ume: '>=0.3.0 <0.4.0'
  3. Create the class of the plugin kit which should implement Pluggable.

    import 'package:flutter_ume/flutter_ume.dart';
    
    class CustomPlugin implements Pluggable {
      CustomPlugin({Key key});
    
      @override
      Widget buildWidget(BuildContext context) => Container(
        color: Colors.white
        width: 100,
        height: 100,
        child: Center(
          child: Text('Custom Plugin')
        ),
      ); // The panel of the plugin kit
    
      @override
      String get name => 'CustomPlugin'; // The name of the plugin kit
    
      @override
      String get displayName => 'CustomPlugin';
    
      @override
      void onTrigger() {} // Call when tap the icon of plugin kit
    
      @override
      ImageProvider<Object> get iconImageProvider => NetworkImage('url'); // The icon image of the plugin kit
    }
  4. Use your custom plugin kit in project

    1. Edit pubspec.yaml of host app project to add custom_plugin dependency.

      dev_dependencies:
        custom_plugin:
          path: path/to/custom_plugin
    2. Run flutter pub get

    3. Import package

      import 'package:custom_plugin/custom_plugin.dart';
  5. Edit main method of your app, register your custom_plugin plugin kit

    if (kDebugMode) {
      PluginManager.instance
        ..register(CustomPlugin());
      runApp(
        UMEWidget(
          child: MyApp(), 
          enable: true
        )
      );
    } else {
      runApp(MyApp());
    }
  6. Run your app

Access the nested widget debug kits quickly

We introduce the PluggableWithNestedWidget from 0.3.0. It is used to insert nested Widgets in the Widget tree and quickly access embedded kits with nested widget.

For more details, see ./kits/flutter_ume_kit_ui/lib/components/color_picker/color_picker.dart and ./kits/flutter_ume_kit_ui/lib/components/touch_indicator/touch_indicator.dart.

The key steps are as follows:

  1. The class of your plugin should implement PluggableWithNestedWidget.
  2. Implements Widget buildNestedWidget(Widget child). Handling the nested widgets and returning the new Widget.

How to use UME in Release/Profile mode

Once you use flutter_ume in Release/Profile mode, you agree that you will bear the relevant risks by yourself.

The maintainer of flutter_ume does not assume any responsibility for the accident caused by this.

We recommend not to use it in Release/Profile mode for the following reasons:

  1. VM Service is not available in these environments, so some functions are not available
  2. In this environment, developers need to isolate the app distribution channels by themselves to avoid submitting relevant debugging code to the production environment

In order to use in Release/Profile mode, the details that need to be adjusted in the normal access process:

  1. In pubspec.yaml, flutter_ume and plugins should be write below dependencies rather than dev_dependencies.
  2. Don't put the code which call PluginManager.instance.register() and UMEWidget(child: App()) into conditionals which represent debug mode. (Such as kDebugMode)
  3. Ensure the above details, run flutter clean and flutter pub get, then build your app.

About version

Compatibility

UME version 1.12.13 1.22.3 2.0.1 2.2.3 2.5.3 2.8.0 3.0.5 3.3.1
0.1.x ⚠️ ⚠️
0.2.x ⚠️
0.3.x
1.0.x ⚠️ ⚠️ ⚠️ ⚠️
1.1.x ⚠️ ⚠️ ⚠️ ⚠️

⚠️ means the version has not been fully tested for compatibility.

Special case

  • Please use flutter_ume_kit_ui: ^1.1.0 and above version when you are using Flutter 3.7 and above.

Coverage

Package master develop develop_nullsafety
flutter_ume Coverage Coverage Coverage
flutter_ume_kit_device Coverage Coverage Coverage
flutter_ume_kit_perf Coverage Coverage Coverage
flutter_ume_kit_show_code Coverage Coverage Coverage
flutter_ume_kit_ui Coverage Coverage Coverage
flutter_ume_kit_console Coverage Coverage Coverage
flutter_ume_kit_dio Coverage N/A Coverage

Version upgrade rules

Please refer to Semantic versions for details.

Change log

Changelog

Contributing

Contributing rules: Contributing

Contributors

Thanks to the following contributors (names not listed in order):

ShirelyC ShirelyC
lpylpyleo lpylpyleo
Alex Li Alex Li
Swain Swain
mengdouer mengdouer
LAIIIHZ LAIIIHZ
XinLei XinLei
suli suli
wei-spring wei-spring

Plugins from community

About the third-party open-source project dependencies

  • The TouchIndicator use the pub touch_indicator, the ColorPicker use the pub cyclop.
  • We fork the package cyclop and modify some code meet our functional needs. We should depend cyclop by pub version after the PR being merged.

LICENSE

This project is licensed under the MIT License - visit the LICENSE for details.

Contact the author

Maybe...

  • Found a bug in the code, or an error in the documentation
  • Produces an exception when you use the UME
  • UME is not compatible with the new version Flutter
  • Have a good idea or suggestion

You can submit an issue in any of the above situations.

Maybe...

  • Communicate with the author
  • Communicate with more community developers
  • Cooperate with UME

Welcome to Join the ByteDance Flutter Exchange Group.

Or contact author.

flutter_ume's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

flutter_ume's Issues

debug模式enable为false时重建导致app异常卡死

Steps to Reproduce 复现步骤

  1. debug模式未启动ume:
    final openUme = false.obs;
    runApp(Obx(() { return UMEWidget( child: MyApp(), enable: openUme.value, ); }));
  2. 使用Get.updateLocale(Locale.fromSubtags(languageCode: val));切换语言

Error log 错误日志

异常原因:'package:flutter/src/widgets/overlay.dart': Failed assertion: line 147 pos 12: '_overlay != null': is not true.

原因

未启动ume时,_UMEWidgetStateOverlayEntry _overlayEntry = OverlayEntry(builder: (ctx) => Container());
虽然有值,但是没有插入显示,所以_overlayEntry属性OverlayState? _overlay;为空的。
但是当重建时执行了void _removeOverlay() => _overlayEntry.remove();
然后调用了assert(_overlay != null);这里debug模式断言失败导致app异常卡死。
我本地修改_overlayEntry为可空就没问题了。

class _UMEWidgetState extends State<UMEWidget> {
//  OverlayEntry _overlayEntry = OverlayEntry(builder: (ctx) => Container());
OverlayEntry?  _overlayEntry ;


}

Compatibility issue on FlutterSDK 3.10

Steps to Reproduce 复现步骤

dart analyze

Error log 错误日志

  error • kits/flutter_ume_kit_channel_monitor/lib/src/channel_plugin.dart:3:8 • Target of URI doesn't exist:
          'package:flutter_ume_kit_channel_monitor/src/ui/channel_pages.dart'. Try creating the file referenced by the URI, or try using a URI for a file that
          does exist. • uri_does_not_exist
  error • kits/flutter_ume_kit_channel_monitor/lib/src/channel_plugin.dart:15:18 • The name 'ChannelPages' isn't a class. Try correcting the name to match
          an existing class. • creation_with_non_type
  error • kits/flutter_ume_kit_channel_monitor/lib/src/core/channel_binding.dart:3:8 • Target of URI doesn't exist:
          'package:flutter_ume_kit_channel_monitor/src/core/ume_binary_messenger.dart'. Try creating the file referenced by the URI, or try using a URI for a
          file that does exist. • uri_does_not_exist
  error • kits/flutter_ume_kit_channel_monitor/lib/src/core/channel_binding.dart:18:12 • Undefined name 'UmeBinaryMessenger'. Try correcting the name to
          one that is defined, or defining the name. • undefined_identifier
  error • kits/flutter_ume_kit_channel_monitor/lib/src/core/channel_controller.dart:5:8 • Target of URI doesn't exist:
          'package:flutter_ume_kit_channel_monitor/src/core/channel_info_model.dart'. Try creating the file referenced by the URI, or try using a URI for a
          file that does exist. • uri_does_not_exist
  error • kits/flutter_ume_kit_channel_monitor/lib/src/core/channel_controller.dart:6:8 • Target of URI doesn't exist:
          'package:flutter_ume_kit_channel_monitor/src/core/channel_store.dart'. Try creating the file referenced by the URI, or try using a URI for a file
          that does exist. • uri_does_not_exist
  error • kits/flutter_ume_kit_channel_monitor/lib/src/core/channel_controller.dart:22:11 • Undefined class 'ChannelInfoModel'. Try changing the name to
          the name of an existing class, or creating a class with the name 'ChannelInfoModel'. • undefined_class
...
458 issues found.

For the sake of space, some issue has been omitted.

Environmental info 环境信息

  • Flutter 3.10
  • Dart 3.0

Flutter doctor

[✓] Flutter (Channel stable, 3.10.0, on macOS 13.3.1 22E772610a darwin-arm64,
    locale zh-Hans-CN)
[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.1)
[✓] Xcode - develop for iOS and macOS (Xcode 14.3)
[✗] Chrome - develop for the web (Cannot find Chrome executable at
    /Applications/Google Chrome.app/Contents/MacOS/Google Chrome)
    ! Cannot find Chrome. Try setting CHROME_EXECUTABLE to a Chrome executable.
[✓] Android Studio (version 2022.2)
[✓] VS Code (version 1.78.2)
[✓] Connected device (2 available)
[✓] Network resources

! Doctor found issues in 1 categories.

UME and kits version UME 及插件包版本

  # UME
  flutter_ume: 1.0.2+1
  # UI插件包
  flutter_ume_kit_ui: 1.1.0
  # 设备信息插件包
  flutter_ume_kit_device: 1.0.0
  # 性能插件包
  flutter_ume_kit_perf: 1.0.0
  # 代码查看插件包
  flutter_ume_kit_show_code: 1.0.0
  # debugPrint插件包
  flutter_ume_kit_console: 1.0.0
  # 网络请求插件包
  flutter_ume_kit_dio: 1.0.0

为啥 Dio 工具中展示的网络请求信息要加入 U+200b ?

What's your question 你遇到了什么问题

在 copy dio 请求数据的时候,发现 copy 出来的数据不能被解析,比如 json 无法直接被格式化等等。
看了下代码发现在展示网络请求信息的时候使用了 \u+200b 这个不可见字符对字符进行了拼接。

我不太理解这个操作的意图,想问下为啥要这么做

TextSpan(text: content.notBreak),
...
extension _StringExtension on String {
  String get notBreak => Characters(this).toList().join('\u{200B}');
}

Environmental info 环境信息

不需要

UME and kits version UME 及插件包版本

flutter_ume_kit_dio 1.0.0

[Feature] `DioInspector` TODOs

Features

  • Basic inspects feature. #16
  • Real-time update with completed responses. #16
  • Responses list paging. #16
  • Copy contents in responses that delivered texts/maps. #16
  • Count display with dot.
  • Deliver requests to the container when they're sent.
  • Multiple Dio instances support.

Issues

npm package?

What's your question 你遇到了什么问题

Environmental info 环境信息

Flutter doctor

UME and kits version UME 及插件包版本

Error when flutter upgrade to 3.7.1

Error when flutter upgrade to 3.7.1

Error: The method 'ChannelSliderTrack.paint' doesn't have the named parameter 'secondaryOffset' of overridden method 'SliderTrackShape.paint'.

flutter_ume_kit_console适配第三方日志插件logger问题

使用第三方日志插件代码如下:
`
import 'package:logger/logger.dart';

// 统一日志打印配置
var logger = Logger(
printer: PrettyPrinter(
methodCount: 2, // number of method calls to be displayed
errorMethodCount: 8, // number of method calls if stacktrace is provided
lineLength: 120, // width of the output
colors: true, // Colorful log messages
printEmojis: true, // Print an emoji for each log message
printTime: true // Should each log print contain a timestamp
),
);

`

发现flutter_ume无法打印出日志

关闭弹窗失效问题

#10 (comment)

这个问题还是存在

flutter_ume:
dependency: transitive
description:
name: flutter_ume
url: "https://pub.dartlang.org"
source: hosted
version: "0.2.0-dev.0"
flutter_ume_kit_console:
dependency: "direct dev"
description:
name: flutter_ume_kit_console
url: "https://pub.dartlang.org"
source: hosted
version: "0.2.0-dev.0"

这个是弹窗插件版本
awesome_dialog:
dependency: "direct dev"
description:
name: awesome_dialog
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.0"

2021-08-08.14.16.31.mp4

打开工具为空

Steps to Reproduce 复现步骤

  1. ...
  2. ...
  3. ...

Expected results 期望结果:

Actual results 实际结果:

Error log 错误日志

Environmental info 环境信息

Flutter doctor

<img width="1394" alt="截屏2022-05-12 10 19 49" src="https://user-images.githubusercontent.com/10431876/167979368-a164c39f-29a2-49ee-a67b-76466e4174bc.png">

UME and kits version UME 及插件包版本

与原生混合开发,需要Restart才能正常使用

与原生混合开发,需要进入flutter页面Restart才能正常使用

通过flutter_boost混合开发,进入到flutter页面,需要restart才能正常使用

Environmental info 环境信息

Flutter doctor

[✓] Flutter (Channel master, 2.6.0-1.0.pre.111, on macOS 11.4 20F71 darwin-x64, locale zh-Hans-CN)
• Flutter version 2.6.0-1.0.pre.111 at /Users/admin/Desktop/xw/flutter/sdk/flutter
• Upstream repository https://github.com/flutter/flutter.git
• Framework revision 965bd1ff40 (2 weeks ago), 2021-08-29 23:41:02 -0400
• Engine revision f4a380f3e5
• Dart version 2.15.0 (build 2.15.0-65.0.dev)
• Pub download mirror https://pub.flutter-io.cn
• Flutter download mirror https://storage.flutter-io.cn

UME and kits version UME 及插件包版本

flutter_ume: ^0.2.1
flutter_ume_kit_ui: ^0.2.1
flutter_ume_kit_device: ^0.2.1
flutter_ume_kit_perf: ^0.2.1
flutter_ume_kit_console: ^0.2.1
flutter_ume_kit_dio: ^0.2.0

UME 有多处依赖冲突,还未支持 Flutter 2.2.3 吗?或者计划什么时候将依赖升级到最新版?

What's your question 你遇到了什么问题

依赖冲突,如:device_info,vm_service,platform....

Environmental info 环境信息

Flutter doctor

Flutter 2.2.3 • channel stable • https://github.com/flutter/flutter.git
Framework • revision f4abaa0735 (3 weeks ago) • 2021-07-01 12:46:11 -0700
Engine • revision 241c87ad80
Tools • Dart 2.13.4

UME and kits version UME 及插件包版本

dependencies:
  device_info: ^2.0.2
  path_provider: ^2.0.2
dev_dependencies:
  flutter_test:
    sdk: flutter
  moor_generator: ^3.2.0
  build_runner: ^1.10.0
  vm_service: ^7.1.0
  flutter_ume: ^0.1.0
  flutter_ume_kit_ui: ^0.1.0
  flutter_ume_kit_device: ^0.1.0
  flutter_ume_kit_perf: ^0.1.0
  flutter_ume_kit_console: ^0.1.0

Error: The method 'OpacitySliderTrack.paint' doesn't have the named parameter 'secondaryOffset' of overridden method 'SliderTrackShape.paint'.

Steps to Reproduce 复现步骤

flutter run

Error log 错误日志

./../../.pub-cache/hosted/pub.flutter-io.cn/flutter_ume_kit_ui-1.0.0/lib/third_party/cyclop/lib/src/widgets/opacity/opacity_slider_track.dart:20:8: Error: The method 'OpacitySliderTrack.paint' doesn't have the named parameter 'secondaryOffset' of overridden method 'SliderTrackShape.paint'.

Environmental info 环境信息

Flutter SDK: 3.7.0

Flutter doctor

[✓] Flutter (Channel stable, 3.7.0, on macOS 13.2 22D49 darwin-arm64, locale
    zh-Hans-CN)
    • Flutter version 3.7.0 on channel stable at /Users/ra1no3o/Library/Flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision b06b8b2710 (3 weeks ago), 2023-01-23 16:55:55 -0800
    • Engine revision b24591ed32
    • Dart version 2.19.0
    • DevTools version 2.20.1
    • Pub download mirror https://pub.flutter-io.cn
    • Flutter download mirror https://storage.flutter-io.cn

[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.1)
    • Android SDK at /Users/ra1no3o/Library/Android/sdk
    • Platform android-33, build-tools 33.0.1
    • Java binary at:
      /Library/Java/JavaVirtualMachines/jdk-19.jdk/Contents/Home/bin/java
    • Java version Java(TM) SE Runtime Environment (build 19.0.2+7-44)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 14.2)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 14C18
    • CocoaPods version 1.11.3

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[!] Android Studio (version 2022.1)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    ✗ Unable to find bundled Java version.
    • Try updating or re-installing Android Studio.

[✓] Connected device (3 available)
    • iPhone 14 Pro Max (mobile) • 756CBC52-92E2-428F-B301-6B948AA535A2 • ios
      • com.apple.CoreSimulator.SimRuntime.iOS-16-2 (simulator)
    • macOS (desktop)            • macos                                •
      darwin-arm64   • macOS 13.2 22D49 darwin-arm64
    • Chrome (web)               • chrome                               •
      web-javascript • Google Chrome 109.0.5414.119

[✓] HTTP Host Availability
    • All required HTTP hosts are available

! Doctor found issues in 1 category.

UME and kits version UME 及插件包版本

# UME
  flutter_ume: 1.0.2+1
  flutter_ume_kit_ui: 1.0.0
  flutter_ume_kit_device: 1.0.0
  flutter_ume_kit_perf: 1.0.0
  flutter_ume_kit_show_code: 1.0.0
  flutter_ume_kit_console: 1.0.0
  flutter_ume_kit_dio: 1.0.0

dependency conflict after upgrading flutter_ume to 1.1.2

What's your question 你遇到了什么问题

I can not upgrade to use the latest ume version 1.1.2 becuase the pref tool supports only vm service 7.1.1

Running "flutter pub get" in client...
Resolving dependencies...
Because no versions of flutter_ume_kit_perf match >1.0.0 <2.0.0 and flutter_ume_kit_perf 1.0.0 depends on vm_service ^7.1.1, flutter_ume_kit_perf ^1.0.0 requires vm_service ^7.1.1.
And because flutter_ume >=1.1.1+1 depends on vm_service ^9.4.0, flutter_ume_kit_perf ^1.0.0 is incompatible with flutter_ume >=1.1.1+1.

Environmental info 环境信息

Flutter 3.7.12 • channel unknown • unknown source
Framework • revision 4d9e56e694 (6 weeks ago) • 2023-04-17 21:47:46 -0400
Engine • revision 1a65d409c7
Tools • Dart 2.19.6 • DevTools 2.20.1

UME and kits version UME 及插件包版本

flutter_ume: ^1.1.2
flutter_ume_kit_ui: ^1.1.0
flutter_ume_kit_device: ^1.0.0
flutter_ume_kit_perf: ^1.0.0
flutter_ume_kit_show_code: ^1.0.0
flutter_ume_kit_console: ^1.0.0
flutter_ume_kit_dio: ^1.0.1

在flutter3.0.0 版本中, 项目报错

Steps to Reproduce 复现步骤

Task :app:compileFlutterBuildDebug FAILED

FAILURE: Build failed with an exception.

  • Where:
    Script 'D:\src\flutter\packages\flutter_tools\gradle\flutter.gradle' line: 1156

  • What went wrong:
    Execution failed for task ':app:compileFlutterBuildDebug'.

Process 'command 'D:\src\flutter\bin\flutter.bat'' finished with non-zero exit value 1

  • Try:

Run with --info or --debug option to get more log output.
Run with --scan to get full insights.

  • Exception is:
    org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:compileFlutterBuildDebug'.
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:147)
    at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:282)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:145)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:133)
    at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:77)
    at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
    at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:51)
    at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
    at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
    at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
    at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
    at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
    at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73)
    at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
    at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:74)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:333)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:320)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:313)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:299)
    at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$run$0(DefaultPlanExecutor.java:143)
    at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:227)
    at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:218)
    at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:140)
    at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
    at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
    Caused by: org.gradle.process.internal.ExecException: Process 'command 'D:\src\flutter\bin\flutter.bat'' finished with non-zero exit value 1
    at org.gradle.process.internal.DefaultExecHandle$ExecResultImpl.assertNormalExitValue(DefaultExecHandle.java:414)
    at org.gradle.process.internal.DefaultExecAction.execute(DefaultExecAction.java:38)
    at org.gradle.process.internal.DefaultExecActionFactory.exec(DefaultExecActionFactory.java:205)
    at org.gradle.api.internal.project.DefaultProject.exec(DefaultProject.java:1170)
    at org.gradle.api.internal.project.DefaultProject.exec(DefaultProject.java:1165)
    at org.gradle.api.Project$exec$7.call(Unknown Source)
    at BaseFlutterTask.buildBundle(D:\src\flutter\packages\flutter_tools\gradle\flutter.gradle:1156)
    at BaseFlutterTask$buildBundle.callCurrent(Unknown Source)
    at FlutterTask.build(D:\src\flutter\packages\flutter_tools\gradle\flutter.gradle:1281)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:104)
    at org.gradle.api.internal.project.taskfactory.StandardTaskAction.doExecute(StandardTaskAction.java:58)
    at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:51)
    at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:29)
    at org.gradle.api.internal.tasks.execution.TaskExecution$3.run(TaskExecution.java:242)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:47)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:68)
    at org.gradle.api.internal.tasks.execution.TaskExecution.executeAction(TaskExecution.java:227)
    at org.gradle.api.internal.tasks.execution.TaskExecution.executeActions(TaskExecution.java:210)
    at org.gradle.api.internal.tasks.execution.TaskExecution.executeWithPreviousOutputFiles(TaskExecution.java:193)
    at org.gradle.api.internal.tasks.execution.TaskExecution.execute(TaskExecution.java:171)
    at org.gradle.internal.execution.steps.ExecuteStep.executeInternal(ExecuteStep.java:89)
    at org.gradle.internal.execution.steps.ExecuteStep.access$000(ExecuteStep.java:40)
    at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:53)
    at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:50)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73)
    at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:50)
    at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:40)
    at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:68)
    at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:38)
    at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:48)
    at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:36)
    at org.gradle.internal.execution.steps.CancelExecutionStep.execute(CancelExecutionStep.java:41)
    at org.gradle.internal.execution.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:74)
    at org.gradle.internal.execution.steps.TimeoutStep.execute(TimeoutStep.java:55)
    at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:51)
    at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:29)
    at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.execute(CaptureStateAfterExecutionStep.java:61)
    at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.execute(CaptureStateAfterExecutionStep.java:42)
    at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:60)
    at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:27)
    at org.gradle.internal.execution.steps.BuildCacheStep.executeWithoutCache(BuildCacheStep.java:180)
    at org.gradle.internal.execution.steps.BuildCacheStep.lambda$execute$1(BuildCacheStep.java:75)
    at org.gradle.internal.Either$Right.fold(Either.java:175)
    at org.gradle.internal.execution.caching.CachingState.fold(CachingState.java:59)
    at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:73)
    at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:48)
    at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:36)
    at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:25)
    at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:36)
    at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:22)
    at org.gradle.internal.execution.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:110)
    at org.gradle.internal.execution.steps.SkipUpToDateStep.lambda$execute$2(SkipUpToDateStep.java:56)
    at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:56)
    at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:38)
    at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:73)
    at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:44)
    at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:37)
    at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:27)
    at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:89)
    at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:50)
    at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:114)
    at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:57)
    at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:76)
    at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:50)
    at org.gradle.internal.execution.steps.SkipEmptyWorkStep.executeWithNoEmptySources(SkipEmptyWorkStep.java:249)
    at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:86)
    at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:54)
    at org.gradle.internal.execution.steps.RemoveUntrackedExecutionStateStep.execute(RemoveUntrackedExecutionStateStep.java:32)
    at org.gradle.internal.execution.steps.RemoveUntrackedExecutionStateStep.execute(RemoveUntrackedExecutionStateStep.java:21)
    at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsStartedStep.execute(MarkSnapshottingInputsStartedStep.java:38)
    at org.gradle.internal.execution.steps.LoadPreviousExecutionStateStep.execute(LoadPreviousExecutionStateStep.java:43)
    at org.gradle.internal.execution.steps.LoadPreviousExecutionStateStep.execute(LoadPreviousExecutionStateStep.java:31)
    at org.gradle.internal.execution.steps.AssignWorkspaceStep.lambda$execute$0(AssignWorkspaceStep.java:40)
    at org.gradle.api.internal.tasks.execution.TaskExecution$4.withWorkspace(TaskExecution.java:287)
    at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:40)
    at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:30)
    at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:37)
    at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:27)
    at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:44)
    at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:33)
    at org.gradle.internal.execution.impl.DefaultExecutionEngine$1.execute(DefaultExecutionEngine.java:76)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:144)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:133)
    at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:77)
    at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
    at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:51)
    at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
    at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
    at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
    at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
    at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
    at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73)
    at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
    at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:74)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:333)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:320)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:313)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:299)
    at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$run$0(DefaultPlanExecutor.java:143)
    at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:227)
    at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:218)
    at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:140)
    at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
    at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)

Flutter 1.17.1 下集成失败,无法找到

What's your question 你遇到了什么问题

pub get failed (1; Because zhizhu_dealer depends on flutter_ume_kit_show_code
^0.1.1 which doesn't match any versions, version solving failed.)

Environmental info 环境信息

Flutter doctor

[✓] Flutter (Channel stable, v1.17.1, on macOS 13.3.1 22E772610a, locale
zh-Hans-CN)
• Flutter version 1.17.1 at /Library/flutter_dir/flutter
• Framework revision f7a6a7906b (3 years, 2 months ago), 2020-05-12 18:39:00
-0700
• Engine revision 6bc433c6b6
• Dart version 2.8.2

UME and kits version UME 及插件包版本

flutter_ume: ^0.1.1
flutter_ume_kit_ui: ^0.1.1
flutter_ume_kit_device: ^0.1.1
flutter_ume_kit_perf: ^0.1.1
flutter_ume_kit_show_code: ^0.1.1

flutter_ume_kit_ui 和系统的SearchBar冲突

##flutter和dart环境

Flutter 3.10.2 • channel stable • https://github.com/flutter/flutter.git
Framework • revision 9cd3d0d9ff (9 days ago) • 2023-05-23 20:57:28 -0700
Engine • revision 90fa3ae28f
Tools • Dart 3.0.2 • DevTools 2.23.1

##dependencies
flutter_ume: ^1.0.1
flutter_ume_kit_ui: ^1.0.0
flutter_ume_kit_device: ^1.0.0
flutter_ume_kit_perf: ^1.0.0
flutter_ume_kit_show_code: ^1.0.0
flutter_ume_kit_console: ^1.0.0
flutter_ume_kit_dio: ^1.0.0

##错误日志
Error (Xcode): ../../.pub-cache/hosted/pub.dev/flutter_ume_kit_ui-1.1.0/lib/components/widget_detail_inspector/widget_detail_inspector.dart:202:24: Error: 'SearchBar' is imported from both 'package:flutter/src/material/search_anchor.dart' and 'package:flutter_ume_kit_ui/components/widget_detail_inspector/search_bar.dart'.

flutter_ume >=1.1.1+1 is incompatible with flutter_driver from Flutter v3.3.3 sdk.

Steps to Reproduce 复现步骤

  1. ...
    Run "flutter pub get".
  2. ...
  3. ...

Expected results 期望结果:

Actual results 实际结果:

Error log 错误日志

Because flutter_ume >=1.1.1+1 depends on vm_service ^9.4.0 and every version of flutter_driver from sdk depends on vm_service 9.0.0, flutter_ume >=1.1.1+1 is incompatible with flutter_driver from sdk.

Environmental info 环境信息

Flutter doctor

$ flutter doctor -v
Flutter assets will be downloaded from https://storage.flutter-io.cn. Make sure you trust this source!
[√] Flutter (Channel stable, 3.3.3, on Microsoft Windows [Version 10.0.22000.978], locale zh-CN)
    • Flutter version 3.3.3 on channel stable at C:\Flutter
    • Upstream repository https://gitee.com/mirrors/Flutter.git
    • FLUTTER_GIT_URL = https://gitee.com/mirrors/Flutter.git
    • Framework revision 18a827f393 (6 days ago), 2022-09-28 10:03:14 -0700
    • Engine revision 5c984c26eb
    • Dart version 2.18.2
    • DevTools version 2.15.0
    • Pub download mirror https://pub.flutter-io.cn
    • Flutter download mirror https://storage.flutter-io.cn

[√] Android toolchain - develop for Android devices (Android SDK version 33.0.0)
    • Android SDK at C:\Users\calcitem\AppData\Local\Android\Sdk
    • Platform android-TiramisuPrivacySandbox, build-tools 33.0.0
    • ANDROID_HOME = C:\Users\calcitem\AppData\Local\Android\Sdk
    • Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 11.0.13+0-b1751.21-8125866)
    • All Android licenses accepted.

[√] Chrome - develop for the web
    • Chrome at C:\Program Files (x86)\Google\Chrome\Application\chrome.exe

[√] Visual Studio - develop for Windows (Visual Studio Community 2022 17.3.4)
    • Visual Studio at C:\Program Files\Microsoft Visual Studio\2022\Community
    • Visual Studio Community 2022 version 17.3.32901.215
    • Windows 10 SDK version 10.0.22000.0

[√] Android Studio (version 2021.3)
    • Android Studio at C:\Program Files\Android\Android Studio
    • Flutter plugin can be installed from:
       https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
       https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.13+0-b1751.21-8125866)

[√] IntelliJ IDEA Community Edition (version 2021.3)
    • IntelliJ at C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2021.3
    • Flutter plugin version 63.1.4
    • Dart plugin version 213.5744.122

[√] VS Code, 64-bit edition (version 1.71.2)
    • VS Code at C:\Program Files\Microsoft VS Code
    • Flutter extension version 3.48.0

[√] Connected device (4 available)
    • Pixel 5 (mobile)  • 0C121FDD4009CS • android-arm64  • Android 13 (API 33)
    • Windows (desktop) • windows        • windows-x64    • Microsoft Windows [Version 10.0.22000.978]
    • Chrome (web)      • chrome         • web-javascript • Google Chrome 106.0.5249.91
    • Edge (web)        • edge           • web-javascript • Microsoft Edge 105.0.1343.50

[√] HTTP Host Availability
    • All required HTTP hosts are available

• No issues found!

UME and kits version UME 及插件包版本

  flutter_ume:  ^1.0.0
  flutter_ume_kit_ui:  ^1.0.0
  flutter_ume_kit_device:  ^1.0.0
  flutter_ume_kit_show_code:  ^1.0.0
  flutter_ume_kit_console: ^1.0.0

能否移除内部的MaterialApp组件

如readme所说,我们不得不为弹窗额外添加一个参数,我认为这是侵入性的。

void runAppWithTool(Widget app) {
  runApp(Directionality(
    child: MediaQuery(
      data: MediaQueryData.fromWindow(window),
      child: Localizations(
        locale: const Locale('en', 'US'),
        delegates: _localizationsDelegates.toList(),
        child: Stack(
          children: [
            app,
            UME(),
          ],
        ),
      ),
    ),
    textDirection: TextDirection.ltr,
  ));
}

例如上面的代码同样也能实现UME悬浮组件的显示,或者通过Overlay组件,至少这都不会为我们的app新增加一个路由栈。

DioInspector不能捕获get请求

What's your question 你遇到了什么问题

DioInspector不能捕获get请求

Environmental info 环境信息

Flutter doctor

[✓] Flutter (Channel stable, 3.3.8, on macOS 13.0.1 22A400 darwin-x64, locale zh-Hans-CN)
    • Flutter version 3.3.8 on channel stable at /Users/ying/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 52b3dc25f6 (3 周前), 2022-11-09 12:09:26 +0800
    • Engine revision 857bd6b74c
    • Dart version 2.18.4
    • DevTools version 2.15.0

[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.0)
    • Android SDK at /Users/ying/Android/sdk
    • Platform android-33, build-tools 33.0.0
    • ANDROID_HOME = /Users/ying/Android/sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jre/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.13+0-b1751.21-8125866)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 14.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 14B47b
    • CocoaPods version 1.11.3

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2021.3)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.13+0-b1751.21-8125866)

[✓] IntelliJ IDEA Ultimate Edition (version 2022.2.4)
    • IntelliJ at /Applications/IntelliJ IDEA.app
    • Flutter plugin version 71.0.5
    • Dart plugin version 222.4459.16

[✓] VS Code (version 1.73.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension can be installed from:
      🔨 https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter

[✓] Connected device (4 available)
    • sdk gphone64 x86 64 (mobile) • emulator-5554                        • android-x64    • Android 12 (API 31) (emulator)
    • iPhone 8 (mobile)            • 3E9113AA-5EAE-4955-B82D-D05F3B2B2D59 • ios            • com.apple.CoreSimulator.SimRuntime.iOS-16-1
      (simulator)
    • macOS (desktop)              • macos                                • darwin-x64     • macOS 13.0.1 22A400 darwin-x64
    • Chrome (web)                 • chrome                               • web-javascript • Google Chrome 107.0.5304.121

UME and kits version UME 及插件包版本

dependency_overrides:
  vm_service: ^9.4.0

dev_dependencies:
  flutter_ume: ^1.1.1+1
  flutter_ume_kit_console: ^1.0.0
  flutter_ume_kit_device: ^1.0.0
  flutter_ume_kit_dio: ^1.0.0
  flutter_ume_kit_perf: ^1.0.0
  flutter_ume_kit_show_code: ^1.0.0+1
  flutter_ume_kit_ui: ^1.0.0

和Riverpod 配合,发现无法正常使用,必须restart才能正常使用

Android 上同时集成Riverpod,无法正常使用

Ume版本:

flutter_ume: ^1.0.1
flutter_ume_kit_ui: ^1.0.0
flutter_ume_kit_device: ^1.0.0
flutter_ume_kit_perf: ^1.0.0
flutter_ume_kit_show_code: ^1.0.0
flutter_ume_kit_console: ^1.0.0

riverpod版本:
flutter_riverpod: 1.0.3
hooks_riverpod: 1.0.3
riverpod: 1.0.3

PluginManager.instance // 注册插件
..register(WidgetInfoInspector())
..register(WidgetDetailInspector())
..register(ColorSucker())
..register(AlignRuler())
..register(ColorPicker()) // 新插件
..register(TouchIndicator()) // 新插件
..register(Performance())
..register(ShowCode())
..register(MemoryInfoPage())
..register(Console());
runApp(ProviderScope(child: UMEWidget(child: MyApp(), enable: true)));

飞书20221103-115404

Error log 错误日志

没有错误日志

Environmental info 环境信息

Flutter doctor

[✓] Flutter (Channel stable, 3.3.3, on Mac OS X 10.15.7 19H114 darwin-x64, locale zh-Hans-CN)
Checking Android licenses is taking an unexpectedly long time...[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.0-rc2)
[✗] Xcode - develop for iOS and macOS
✗ Xcode installation is incomplete; a full installation is necessary for iOS development.
Download at: https://developer.apple.com/xcode/download/
Or install Xcode via the App Store.
Once installed, run:
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
sudo xcodebuild -runFirstLaunch
✗ CocoaPods not installed.
CocoaPods is used to retrieve the iOS and macOS platform side's plugin code that responds to your plugin usage on the Dart side.
Without CocoaPods, plugins will not work on iOS or macOS.
For more info, see https://flutter.dev/platform-plugins
To install see https://guides.cocoapods.org/using/getting-started.html#installation for instructions.
[✓] Chrome - develop for the web
[✓] Android Studio (version 2021.3)
[✓] IntelliJ IDEA Community Edition (version 2020.1)
[✓] VS Code (version 1.72.2)
[✓] Connected device (3 available)

UME and kits version UME 及插件包版本

flutter_ume: ^1.0.1
flutter_ume_kit_ui: ^1.0.0
flutter_ume_kit_device: ^1.0.0
flutter_ume_kit_perf: ^1.0.0
flutter_ume_kit_show_code: ^1.0.0
flutter_ume_kit_console: ^1.0.0

UME Support for Dio 5+

Use case 建议

Update flutter_ume_kit_dio to support latest version of dio (5.0.0)

Scenes 使用场景

Because every version of flutter_ume_kit_dio depends on dio ^4.0.0 and blazepod depends on dio ^5.1.2, flutter_ume_kit_diois forbidden.
So, because blazepod depends on flutter_ume_kit_dio ^1.0.0

developer.log在Console上没有显示

import 'dart:developer' as developer;
developer.log(
"${DateTime.now().toString().substring(11)}->${judgeIcon(logType)} $data");

这种打印log的方法,在Android studio上不会吧log截断,官方告诉使用这个打印log的不会被截断。但是developer.log在Console上没有显示
4611635410525_ pic

dio requests list 无法加载下一页

没有报错,但是只能加载第一页

测试代码

import 'package:flutter/material.dart';
import 'package:flutter_ume/flutter_ume.dart';
import 'package:flutter_ume_kit_console/flutter_ume_kit_console.dart';
import 'package:flutter_ume_kit_dio/flutter_ume_kit_dio.dart';
import 'package:dio/dio.dart';

Dio dio = Dio();

class App extends StatefulWidget {
  _AppState createState() => _AppState();
}

class _AppState extends State<App> {
  int i = 0;

  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'test',
      home: Scaffold(
        appBar: AppBar(title: Text('hello')),
        body: Container(
          child: Row(children: [
            TextButton(onPressed: add, child: Text('$i'))
          ],),
        )
      ),
    );
  }
  add() {
    debugPrint('add $i');
    dio.get('https://www.baidu.com');
    this.setState(() {
      i = i + 1;
    });
  }
}


void main() {
  PluginManager.instance
      ..register(Console())
      ..register(DioInspector(dio: dio));
  runApp(injectUMEWidget(child: App(), enable: true));
}

pubspec

  flutter_ume: 0.2.1
  flutter_ume_kit_console: 0.2.1
  flutter_ume_kit_dio: 0.2.0

flutter doctor

[✓] Flutter (Channel stable, 2.2.3, on macOS 11.5.1 20G80 darwin-x64, locale zh-Hans-CN)
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
[✓] Xcode - develop for iOS and macOS
[✓] Chrome - develop for the web
[✓] Android Studio (version 4.2)
[✓] VS Code (version 1.59.1)

device: pixel 2

集成神策全埋点后,编译报错

复现步骤

  1. 神策官网下载脚本 sensorsdata_flutter_autotrack.sh到本仓库example目录,按照其教程集成,打开 Git Bash,切换到脚本文件所在目录,执行如下命令,其中 <YOUR_PROJECT_PATH> 为目标 Flutter 项目地址:
    $ ./sensorsdata_flutter_autotrack.sh "<YOUR_PROJECT_PATH>"

  2. 该脚本会修改flutter源码,使用了aspected ,执行完脚本直接运行项目,会报如下错误:

错误日志

Launching lib/main.dart on iPhone 12 Pro Max in debug mode...
Xcode build done.                                           34.0s
Failed to build iOS app
Error output from Xcode build:
↳
    ** BUILD FAILED **
Xcode's output:

    Error: Couldn't resolve the package 'flutter_ume' in 'package:flutter_ume/flutter_ume.dart'.
    Error: Couldn't resolve the package 'flutter_ume_kit_ui' in 'package:flutter_ume_kit_ui/flutter_ume_kit_ui.dart'.
    Error: Couldn't resolve the package 'flutter_ume_kit_perf' in 'package:flutter_ume_kit_perf/flutter_ume_kit_perf.dart'.
    Error: Couldn't resolve the package 'flutter_ume_kit_show_code' in 'package:flutter_ume_kit_show_code/flutter_ume_kit_show_code.dart'.
    Error: Couldn't resolve the package 'flutter_ume_kit_device' in 'package:flutter_ume_kit_device/flutter_ume_kit_device.dart'.
    Error: Couldn't resolve the package 'flutter_ume_kit_console' in 'package:flutter_ume_kit_console/flutter_ume_kit_console.dart'.
    ../example/lib/main.dart:5:8: Error: Not found: 'package:flutter_ume/flutter_ume.dart'
    import 'package:flutter_ume/flutter_ume.dart';
           ^
    ../example/lib/main.dart:6:8: Error: Not found: 'package:flutter_ume_kit_ui/flutter_ume_kit_ui.dart'
    import 'package:flutter_ume_kit_ui/flutter_ume_kit_ui.dart';
           ^
    ../example/lib/main.dart:7:8: Error: Not found: 'package:flutter_ume_kit_perf/flutter_ume_kit_perf.dart'
    import 'package:flutter_ume_kit_perf/flutter_ume_kit_perf.dart';
           ^
    ../example/lib/main.dart:8:8: Error: Not found: 'package:flutter_ume_kit_show_code/flutter_ume_kit_show_code.dart'
    import 'package:flutter_ume_kit_show_code/flutter_ume_kit_show_code.dart';
           ^
    ../example/lib/main.dart:9:8: Error: Not found: 'package:flutter_ume_kit_device/flutter_ume_kit_device.dart'
    import 'package:flutter_ume_kit_device/flutter_ume_kit_device.dart';
           ^
    ../example/lib/main.dart:10:8: Error: Not found: 'package:flutter_ume_kit_console/flutter_ume_kit_console.dart'
    import 'package:flutter_ume_kit_console/flutter_ume_kit_console.dart';
           ^
    ../example/lib/main.dart:14:5: Error: Getter not found: 'PluginManager'.
        PluginManager.instance
        ^^^^^^^^^^^^^
    ../example/lib/main.dart:15:18: Error: Method not found: 'WidgetInfoInspector'.
          ..register(WidgetInfoInspector())
                     ^^^^^^^^^^^^^^^^^^^
    ../example/lib/main.dart:16:18: Error: Method not found: 'WidgetDetailInspector'.
          ..register(WidgetDetailInspector())
                     ^^^^^^^^^^^^^^^^^^^^^
    ../example/lib/main.dart:17:18: Error: Method not found: 'ColorSucker'.
          ..register(ColorSucker())
                     ^^^^^^^^^^^
    ../example/lib/main.dart:18:18: Error: Method not found: 'AlignRuler'.
          ..register(AlignRuler())
                     ^^^^^^^^^^
    ../example/lib/main.dart:19:18: Error: Method not found: 'Performance'.
          ..register(Performance())
                     ^^^^^^^^^^^
    ../example/lib/main.dart:20:18: Error: Method not found: 'ShowCode'.
          ..register(ShowCode())
                     ^^^^^^^^
    ../example/lib/main.dart:21:18: Error: Method not found: 'MemoryInfoPage'.
          ..register(MemoryInfoPage())
                     ^^^^^^^^^^^^^^
    ../example/lib/main.dart:22:18: Error: Method not found: 'CpuInfoPage'.
          ..register(CpuInfoPage())
                     ^^^^^^^^^^^
    ../example/lib/main.dart:23:18: Error: Method not found: 'DeviceInfoPanel'.
          ..register(DeviceInfoPanel())
                     ^^^^^^^^^^^^^^^
    ../example/lib/main.dart:24:18: Error: Method not found: 'Console'.
          ..register(Console());
                     ^^^^^^^
    ../example/lib/main.dart:25:12: Error: Method not found: 'injectUMEWidget'.
        runApp(injectUMEWidget(child: MyApp(), enable: true));
               ^^^^^^^^^^^^^^^
    Unhandled exception:
    FileSystemException(uri=org-dartlang-untranslatable-uri:package%3Aflutter_ume%2Fflutter_ume.dart; message=StandardFileSystem only supports file:* and data:* URIs)
#0      StandardFileSystem.entityForUri (package:front_end/src/api_prototype/standard_file_system.dart:36:7)
#1      asFileUri (package:vm/kernel_front_end.dart:599:37)
#2      writeDepfile (package:vm/kernel_front_end.dart:738:21)
    <asynchronous suspension>
#3      FrontendCompiler.compile (package:frontend_server/frontend_server.dart:562:9)
    <asynchronous suspension>
#4      starter (file:///Users/zhangwei/Documents/work/flutter_workspace/flutter_autotrack_gitlab/flutter_aspectd/lib/src/flutter_frontend_server/server.dart:189:12)
    <asynchronous suspension>
#5      main (file:///Users/zhangwei/Documents/work/flutter_workspace/flutter_autotrack_gitlab/flutter_aspectd/lib/src/flutter_frontend_server/starter.dart:13:24)
    <asynchronous suspension>
    Command PhaseScriptExecution failed with a nonzero exit code
    note: Using new build system
    note: Building targets in parallel
    note: Planning build
    note: Analyzing workspace
    note: Constructing build description
    note: Build preparation complete
    /Users/mrz/work/flutter_ume/example/ios/Pods/Pods.xcodeproj: warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 14.5.99. (in target 'Flutter' from project 'Pods')
Could not build the application for the simulator.
Error launching application on iPhone 12 Pro Max.
Exited (sigterm)

Environmental info 环境信息

Flutter doctor

Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 2.2.2, on macOS 11.5 20G71 darwin-x64, locale
    zh-Hans-CN)
[!] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    ✗ Android license status unknown.
      Run `flutter doctor --android-licenses` to accept the SDK licenses.
      See https://flutter.dev/docs/get-started/install/macos#android-setup for
      more details.
[✓] Xcode - develop for iOS and macOS
[✓] Chrome - develop for the web
[✓] Android Studio (version 4.2)
[✓] VS Code (version 1.58.2)
[✓] Connected device (3 available)

UME and kits version UME 及插件包版本

name: example
description: A new Flutter project.
version: 1.0.0+1

environment:
  sdk: '>=2.12.0 <3.0.0'

dependencies:
  flutter:
    sdk: flutter
  cupertino_icons: ^1.0.3

dependency_overrides:
  flutter_ume:
    path: ../
  flutter_ume_kit_ui:
    path: ../kits/flutter_ume_kit_ui
  flutter_ume_kit_perf:
    path: ../kits/flutter_ume_kit_perf
  flutter_ume_kit_show_code:
    path: ../kits/flutter_ume_kit_show_code
  flutter_ume_kit_device:
    path: ../kits/flutter_ume_kit_device
  flutter_ume_kit_console:
    path: ../kits/flutter_ume_kit_console

dev_dependencies:
  flutter_test:
    sdk: flutter
  flutter_ume:
    path: ../
  flutter_ume_kit_ui:
    path: ../kits/flutter_ume_kit_ui
  flutter_ume_kit_perf:
    path: ../kits/flutter_ume_kit_perf
  flutter_ume_kit_show_code:
    path: ../kits/flutter_ume_kit_show_code
  flutter_ume_kit_device:
    path: ../kits/flutter_ume_kit_device
  flutter_ume_kit_console:
    path: ../kits/flutter_ume_kit_console

flutter:
  uses-material-design: true

dio看不到request header信息

dio看不到request header信息

  flutter_ume: ^0.3.0+1
  flutter_ume_kit_ui: ^0.3.0+1
  flutter_ume_kit_device: ^0.3.0
  flutter_ume_kit_perf: ^0.3.0
  flutter_ume_kit_show_code: ^0.3.0
  flutter_ume_kit_console: ^0.3.0
  flutter_ume_kit_dio: ^0.3.0

Flutter SDK 3.0.5编译报错

Flutter SDK 3.0.5
UME:最新版

编译报错,flutter_logo.dart 文件, canvas.transform(Float64List.fromList,Float64List找不到

解决方案:
1、增加导包;

用SDK自带的flutter logo,不用再自己copy份,本身SDK里面就有flutter_logo.dart 的

[DioInspector]: flutter_ume_kit_dio always shows “Come back later ...”

flutter_ume_kit_dio always shows “Come back later ...”

  • code 👇🏻
import 'package:basecommonlib/basecommonlib.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';

import 'app.dart';
import 'application.dart';

import 'package:dio/dio.dart';

import 'package:flutter_ume/flutter_ume.dart'; // UME 框架
import 'package:flutter_ume_kit_ui/flutter_ume_kit_ui.dart'; // UI 插件包
import 'package:flutter_ume_kit_perf/flutter_ume_kit_perf.dart'; // 性能插件包
import 'package:flutter_ume_kit_show_code/flutter_ume_kit_show_code.dart'; // 代码查看插件包
import 'package:flutter_ume_kit_device/flutter_ume_kit_device.dart'; // 设备信息插件包
import 'package:flutter_ume_kit_console/flutter_ume_kit_console.dart'; // debugPrint 插件包
import 'package:flutter_ume_kit_dio/flutter_ume_kit_dio.dart'; // Dio 网络请求调试工具

final Dio dio = Dio()
  ..options = BaseOptions(
    baseUrl: Network.BASE_URL,
    connectTimeout: Network.CONNECT_TIMEOUT,
    receiveTimeout: Network.RECEIVE_TIMEOUT,
    contentType: Network.ContentTypeJson,
  );


void main() => Application.init(() {
      EnvironmentType envType = Network.CURRENT_ENVIRONMENT;
      if (envType == EnvironmentType.test) {
        PluginManager.instance // 注册插件
          ..register(WidgetInfoInspector())
          ..register(WidgetDetailInspector())
          ..register(ColorSucker())
          ..register(AlignRuler())
          ..register(ColorPicker()) // 新插件
          ..register(TouchIndicator()) // 新插件
          ..register(Performance())
          ..register(ShowCode())
          ..register(MemoryInfoPage())
          ..register(CpuInfoPage())
          ..register(DeviceInfoPanel())
          ..register(Console())
          ..register(DioInspector(dio: dio)); // 传入你的 Dio 实例
        // flutter_ume 0.3.0 版本之后
        return runApp(UMEWidget(child: MyApp(), enable: true)); // 初始化
      } else {
        return runApp(MyApp());
      }
    });

no versions of flutter_ume_kit_perf match >1.0.0 <2.0.0

Because no versions of flutter_ume_kit_perf match >1.0.0 <2.0.0 and flutter_ume_kit_perf 1.0.0 depends on vm_service ^7.1.1, flutter_ume_kit_perf ^1.0.0 requires vm_service ^7.1.1.
And because flutter_ume >=1.1.1+1 depends on vm_service ^9.4.0, flutter_ume_kit_perf ^1.0.0 is incompatible with flutter_ume >=1.1.1+1.

关闭弹窗问题

如果使用flutter_ume_kit_console,系统的弹窗无法通过代码关闭。也会到这awesome_dialog这个插件的关闭失效。请问怎么解决?

Console插件不打印日志

Steps to Reproduce 复现步骤

  1. ... 接入UME
  2. ... 运行
  3. ... Console插件查看日志,空白

Expected results 期望结果: Console插件能查看日志输出

Actual results 实际结果: Console插件无法查看日志

Environmental info 环境信息

Flutter doctor

[✓] Flutter (Channel master, 2.4.0-5.0.pre.145, on macOS 11.4 20F71 darwin-x64, locale zh-Hans-CN)
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
[✓] Xcode - develop for iOS and macOS
[✓] Chrome - develop for the web
[✓] Android Studio (version 4.1)
[✓] VS Code (version 1.54.3)

UME and kits version UME 及插件包版本

flutter_ume: ^0.2.0-dev.0
flutter_ume_kit_ui: ^0.2.0-dev.0 # null-safety 版本: ^0.2.0-dev.0
flutter_ume_kit_device: ^0.2.0-dev.0 # null-safety 版本: ^0.2.0-dev.0
flutter_ume_kit_perf: ^0.2.0-dev.0 # null-safety 版本: ^0.2.0-dev.0
flutter_ume_kit_console: ^0.2.0-dev.0 # null-safety 版本: ^0.2.0-dev.0

1.0.0-dev.0依赖冲突

Because flutter_ume_kit_dio >=1.0.0-dev.0 depends on flutter_ume ^1.0.0 which doesn't match any versions, flutter_ume_kit_dio >=1.0.0-dev.0 is forbidden.
So, because group_chat depends on flutter_ume_kit_dio ^1.0.0-dev.0, version solving failed.
pub get failed (1; So, because group_chat depends on flutter_ume_kit_dio ^1.0.0-dev.0, version solving failed.)

你好,请问一下ume有计划支持Null safety吗

What's your question 你遇到了什么问题

你好,请问一下ume有计划支持Null safety吗?

Environmental info 环境信息

Flutter doctor

[✓] Flutter (Channel stable, 2.2.3, on macOS 11.3 20E232
    darwin-x64, locale zh-Hans-CN)
    • Flutter version 2.2.3 at /Users/vadxq/flutter
    • Framework revision f4abaa0735 (3 weeks ago), 2021-07-01
      12:46:11 -0700
    • Engine revision 241c87ad80
    • Dart version 2.13.4

UME and kits version UME 及插件包版本

dependencies:
  flutter_ume: '>=0.1.0 <0.2.0'

[BUG] flutter_ume_kit_dio_plus 解析请求头出错

Steps to Reproduce 复现步骤

这里第 236 行的代码有漏洞,如果 headers 里面的参数值为数字等非 String 的话则会出错。

final Map<String, List<String>> map = _request.headers.map(
(key, value) => MapEntry(
key,
value is Iterable ? value.map((v) => v.toString()).toList() : [value],
),
);

【修改方法】为将 value 转为 String 类型:
value is Iterable ? value.map((v) => v.toString()).toList() : [value.toString()],

  1. dio添加添加参数{"key":1}
  2. 正常进行网络请求
  3. 打开 ume 的 DioInspector 找到刚刚的网络请求,并点击【详情】,页面报错
  4. 查看日志提示:type 'int' is not a subtype of type 'String'

Expected results 期望结果:
预期正常展示网络请求详情
Actual results 实际结果:
实际上请求出错:
image

Error log 错误日志

The following _TypeError was thrown building ValueListenableBuilder<bool>(dirty, state: _ValueListenableBuilderState<bool>#08b6e):
type 'int' is not a subtype of type 'String'

The relevant error-causing widget was: 
  DioInspector DioInspector:file:///Users/username/dev/workspace/work/project_name/lib/main.dart:30:7
When the exception was thrown, this was the stack: 
#0      _ResponseCardState._requestHeadersBuilder.<anonymous closure> (package:flutter_ume_kit_dio_plus/src/widgets/pluggable_state.dart:232:72)<--这里出错
#1      MapBase.map (dart:collection/maps.dart:82:28)
#2      _ResponseCardState._requestHeadersBuilder (package:flutter_ume_kit_dio_plus/src/widgets/pluggable_state.dart:229:60)
#3      _ResponseCardState._detailedContent.<anonymous closure> (package:flutter_ume_kit_dio_plus/src/widgets/pluggable_state.dart:353:26)
#4      _ValueListenableBuilderState.build (package:flutter/src/widgets/value_listenable_builder.dart:186:26)
#5      StatefulElement.build (package:flutter/src/widgets/framework.dart:5198:27)
#6      ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5086:15)
#7      StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5251:11)
#8      Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
#9      BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2780:19)
#10     WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:903:21)
#11     RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:358:5)
#12     SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1284:15)
#13     SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1214:9)
#14     SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:1072:5)
#15     _invoke (dart:ui/hooks.dart:142:13)
#16     PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:359:5)
#17     _drawFrame (dart:ui/hooks.dart:112:31)

Environmental info 环境信息

Flutter doctor

Doctor summary (to see all details, run flutter doctor -v):
[!] Flutter (Channel stable, 3.10.5, on macOS 13.4.1 22F770820d darwin-arm64, locale en-CN)

UME and kits version UME 及插件包版本

  # ume调试工具
  flutter_ume: ^1.1.2
  flutter_ume_kit_ui: ^1.1.0 # 如果报错,可以修改widget_detail_inspector.dart第三行为 import 'package:flutter/material.dart' hide SearchBar;
  flutter_ume_kit_device: ^1.0.0
  flutter_ume_kit_console: ^1.0.0
  flutter_ume_kit_dio_plus: ^2.0.0

手机上连接不到SocketException,查看不了代码

[ERROR:flutter/lib/ui/ui_dart_state.cc(207)] Unhandled Exception: SocketException: OS Error: Connection refused, errno = 111, address = 127.0.0.1, port = 37830
E/flutter (25739): #0 _NativeSocket.startConnect (dart:io-patch/socket_patch.dart:677:35)
E/flutter (25739): #1 _RawSocket.startConnect (dart:io-patch/socket_patch.dart:1679:26)
E/flutter (25739): #2 RawSocket.startConnect (dart:io-patch/socket_patch.dart:27:23)
E/flutter (25739): #3 Socket._startConnect (dart:io-patch/socket_patch.dart:1890:22)
E/flutter (25739): #4 Socket.startConnect (dart:io/socket.dart:738:21)
E/flutter (25739): #5 _ConnectionTarget.connect (dart:_http/http_impl.dart:2439:18)
E/flutter (25739): #6 _HttpClient._getConnection.connect (dart:_http/http_impl.dart:2805:12)
E/flutter (25739): #7 _HttpClient._getConnection (dart:_http/http_impl.dart:2810:12)
E/flutter (25739): #8 _HttpClient._openUrl (dart:_http/http_impl.dart:2694:12)
E/flutter (25739): #9 _HttpClient.openUrl (dart:_http/http_impl.dart:2568:7)
E/flutter (25739): #10 _WebSocketImpl.connect (dart:_http/websocket_impl.dart:1027:24)
E/flutter (25739): #11 WebSocket.connect (dart:_http/websocket.dart:379:22)
E/flutter (25739): #12 vmServiceConnectUri (package:vm_service/vm_service_io.dart:32:44)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.