outliner_view 0.2.4
outliner_view: ^0.2.4 copied to clipboard
A platform-agnostic Flutter outliner library with block-based editing, drag-and-drop reordering, and customizable rendering.
Changelog #
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased] #
Added #
editingBlockBuildercallback for custom editing widgets- Allows full customization of the editing experience
- Provides access to
TextEditingController,FocusNode, andonSubmittedcallback - Works seamlessly with sensible defaults when not provided
Documentation #
- Clarified dependency requirements in README and CLAUDE.md
- Explained that both
flutter_hooksandhooks_riverpodare required flutter_hooksprovides hook functions (useState, useEffect, etc.)hooks_riverpodprovides HookConsumerWidget for combining hooks with Riverpod- Both packages are needed in version 2.6.1 as hooks_riverpod doesn't re-export hooks
- Explained that both
0.1.0 - 2025-10-20 #
Added #
- Initial release of outliner_view library
- Platform-agnostic hierarchical block-based editing
- Core widgets:
OutlinerListView,BlockWidget,DraggableBlockWidget - Immutable state management with Riverpod + Freezed
- Drag-and-drop reordering with three drop zones (before, after, as-child)
- Collapsible/expandable sections
- Inline block editing with focus management
- Customizable rendering via builder callbacks:
blockBuilderfor custom block content when not editingbulletBuilderfor custom bullets/collapse indicatorstextFieldDecorationBuilderfor custom TextField styling
- Configuration classes:
BlockStyleandOutlinerConfig - Repository pattern for flexible persistence (
OutlinerRepositoryinterface) - Default in-memory repository implementation
- Keyboard shortcuts support (Tab/Shift+Tab for indent/outdent, Enter for split)
- Mobile-friendly focus tracking with convenience methods:
indentFocusedBlock(),outdentFocusedBlock(),removeFocusedBlock()splitFocusedBlock(),addChildToFocusedBlock()
- Comprehensive property-based tests using
dartproptest - Example app demonstrating Material Design integration
- Complete API documentation
Features #
- Unlimited nesting depth for hierarchical blocks
- Automatic prevention of circular parent-child relationships
- No block duplication - all structural invariants maintained
- Clean separation between library core and UI framework
- Full customization without subclassing