library flowy_plugin; import 'package:app_flowy/plugin/plugin.dart'; import 'package:app_flowy/startup/startup.dart'; import 'package:app_flowy/workspace/domain/page_stack/page_stack.dart'; import 'package:flowy_sdk/protobuf/flowy-folder-data-model/view.pb.dart'; import 'package:flutter/widgets.dart'; export "./src/sandbox.dart"; typedef PluginType = int; typedef PluginDataType = ViewDataType; abstract class Plugin { PluginType get pluginType; String get pluginId; bool get enable; void dispose(); PluginDisplay get display; } abstract class PluginBuilder { Plugin build(dynamic data); String get pluginName; PluginType get pluginType; ViewDataType get dataType => ViewDataType.PlainText; } abstract class PluginDisplay with NavigationItem { @override Widget get leftBarItem; @override Widget? get rightBarItem; List get navigationItems; Widget buildWidget(); } void registerPlugin({required PluginBuilder builder}) { getIt().registerPlugin(builder.pluginType, builder); } Plugin makePlugin({required PluginType pluginType, dynamic data}) { final plugin = getIt().buildPlugin(pluginType, data); return plugin; } enum FlowyPluginException { invalidData, }