[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-9243":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":16,"stars30d":16,"stars90d":16,"forks30d":16,"starsTrendScore":16,"compositeScore":17,"rankGlobal":10,"rankLanguage":10,"license":18,"archived":19,"fork":20,"defaultBranch":21,"hasWiki":19,"hasPages":20,"topics":22,"createdAt":10,"pushedAt":10,"updatedAt":34,"readmeContent":35,"aiSummary":36,"trendingCount":16,"starSnapshotCount":16,"syncStatus":14,"lastSyncTime":37,"discoverSource":38},9243,"flutter_ume","bytedance\u002Fflutter_ume","bytedance","UME is an in-app debug kits platform for Flutter. Produced by Flutter Infra team of ByteDance","",null,"Dart",2162,242,2,24,0,59.16,"MIT License",true,false,"master",[23,24,25,26,27,28,29,30,31,32,33],"dart","dart-library","debug","debugging-tool","developer","development","devtool","flutter","flutter-package","flutter-plugin","tools","2026-06-12 04:00:43","# flutter_ume\n\n[简体中文](.\u002FREADME_cn.md)\n\nUME is an in-app debug kits platform for Flutter apps.\n\n[![platforms](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fplatforms-ios%20%7C%20android%20%7C%20web%20%7C%20macos%20%7C%20windows%20%7C%20linux-lightgrey)](https:\u002F\u002Fpub.dev\u002Fpackages\u002Fflutter_ume) [![license](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002Fbytedance\u002Fflutter_ume.svg)](https:\u002F\u002Fgithub.com\u002Fbytedance\u002Fflutter_ume\u002Fblob\u002Fmaster\u002FLICENSE)\n\n[![pub package](https:\u002F\u002Fimg.shields.io\u002Fpub\u002Fv\u002Fflutter_ume.svg)](https:\u002F\u002Fpub.dev\u002Fpackages\u002Fflutter_ume)\n[![pub package](https:\u002F\u002Fimg.shields.io\u002Fpub\u002Flikes\u002Fflutter_ume.svg)](https:\u002F\u002Fpub.dev\u002Fpackages\u002Fflutter_ume)\n[![pub package](https:\u002F\u002Fimg.shields.io\u002Fpub\u002Fpoints\u002Fflutter_ume.svg)](https:\u002F\u002Fpub.dev\u002Fpackages\u002Fflutter_ume)\n[![pub package](https:\u002F\u002Fimg.shields.io\u002Fpub\u002Fpopularity\u002Fflutter_ume.svg)](https:\u002F\u002Fpub.dev\u002Fpackages\u002Fflutter_ume)\n[![pub package](https:\u002F\u002Fimg.shields.io\u002Fpub\u002Fpublisher\u002Fflutter_ume.svg)](https:\u002F\u002Fpub.dev\u002Fpackages\u002Fflutter_ume)\n\n**Since `^1.0.0`, flutter_ume starts adapting to the Flutter 3. See [Quick Start] to learn more.**\n\n\u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fbytedance\u002Fflutter_ume\u002Fraw\u002Fmaster\u002Fapk_qrcode.png\" width = \"128\" height = \"128\" alt=\"banner\" \u002F>\n\nScan QR code or click link to download apk. Try it now!\nhttps:\u002F\u002Fgithub.com\u002Fbytedance\u002Fflutter_ume\u002Freleases\u002Fdownload\u002Fv0.2.1.0\u002Fapp-debug.apk\n\nThere are 13 plugin kits built in the latest open source version of UME.\nDeveloper could create custom plugin kits, and integrate them into UME.\nVisit [Develop plugin kits for UME](#develop-plugin-kits-for-ume) for more details.\n\n**Please see [Plugins from community](#plugins-from-community) to make your flutter_ume stronger.**\n\n- [flutter_ume](#flutter_ume)\n  - [Quick Start](#quick-start)\n  - [IMPORTANT](#important)\n  - [Features](#features)\n  - [Develop plugin kits for UME](#develop-plugin-kits-for-ume)\n    - [Access the nested widget debug kits quickly](#access-the-nested-widget-debug-kits-quickly)\n  - [How to use UME in Release\u002FProfile mode](#how-to-use-ume-in-releaseprofile-mode)\n  - [About version](#about-version)\n    - [Compatibility](#compatibility)\n    - [Coverage](#coverage)\n    - [Version upgrade rules](#version-upgrade-rules)\n    - [Null-safety](#null-safety)\n    - [Change log](#change-log)\n  - [Contributing](#contributing)\n    - [Contributors](#contributors)\n    - [Plugins from community](#plugins-from-community)\n    - [About the third-party open-source project dependencies](#about-the-third-party-open-source-project-dependencies)\n  - [LICENSE](#license)\n  - [Contact the author](#contact-the-author)\n\n## Quick Start\n\n**All packages whose names are prefixed with `flutter_ume_kit_` are function**\n**plug-ins of UME, and users can access them according to demand**\n\n1. Edit `pubspec.yaml`, and add dependencies.\n\n    **Compatible with Flutter 3 since version `1.0.0`.**\n\n    ``` yaml\n    dev_dependencies:\n      flutter_ume: ^1.0.1\n      flutter_ume_kit_ui: ^1.0.0\n      flutter_ume_kit_device: ^1.0.0\n      flutter_ume_kit_perf: ^1.0.0\n      flutter_ume_kit_show_code: ^1.0.0\n      flutter_ume_kit_console: ^1.0.0\n      flutter_ume_kit_dio: ^1.0.0\n    ```\n\n\n    **↓ Null-safety version, compatible with Flutter 2.x**\n\n    ``` yaml\n    dev_dependencies: # Don't use UME in release mode\n      flutter_ume: ^0.3.0+1\n      flutter_ume_kit_ui: ^0.3.0+1\n      flutter_ume_kit_device: ^0.3.0\n      flutter_ume_kit_perf: ^0.3.0\n      flutter_ume_kit_show_code: ^0.3.0\n      flutter_ume_kit_console: ^0.3.0\n      flutter_ume_kit_dio: ^0.3.0\n    ```\n\n    **↓ Non-null-safety version, compatible with Flutter 1.x**\n\n    ``` yaml\n    dev_dependencies: # Don't use UME in release mode\n      flutter_ume: ^0.1.1\n      flutter_ume_kit_ui: ^0.1.1\n      flutter_ume_kit_device: ^0.1.1\n      flutter_ume_kit_perf: ^0.1.1\n      flutter_ume_kit_show_code: ^0.1.1\n      flutter_ume_kit_console: ^0.1.1 \n    ```\n\n2. Run `flutter pub get`\n3. Import packages\n\n    ``` dart\n    import 'package:flutter_ume\u002Fflutter_ume.dart'; \u002F\u002F UME framework\n    import 'package:flutter_ume_kit_ui\u002Fflutter_ume_kit_ui.dart'; \u002F\u002F UI kits\n    import 'package:flutter_ume_kit_perf\u002Fflutter_ume_kit_perf.dart'; \u002F\u002F Performance kits\n    import 'package:flutter_ume_kit_show_code\u002Fflutter_ume_kit_show_code.dart'; \u002F\u002F Show Code\n    import 'package:flutter_ume_kit_device\u002Fflutter_ume_kit_device.dart'; \u002F\u002F Device info\n    import 'package:flutter_ume_kit_console\u002Fflutter_ume_kit_console.dart'; \u002F\u002F Show debugPrint\n    import 'package:flutter_ume_kit_dio\u002Fflutter_ume_kit_dio.dart'; \u002F\u002F Dio Inspector\n    ```\n\n4. Edit main method of your app, register plugin kits and initial UME\n\n    ``` dart\n    void main() {\n      if (kDebugMode) {\n        PluginManager.instance                                 \u002F\u002F Register plugin kits\n          ..register(WidgetInfoInspector())\n          ..register(WidgetDetailInspector())\n          ..register(ColorSucker())\n          ..register(AlignRuler())\n          ..register(ColorPicker())                            \u002F\u002F New feature\n          ..register(TouchIndicator())                         \u002F\u002F New feature\n          ..register(Performance())\n          ..register(ShowCode())\n          ..register(MemoryInfoPage())\n          ..register(CpuInfoPage())\n          ..register(DeviceInfoPanel())\n          ..register(Console())\n          ..register(DioInspector(dio: dio));                  \u002F\u002F Pass in your Dio instance\n        \u002F\u002F After flutter_ume 0.3.0\n        runApp(UMEWidget(child: MyApp(), enable: true));\n        \u002F\u002F Before flutter_ume 0.3.0\n        runApp(injectUMEWidget(child: MyApp(), enable: true));\n      } else {\n        runApp(MyApp());\n      }\n    }\n    ```\n\n5. `flutter run` for running\n   or `flutter build apk --debug`、`flutter build ios --debug` for building productions.\n\n  > 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.\n  >\n  > Flutter 2.0.x, 2.2.x and other versions run on real devices, `flutter run` needs to add the `--disable-dds` parameter.\n  > After [Pull Request #80900](https:\u002F\u002Fgithub.com\u002Fflutter\u002Fflutter\u002Fpull\u002F80900) merging, `--disable-dds` was renamed to `--no-dds`.\n\n## IMPORTANT\n\n**From `0.1.1`\u002F`0.2.1` version，we don't need set `useRootNavigator: false`.**\nThe following section only applies to versions before version `0.1.1`\u002F`0.2.1` .\n\n\u003Cs>\n\nSince UME manages the routing stack at the top level, methods such as `showDialog` use `rootNavigator` to pop up by default,\ntherefore **must** pass in the parameter `useRootNavigator: false` in `showDialog`, `showGeneralDialog` and other 'show dialog' methods to avoid navigator errors.\n\n``` dart\nshowDialog(\n  context: context,\n  builder: (ctx) => AlertDialog(\n        title: const Text('Dialog'),\n        actions: \u003CWidget>[\n          TextButton(\n              onPressed: () => Navigator.pop(context),\n              child: const Text('OK'))\n        ],\n      ),\n  useRootNavigator: false); \u002F\u002F \u003C===== It's very IMPORTANT!\n```\n\n\u003C\u002Fs>\n\n## Features\n\nThere are 13 plugin kits built in the current open source version of UME.\n\n\u003Ctable border=\"1\" width=\"100%\">\n    \u003Ctr>\n        \u003Ctd width=\"33.33%\" align=\"center\">\u003Cp>UI kits\u003C\u002Fp>\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd width=\"33.33%\" align=\"center\">\u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fbytedance\u002Fflutter_ume\u002Fraw\u002Fmaster\u002Fscreenshots\u002Fwidget_info.png\" width=\"100%\" alt=\"Widget Info\" \u002F>\u003C\u002Fbr>Widget Info\u003C\u002Ftd>\n        \u003Ctd width=\"33.33%\" align=\"center\">\u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fbytedance\u002Fflutter_ume\u002Fraw\u002Fmaster\u002Fscreenshots\u002Fwidget_detail.png\" width=\"100%\" alt=\"Widget Detail\" \u002F>\u003C\u002Fbr>Widget Detail\u003C\u002Ftd>\n        \u003Ctd width=\"33.33%\" align=\"center\">\u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fbytedance\u002Fflutter_ume\u002Fraw\u002Fmaster\u002Fscreenshots\u002Falign_ruler.png\" width=\"100%\" alt=\"Align Ruler\" \u002F>\u003C\u002Fbr>Align Ruler\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd width=\"33.33%\" align=\"center\">\u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fbytedance\u002Fflutter_ume\u002Fraw\u002Fmaster\u002Fscreenshots\u002Fcolor_picker.png\" width=\"100%\" alt=\"Color Picker\" \u002F>\u003C\u002Fbr>Color Picker\u003C\u002Ftd>\n        \u003Ctd width=\"33.33%\" align=\"center\">\u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fbytedance\u002Fflutter_ume\u002Fraw\u002Fmaster\u002Fscreenshots\u002Fcolor_sucker.png\" width=\"100%\" alt=\"Color Sucker\" \u002F>\u003C\u002Fbr>Color Sucker\u003C\u002Ftd>\n        \u003Ctd width=\"33.33%\" align=\"center\">\u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fbytedance\u002Fflutter_ume\u002Fraw\u002Fmaster\u002Fscreenshots\u002Ftouch_indicator.png\" width=\"100%\" alt=\"Touch Indicator\" \u002F>\u003C\u002Fbr>Touch Indicator\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd width=\"33.33%\" align=\"center\">\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd width=\"33.33%\" align=\"center\">\u003Cp>Performance Kits\u003C\u002Fp>\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd width=\"33.33%\" align=\"center\">\u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fbytedance\u002Fflutter_ume\u002Fraw\u002Fmaster\u002Fscreenshots\u002Fmemory_info.png\" width=\"100%\" alt=\"Memory Info\" \u002F>\u003C\u002Fbr>Memory Info\u003C\u002Ftd>\n        \u003Ctd width=\"33.33%\" align=\"center\">\u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fbytedance\u002Fflutter_ume\u002Fraw\u002Fmaster\u002Fscreenshots\u002Fperf_overlay.png\" width=\"100%\" alt=\"Perf Overlay\" \u002F>\u003C\u002Fbr>Perf Overlay\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd width=\"33.33%\" align=\"center\">\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd width=\"33.33%\" align=\"center\">\u003Cp>Device Info Kits\u003C\u002Fp>\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd width=\"33.33%\" align=\"center\">\u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fbytedance\u002Fflutter_ume\u002Fraw\u002Fmaster\u002Fscreenshots\u002Fcpu_info.png\" width=\"100%\" alt=\"CPU Info\" \u002F>\u003C\u002Fbr>CPU Info\u003C\u002Ftd>\n        \u003Ctd width=\"33.33%\" align=\"center\">\u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fbytedance\u002Fflutter_ume\u002Fraw\u002Fmaster\u002Fscreenshots\u002Fdevice_info.png\" width=\"100%\" alt=\"Device Info\" \u002F>\u003C\u002Fbr>Device Info\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd width=\"33.33%\" align=\"center\">\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd width=\"33.33%\" align=\"center\">\u003Cp>Show Code\u003C\u002Fp>\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd width=\"33.33%\" align=\"center\">\u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fbytedance\u002Fflutter_ume\u002Fraw\u002Fmaster\u002Fscreenshots\u002Fshow_code.png\" width=\"100%\" alt=\"Show Code\" \u002F>\u003C\u002Fbr>Show Code\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd width=\"33.33%\" align=\"center\">\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd width=\"33.33%\" align=\"center\">\u003Cp>Console\u003C\u002Fp>\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd width=\"33.33%\" align=\"center\">\u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fbytedance\u002Fflutter_ume\u002Fraw\u002Fmaster\u002Fscreenshots\u002Fconsole.png\" width=\"100%\" alt=\"Console\" \u002F>\u003C\u002Fbr>Console\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd width=\"33.33%\" align=\"center\">\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd width=\"33.33%\" align=\"center\">\u003Cp>Dio Inspector\u003C\u002Fp>\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n        \u003Ctd width=\"33.33%\" align=\"center\">\u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fbytedance\u002Fflutter_ume\u002Fraw\u002Fmaster\u002Fscreenshots\u002Fdio_inspector.png\" width=\"100%\" alt=\"Dio Inspector\" \u002F>\u003C\u002Fbr>Dio Inspector\u003C\u002Ftd>\n    \u003C\u002Ftr>\n\u003C\u002Ftable>\n\n## Develop plugin kits for UME\n\n> UME plugins are located in the `.\u002Fkits` directory, and each one is a `package`.\n> You can refer to the example in [`.\u002Fcustom_plugin_example`](.\u002Fcustom_plugin_example\u002F) about this chapter.\n\n1. Run `flutter create -t package custom_plugin` to create your custom plugin kit, it could be `package` or `plugin`.\n2. Edit `pubspec.yaml` of the custom plugin kit to add UME framework dependency.\n\n    ``` yaml\n    dependencies:\n      flutter_ume: '>=0.3.0 \u003C0.4.0'\n    ```\n\n3. Create the class of the plugin kit which should implement `Pluggable`.\n\n    ``` dart\n    import 'package:flutter_ume\u002Fflutter_ume.dart';\n\n    class CustomPlugin implements Pluggable {\n      CustomPlugin({Key key});\n\n      @override\n      Widget buildWidget(BuildContext context) => Container(\n        color: Colors.white\n        width: 100,\n        height: 100,\n        child: Center(\n          child: Text('Custom Plugin')\n        ),\n      ); \u002F\u002F The panel of the plugin kit\n\n      @override\n      String get name => 'CustomPlugin'; \u002F\u002F The name of the plugin kit\n\n      @override\n      String get displayName => 'CustomPlugin';\n\n      @override\n      void onTrigger() {} \u002F\u002F Call when tap the icon of plugin kit\n\n      @override\n      ImageProvider\u003CObject> get iconImageProvider => NetworkImage('url'); \u002F\u002F The icon image of the plugin kit\n    }\n    ```\n\n4. Use your custom plugin kit in project\n\n    1. Edit `pubspec.yaml` of host app project to add `custom_plugin` dependency.\n\n        ``` yaml\n        dev_dependencies:\n          custom_plugin:\n            path: path\u002Fto\u002Fcustom_plugin\n        ```\n\n    2. Run `flutter pub get`\n\n    3. Import package\n\n        ``` dart\n        import 'package:custom_plugin\u002Fcustom_plugin.dart';\n        ```\n\n5. Edit main method of your app, register your custom_plugin plugin kit\n\n    ``` dart\n    if (kDebugMode) {\n      PluginManager.instance\n        ..register(CustomPlugin());\n      runApp(\n        UMEWidget(\n          child: MyApp(), \n          enable: true\n        )\n      );\n    } else {\n      runApp(MyApp());\n    }\n    ```\n\n6. Run your app\n\n### Access the nested widget debug kits quickly\n\nWe 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.\n\nFor more details, see [.\u002Fkits\u002Fflutter_ume_kit_ui\u002Flib\u002Fcomponents\u002Fcolor_picker\u002Fcolor_picker.dart](https:\u002F\u002Fgithub.com\u002Fbytedance\u002Fflutter_ume\u002Fblob\u002Fmaster\u002Fkits\u002Fflutter_ume_kit_ui\u002Flib\u002Fcomponents\u002Fcolor_picker\u002Fcolor_picker.dart) and [.\u002Fkits\u002Fflutter_ume_kit_ui\u002Flib\u002Fcomponents\u002Ftouch_indicator\u002Ftouch_indicator.dart](https:\u002F\u002Fgithub.com\u002Fbytedance\u002Fflutter_ume\u002Fblob\u002Fmaster\u002Fkits\u002Fflutter_ume_kit_ui\u002Flib\u002Fcomponents\u002Ftouch_indicator\u002Ftouch_indicator.dart).\n\nThe key steps are as follows:\n\n1. The class of your plugin should implement `PluggableWithNestedWidget`.\n2. Implements `Widget buildNestedWidget(Widget child)`. Handling the nested widgets and returning the new Widget.\n\n## How to use UME in Release\u002FProfile mode\n\n**Once you use flutter_ume in Release\u002FProfile mode, you agree that you will**\n**bear the relevant risks by yourself.**\n\n**The maintainer of flutter_ume does not assume any responsibility for the accident**\n**caused by this.**\n\n**We recommend not to use it in Release\u002FProfile mode for the following reasons:**\n\n1. VM Service is not available in these environments, so some functions are not available\n2. In this environment, developers need to isolate the app distribution channels by themselves to avoid submitting relevant debugging code to the production environment\n\nIn order to use in Release\u002FProfile mode, the details that need to be adjusted in the normal access process:\n\n1. In `pubspec.yaml`, `flutter_ume` and plugins should be write below `dependencies` rather than `dev_dependencies`.\n2. Don't put the code which call `PluginManager.instance.register()` and `UMEWidget(child: App())` into conditionals which represent debug mode. (Such as `kDebugMode`)\n3. Ensure the above details, run `flutter clean` and `flutter pub get`, then build your app.\n\n## About version\n\n### Compatibility\n\n| 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\n| ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- |\n| 0.1.x | ✅ | ✅ | ✅ | ✅ | ⚠️ | ⚠️ | ❌ | ❌ |\n| 0.2.x | ❌ | ❌ | ✅ | ✅ | ✅ | ⚠️ | ❌ | ❌ |\n| 0.3.x | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ |\n| 1.0.x | ❌ | ❌ | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ✅ | ✅ |\n| 1.1.x | ❌ | ❌ | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ✅ | ✅ |\n\n⚠️ means the version has not been fully tested for compatibility.\n\n### Special case\n\n- Please use `flutter_ume_kit_ui: ^1.1.0` and above version when you are using Flutter 3.7 and above.\n\n### Coverage\n\n| Package | master | develop | develop_nullsafety |\n| ---- | ---- | ---- | ---- |\n| flutter_ume | ![Coverage](https:\u002F\u002Fraw.githubusercontent.com\u002Fbytedance\u002Fflutter_ume\u002Fmaster\u002Fcoverage_badge.svg) | ![Coverage](https:\u002F\u002Fraw.githubusercontent.com\u002Fbytedance\u002Fflutter_ume\u002Fdevelop\u002Fcoverage_badge.svg) | ![Coverage](https:\u002F\u002Fraw.githubusercontent.com\u002Fbytedance\u002Fflutter_ume\u002Fdevelop_nullsafety\u002Fcoverage_badge.svg) |\n| flutter_ume_kit_device | ![Coverage](https:\u002F\u002Fraw.githubusercontent.com\u002Fbytedance\u002Fflutter_ume\u002Fmaster\u002Fkits\u002Fflutter_ume_kit_device\u002Fcoverage_badge.svg) | ![Coverage](https:\u002F\u002Fraw.githubusercontent.com\u002Fbytedance\u002Fflutter_ume\u002Fdevelop\u002Fkits\u002Fflutter_ume_kit_device\u002Fcoverage_badge.svg) | ![Coverage](https:\u002F\u002Fraw.githubusercontent.com\u002Fbytedance\u002Fflutter_ume\u002Fdevelop_nullsafety\u002Fkits\u002Fflutter_ume_kit_device\u002Fcoverage_badge.svg) |\n| flutter_ume_kit_perf | ![Coverage](https:\u002F\u002Fraw.githubusercontent.com\u002Fbytedance\u002Fflutter_ume\u002Fmaster\u002Fkits\u002Fflutter_ume_kit_perf\u002Fcoverage_badge.svg) | ![Coverage](https:\u002F\u002Fraw.githubusercontent.com\u002Fbytedance\u002Fflutter_ume\u002Fdevelop\u002Fkits\u002Fflutter_ume_kit_perf\u002Fcoverage_badge.svg) | ![Coverage](https:\u002F\u002Fraw.githubusercontent.com\u002Fbytedance\u002Fflutter_ume\u002Fdevelop_nullsafety\u002Fkits\u002Fflutter_ume_kit_perf\u002Fcoverage_badge.svg) |\n| flutter_ume_kit_show_code | ![Coverage](https:\u002F\u002Fraw.githubusercontent.com\u002Fbytedance\u002Fflutter_ume\u002Fmaster\u002Fkits\u002Fflutter_ume_kit_show_code\u002Fcoverage_badge.svg) | ![Coverage](https:\u002F\u002Fraw.githubusercontent.com\u002Fbytedance\u002Fflutter_ume\u002Fdevelop\u002Fkits\u002Fflutter_ume_kit_show_code\u002Fcoverage_badge.svg) | ![Coverage](https:\u002F\u002Fraw.githubusercontent.com\u002Fbytedance\u002Fflutter_ume\u002Fdevelop_nullsafety\u002Fkits\u002Fflutter_ume_kit_show_code\u002Fcoverage_badge.svg) |\n| flutter_ume_kit_ui | ![Coverage](https:\u002F\u002Fraw.githubusercontent.com\u002Fbytedance\u002Fflutter_ume\u002Fmaster\u002Fkits\u002Fflutter_ume_kit_ui\u002Fcoverage_badge.svg) | ![Coverage](https:\u002F\u002Fraw.githubusercontent.com\u002Fbytedance\u002Fflutter_ume\u002Fdevelop\u002Fkits\u002Fflutter_ume_kit_ui\u002Fcoverage_badge.svg) | ![Coverage](https:\u002F\u002Fraw.githubusercontent.com\u002Fbytedance\u002Fflutter_ume\u002Fdevelop_nullsafety\u002Fkits\u002Fflutter_ume_kit_ui\u002Fcoverage_badge.svg) |\n| flutter_ume_kit_console | ![Coverage](https:\u002F\u002Fraw.githubusercontent.com\u002Fbytedance\u002Fflutter_ume\u002Fmaster\u002Fkits\u002Fflutter_ume_kit_console\u002Fcoverage_badge.svg) | ![Coverage](https:\u002F\u002Fraw.githubusercontent.com\u002Fbytedance\u002Fflutter_ume\u002Fdevelop\u002Fkits\u002Fflutter_ume_kit_console\u002Fcoverage_badge.svg) | ![Coverage](https:\u002F\u002Fraw.githubusercontent.com\u002Fbytedance\u002Fflutter_ume\u002Fdevelop_nullsafety\u002Fkits\u002Fflutter_ume_kit_console\u002Fcoverage_badge.svg) |\n| flutter_ume_kit_dio | ![Coverage](https:\u002F\u002Fraw.githubusercontent.com\u002Fbytedance\u002Fflutter_ume\u002Fmaster\u002Fkits\u002Fflutter_ume_kit_dio\u002Fcoverage_badge.svg) | N\u002FA | ![Coverage](https:\u002F\u002Fraw.githubusercontent.com\u002Fbytedance\u002Fflutter_ume\u002Fdevelop_nullsafety\u002Fkits\u002Fflutter_ume_kit_dio\u002Fcoverage_badge.svg) |\n\n### Version upgrade rules\n\nPlease refer to [Semantic versions](https:\u002F\u002Fdart.dev\u002Ftools\u002Fpub\u002Fversioning#semantic-versions) for details.\n\n### Change log\n\n[Changelog](.\u002FCHANGELOG.md)\n\n## Contributing\n\nContributing rules: [Contributing](.\u002FCONTRIBUTING_en.md)\n\n### Contributors\n\nThanks to the following contributors (names not listed in order)：\n\n|  |  |\n| ---- | ---- |\n| ![ShirelyC](https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F11439167?s=64&v=4) | [ShirelyC](https:\u002F\u002Fgithub.com\u002FsmileShirely) |\n| ![lpylpyleo](https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F15264428?s=64&v=4) | [lpylpyleo](https:\u002F\u002Fgithub.com\u002Flpylpyleo) |\n| ![Alex Li](https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F15884415?s=64&v=4) | [Alex Li](https:\u002F\u002Fgithub.com\u002FAlexV525) |\n| ![Swain](https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F7621572?s=64&v=4) | [Swain](https:\u002F\u002Fgithub.com\u002Ftalisk) |\n| ![mengdouer](https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F58758250?s=64&v=4) | [mengdouer](https:\u002F\u002Fgithub.com\u002Fmengdouer) |\n| ![LAIIIHZ](https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F35956195?s=64&v=4) | [LAIIIHZ](https:\u002F\u002Fgithub.com\u002Flaiiihz) |\n| ![XinLei](https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F23734225?s=64&v=4) | [XinLei](https:\u002F\u002Fgithub.com\u002FVadaski) |\n| ![suli](https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F5837645?s=64&v=4) | [suli](https:\u002F\u002Fgithub.com\u002Fsuli1) |\n| ![wei-spring](https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F8155092?s=64&v=4) | [wei-spring](https:\u002F\u002Fgithub.com\u002Fwei-spring) |\n\n### Plugins from community\n\n- [flutter_ume_kit_channel_monitor](https:\u002F\u002Fpub.dev\u002Fpackages\u002Fflutter_ume_kit_channel_monitor)\n  - Channel communication monitor\n  - Cource code: https:\u002F\u002Fgithub.com\u002Fbytedance\u002Fflutter_ume\u002Ftree\u002Fmaster\u002Fkits\u002Fflutter_ume_kit_channel_monitor\n- [flutter_ume_kit_slow_animation](https:\u002F\u002Fpub.dev\u002Fpackages\u002Fflutter_ume_kit_slow_animation)\n  - Animation speed control\n  - Cource code: https:\u002F\u002Fgithub.com\u002Fcfug\u002Fflutter_ume_kits\n- [flutter_ume_kit_shared_preferences](https:\u002F\u002Fpub.dev\u002Fpackages\u002Fflutter_ume_kit_shared_preferences)\n  - shared_preferences tool\n  - Cource code: https:\u002F\u002Fgithub.com\u002Fcfug\u002Fflutter_ume_kits\n- [flutter_ume_kit_designer_check](https:\u002F\u002Fpub.dev\u002Fpackages\u002F)\n  - Comparing tool for Design UI and real UI\n  - Cource code: https:\u002F\u002Fgithub.com\u002Fcfug\u002Fflutter_ume_kits\n- [flutter_ume_kit_clean_local_data](https:\u002F\u002Fpub.dev\u002Fpackages\u002Fflutter_ume_kit_clean_local_data)\n  - Clean local data\n  - Cource code: https:\u002F\u002Fgithub.com\u002Fcfug\u002Fflutter_ume_kits 。\n- [flutter_ume_kit_database_kit](https:\u002F\u002Fpub.dev\u002Fpackages\u002Fflutter_ume_kit_database_kit)\n  - DB tool\n  - Cource code: https:\u002F\u002Fgithub.com\u002Fcfug\u002Fflutter_ume_kits 。\n- [ume_kit_monitor](https:\u002F\u002Fpub.dev\u002Fpackages\u002Fume_kit_monitor)\n  - Parameters monitor tools\n  - Cource code: https:\u002F\u002Fgithub.com\u002Ffastcode555\u002Fume_kit_monitor 。\n- [json2dart_viewerffi](https:\u002F\u002Fpub.dev\u002Fpackages\u002Fjson2dart_viewerffi)\n  - DB tool\n  - Cource code: https:\u002F\u002Fgithub.com\u002Ffastcode555\u002FJson2Dart_Null_Safety 。\n- [json2dart_viewer](https:\u002F\u002Fpub.dev\u002Fpackages\u002Fjson2dart_viewer)\n  - DB tool\n  - Cource code: https:\u002F\u002Fgithub.com\u002Ffastcode555\u002FJson2Dart_Null_Safety 。\n- [memory_detector_of_kit](https:\u002F\u002Fgithub.com\u002Fbladeofgod\u002Fmemory_detector_of_kit)\n  - Leaks tool\n- [channel_observer_of_kit](https:\u002F\u002Fgithub.com\u002Fbladeofgod\u002Fchannel_observer_of_kit)\n  - Channel communication monitor\n- [flutter-ume-kit-dio-enhance](https:\u002F\u002Fgithub.com\u002Flinversion\u002Fflutter-ume-kit-dio-enhance)\n  - Plugin base on flutter_ume_kit_dio\n\n### About the third-party open-source project dependencies\n\n- The TouchIndicator use the pub [touch_indicator](https:\u002F\u002Fpub.dev\u002Fpackages\u002Ftouch_indicator), the ColorPicker use the pub [cyclop](https:\u002F\u002Fpub.dev\u002Fpackages\u002Fcyclop).\n- We [fork](https:\u002F\u002Fgithub.com\u002Ftalisk\u002Fcyclop) the package [cyclop](https:\u002F\u002Fpub.dev\u002Fpackages\u002Fcyclop) and modify some code meet our functional needs. We should depend cyclop by pub version after the [PR](https:\u002F\u002Fgithub.com\u002Frxlabz\u002Fcyclop\u002Fpull\u002F11) being merged.\n\n## LICENSE\n\nThis project is licensed under the MIT License - visit the [LICENSE](.\u002FLICENSE) for details.\n\n## Contact the author\n\n**Maybe...**\n\n- Found a bug in the code, or an error in the documentation\n- Produces an exception when you use the UME\n- UME is not compatible with the new version Flutter\n- Have a good idea or suggestion\n\nYou can [submit an issue](.\u002FCONTRIBUTING_en.md#how-to-raise-an-issue) in any of the above situations.\n\n**Maybe...**\n\n- Communicate with the author\n- Communicate with more community developers\n- Cooperate with UME\n\nWelcome to [Join the ByteDance Flutter Exchange Group](https:\u002F\u002Fapplink.feishu.cn\u002Fclient\u002Fchat\u002Fchatter\u002Fadd_by_link?link_token=67au2f75-3783-41b0-8868-0fc0178f1fd8).\n\nOr contact [author](mailto:sunkai.dev@bytedance.com).\n","UME 是一个为 Flutter 应用提供的内嵌调试工具平台。它支持多种插件套件，包括 UI、设备信息和性能监控等，允许开发者快速访问和调试嵌套组件，并且可以自定义插件集成到 UME 中。使用 Dart 语言编写，兼容 iOS、Android、Web、macOS、Windows 和 Linux 平台。UME 适合在开发阶段对 Flutter 应用进行高效调试，提高开发效率和应用质量。","2026-06-11 03:21:50","top_language"]