⚠️ WARNING: I have downgraded
freezedto version 2.5.7 so old projects will not have compatibility issues withsource_gen2.0.0
Simple implementation of a Mind Map using a Radial layout. This layout ensures child nodes do not overlap with their parents or siblings by automatically rebalancing node positions. Additionally, nodes with more children automatically take up more angular span.

Features
With the default implementation, it provides:
- Automatic rebalancing
- Add, update, and remove nodes
- Panning and zooming support
Fully customizable:
- Node and connector rendering (see Dashboard.dart)
- BLoC state management integration
Getting started
Check out the example folder for usage with the default implementation.
Usage
flutter pub add teno_mindmap
class HomePage extends StatelessWidget {
const HomePage({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('Mind Map Canvas')),
body: const MindMap(title: 'Your Goal'),
);
}
}
TODO LIST:
Increase test coverageAdd prebuilt styles for the default implementation
Libraries
- canvas/bloc/CanvasBloc
- canvas/bloc/CanvasState
- canvas/CanvasActivityDetector
- canvas/GridCanvas
- constants
- converters/OffsetJsonConverter
- converters/SizeJsonConverter
- dashboard/bloc/DashboardBloc
- dashboard/bloc/DashboardState
- dashboard/Dashboard
- dashboard/LayoutService
- dashboard/widgets/ConnectorWrapper
- dashboard/widgets/DefaultConnectorRenderer
- dashboard/widgets/DefaultNodeRenderer
- dashboard/widgets/IconTextButton
- dashboard/widgets/NodeWrapper
- l10n/generated/app_localizations
- l10n/generated/app_localizations_en
- MindMapEditor
- models/MindMap
- models/Node
- models/NodeMeta
- teno_mindmap