flutter_ume停更了,那我就自己写一个flutter_mana

flutter_mana 是一个 Flutter 应用内调试平台,它提供了统一的调试入口和面板,内置了多个实用调试插件,同时支持开发者注册自定义插件。

因为flutter_ume不维护,项目因此而生,mana的名字来自于一部国漫《灵笼》中的玛娜设定,强烈推荐!

安装

shell 复制代码
# 安装核心
flutter pub add flutter_mana
# 安装插件
flutter pub add flutter_mana_kits

使用

dart 复制代码
import 'package:flutter/material.dart';
import 'package:flutter_mana/flutter_mana.dart';
import 'package:flutter_mana_kits/flutter_mana_kits.dart';


void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  // 注册插件
  ManaPluginManager.instance
    ..register(ManaPackageInfo())
    ..register(ManaMemoryInfo())
    ..register(ManaShowCode())
    ..register(ManaLogViewer())
    ..register(ManaDeviceInfo())
    ..register(ManaColorSucker())
    ..register(ManaDioInspector())
    ..register(ManaWidgetInfoInspector())
    ..register(ManaFpsMonitor())
    ..register(ManaSharedPreferencesViewer())
    ..register(ManaAlignRuler());

  // 包裹
  runApp(ManaWidget(child: MyApp()));
}

class App extends StatelessWidget {
  const App({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      title: 'Example',
      home: Text('Example'),
    );
  }
}

尽量在开发环境使用,部分插件只在开发环境才能生效!!!

插件

插件开发

只要实现插件接口即可注册使用

  • 接口定义
dart 复制代码
abstract class ManaPluggable {
  /// The unique identifier name for the plugin.
  ///
  /// 插件的唯一标识名。
  String get name;

  /// Returns the localized display name for the plugin.
  /// This supports internationalization.
  ///
  /// 插件在界面上显示的名字,支持国际化。
  String getLocalizedDisplayName(Locale locale);

  /// Called when the plugin is triggered.
  /// This method should contain the plugin's main logic.
  ///
  /// 当插件被触发时调用的方法,执行主要逻辑。
  void onTrigger();

  /// Optionally builds a widget to display the plugin's content within the UI.
  /// Returns `null` if the plugin does not have a visual component.
  ///
  /// 可选地构建一个 Widget,用于在界面中展示该插件的内容。
  /// 如果插件没有可视化组件,则返回 `null`。
  Widget? buildWidget(BuildContext? context);

  /// Returns the [ImageProvider] for the plugin's icon, used for displaying the plugin's visual representation.
  ///
  /// 获取插件图标的 [ImageProvider],用于展示插件图标。
  ImageProvider get iconImageProvider;

  /// Async initialization for the plugin.
  ///
  /// 插件的异步初始化方法
  Future<void> initialize();
}

预览

  • 面板
  • 日志查看器
  • 内存信息

更多功能和预览,请查看链接

相关推荐
程序员老刘4 分钟前
Google突然“变脸“,2026年要给全球开发者上“紧箍咒“?
android·flutter·客户端
鹏多多.5 小时前
flutter-使用fluttertoast制作丰富的高颜值toast
android·前端·flutter·ios
农夫三拳_有点甜6 小时前
Dart Map API 详细总结
dart
新镜19 小时前
【Flutter】RefreshIndicator 无法下拉刷新问题
flutter
星秋Eliot19 小时前
Flutter的三棵树
前端·flutter
humiaor1 天前
Flutter之riverpod状态管理Widget UI详解
flutter·consumer·widget·hooks·provider·riverpod·hookwidget
农夫三拳_有点甜1 天前
Flutter Stack 组件总结
flutter
MaoJiu1 天前
Flutter混合开发:在iOS工程中嵌入Flutter Module
flutter·ios
新镜1 天前
【Flutter】flutter_local_notifications并发下载任务通知实践
flutter
农夫三拳_有点甜1 天前
Flutter SafeArea 组件总结
flutter