|
@@ -1,21 +1,22 @@
|
|
-import 'package:flutter/widgets.dart';
|
|
|
|
|
|
+import 'package:flutter/material.dart';
|
|
import '../document/node.dart';
|
|
import '../document/node.dart';
|
|
-import '../render/base_node_widget.dart';
|
|
|
|
|
|
+import 'node_widget_builder.dart';
|
|
|
|
|
|
-typedef NodeWidgetBuilder<T extends Node> = BaseNodeWidget Function(
|
|
|
|
- T node,
|
|
|
|
- RenderPlugins plugins,
|
|
|
|
-);
|
|
|
|
|
|
+typedef NodeWidgetBuilderF<T extends Node, A extends NodeWidgetBuilder> = A
|
|
|
|
+ Function({
|
|
|
|
+ required T node,
|
|
|
|
+ required RenderPlugins renderPlugins,
|
|
|
|
+});
|
|
|
|
|
|
// unused
|
|
// unused
|
|
-typedef NodeBuilder<T extends Node> = T Function(Node node);
|
|
|
|
|
|
+// typedef NodeBuilder<T extends Node> = T Function(Node node);
|
|
|
|
|
|
class RenderPlugins {
|
|
class RenderPlugins {
|
|
- Map<String, NodeWidgetBuilder> nodeWidgetBuilders = {};
|
|
|
|
|
|
+ Map<String, NodeWidgetBuilderF> nodeWidgetBuilders = {};
|
|
// unused
|
|
// unused
|
|
// Map<String, NodeBuilder> nodeBuilders = {};
|
|
// Map<String, NodeBuilder> nodeBuilders = {};
|
|
|
|
|
|
- void register(String name, NodeWidgetBuilder builder) {
|
|
|
|
|
|
+ void register(String name, NodeWidgetBuilderF builder) {
|
|
nodeWidgetBuilders[name] = builder;
|
|
nodeWidgetBuilders[name] = builder;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -23,12 +24,12 @@ class RenderPlugins {
|
|
nodeWidgetBuilders.removeWhere((key, _) => key == name);
|
|
nodeWidgetBuilders.removeWhere((key, _) => key == name);
|
|
}
|
|
}
|
|
|
|
|
|
- BaseNodeWidget buildWidgetWithNode(Node node) {
|
|
|
|
|
|
+ Widget buildWidgetWithNode(Node node) {
|
|
final nodeWidgetBuilder = _nodeWidgetBuilder(node.type);
|
|
final nodeWidgetBuilder = _nodeWidgetBuilder(node.type);
|
|
- return nodeWidgetBuilder(node, this);
|
|
|
|
|
|
+ return nodeWidgetBuilder(node: node, renderPlugins: this)();
|
|
}
|
|
}
|
|
|
|
|
|
- NodeWidgetBuilder _nodeWidgetBuilder(String name) {
|
|
|
|
|
|
+ NodeWidgetBuilderF _nodeWidgetBuilder(String name) {
|
|
assert(nodeWidgetBuilders.containsKey(name));
|
|
assert(nodeWidgetBuilders.containsKey(name));
|
|
return nodeWidgetBuilders[name]!;
|
|
return nodeWidgetBuilders[name]!;
|
|
}
|
|
}
|