fifty_skill_tree 0.1.2
fifty_skill_tree: ^0.1.2 copied to clipboard
Interactive skill tree widget for Flutter games - customizable, animated, and game-ready.
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.
0.1.2 - 2026-02-22 #
Fixed #
- Synced CHANGELOG.md with published version history (pub.dev compliance)
0.1.0 - 2026-01-19 #
Added #
Core Models
SkillNode<T>- Generic skill node model with support for:- Multi-level skills with variable costs per level
- Custom data attachment via generic type parameter
- Prerequisites and tier-based organization
- Skill types (passive, active, ultimate, keystone)
- Icon support (IconData or URL)
SkillTree<T>- Tree container with:- Node storage and retrieval
- Point management (add, remove, set)
- Unlock logic with prerequisite validation
- Progress export/import for save games
- Full tree serialization to JSON
SkillConnection- Connection model with:- Normal, required, and exclusive connection types
- Visual styling options (solid, dashed, dotted)
UnlockResult<T>- Result object for unlock operations with detailed failure reasons
Layouts
VerticalTreeLayout- Traditional top-to-bottom skill treeHorizontalTreeLayout- Left-to-right skill treeRadialTreeLayout- Circular layout with configurable anglesGridLayout- Grid-based positioning with row/column configurationCustomLayout- User-defined positioning via callback
Animations
UnlockAnimation- Scale and glow effect on skill unlockPulseAnimation- Pulsing border for available skillsGlowAnimation- Soft glow effect for highlighted nodesShakeAnimation- Shake effect for failed unlock attemptsPathHighlightAnimation- Connection path highlighting on hover
Theming
SkillTreeTheme- Comprehensive theming with:- State-based node colors (locked, available, unlocked, maxed)
- Type-based node colors (passive, active, ultimate, keystone)
- Connection colors and widths
- Text styles for names, levels, costs, and tooltips
- Theme presets:
dark()- Dark theme (default)light()- Light themerpg()- Fantasy RPG gold/purple palettescifi()- Futuristic cyan/blue paletteminimal()- Clean monochrome designnature()- Earth tones and greens
Serialization
- Progress export/import for save game integration
- Full tree serialization for sharing/backup
- JSON-based format for easy integration
Widgets
SkillTreeView<T>- Main interactive widget with:- Pan and pinch-to-zoom support
- Mouse wheel zoom on desktop
- Customizable node and connection rendering
- Tap and long-press callbacks
SkillNodeWidget<T>- Default node rendering with state visualsSkillTooltip- Hover/long-press tooltip displaySkillTreeController<T>- State management with:- Unlock operations
- View control (zoom, pan, focus)
- Selection and hover tracking
- ChangeNotifier integration
Painters
ConnectionPainter- Base connection renderingBezierPainter- Curved bezier connectionsLinePainter- Straight line connectionsDashedPainter- Dashed line styleEnergyFlowPainter- Animated energy flow effect
Testing #
- 188 unit and widget tests covering:
- Model tests (SkillNode, SkillTree, SkillConnection, UnlockResult)
- Layout algorithm tests (all 5 layouts)
- Controller tests (state management, unlock operations)
- Widget tests with interaction verification
- Serialization round-trip tests
Documentation #
- Comprehensive README with examples
- Complete API documentation comments (dartdoc)
- Example application with 4 demo screens:
- Basic Tree - Simple linear progression
- RPG Skill Tree - Multi-branch with save/load
- Tech Tree - Grid layout
- Talent Tree - MOBA-style paths
Ecosystem Integration #
- Compatible with Fifty Design Language (FDL)
- Example app demonstrates
fifty_theme,fifty_tokens,fifty_uiintegration
