zeba_academy_skill_tree

License: GPL v3 pub package Flutter

A powerful Flutter package for building interactive skill trees and learning paths with unlockable nodes, dependency management, learning tracks, and visual progress tracking.

Perfect for:

  • šŸŽ“ E-learning platforms
  • šŸ“š Course progression systems
  • 🧠 Skill roadmap applications
  • šŸŽ® Gamified education
  • šŸ† Achievement systems
  • šŸš€ Learning journey experiences

Features

āœ… Unlockable skill nodes āœ… Dependency-based progression āœ… Learning tracks support āœ… Progress visualization āœ… Custom node styling āœ… Responsive layouts āœ… State management ready āœ… Smooth animations āœ… Lightweight architecture āœ… Easy integration


Preview

Basics
   ↓
Widgets
   ↓
State Management
   ↓
Advanced Flutter

Installation

Add dependency:

dependencies:
  zeba_academy_skill_tree: latest

Install:

flutter pub get

Import:

import 'package:zeba_academy_skill_tree/zeba_academy_skill_tree.dart';

Quick Start

Create Nodes

final nodes = [

SkillNode(
id: '1',
title: 'Basics',
icon: Icons.school,
status: SkillStatus.unlocked,
),

SkillNode(
id: '2',
title: 'Widgets',
icon: Icons.widgets,
dependencies: ['1'],
),

SkillNode(
id: '3',
title: 'State',
icon: Icons.memory,
dependencies: ['2'],
),

];

Setup Controller

final controller =
SkillTreeController(
nodes,
);

Build UI

ChangeNotifierProvider(

create: (_) => controller,

child: const SkillTree(),

)

Unlock Logic

A node becomes available only after all dependency nodes are completed.

Example:

Course A
   ↓
Course B
   ↓
Course C

Complete A → unlock B Complete B → unlock C


Progress Tracking

Track user completion percentage automatically.

controller.totalProgress

Update progress:

controller.updateProgress(
'2',
0.6,
);

Complete node:

controller.complete(
'2',
);

Learning Tracks

Group nodes into structured paths.

SkillTrack(

title: 'Flutter Mastery',

nodes: [

basics,
widgets,
state,

],

);

Example

MaterialApp(

home: Scaffold(

appBar: AppBar(
title: const Text(
'Skill Tree',
),

),

body: const SkillTree(),

),

);

Package Structure

lib/

models/
 ā”œā”€ā”€ skill_node.dart
 └── skill_track.dart

controllers/
 └── skill_tree_controller.dart

widgets/
 ā”œā”€ā”€ skill_tree.dart
 ā”œā”€ā”€ progress_header.dart
 └── skill_node_widget.dart

utils/
 └── unlock_engine.dart

Roadmap

  • Zoomable tree
  • Drag interactions
  • Firebase sync
  • XP system
  • Achievements
  • Node animations
  • Offline persistence
  • Riverpod support
  • Analytics

Contributing

Contributions are welcome.

  1. Fork repository
  2. Create branch
git checkout -b feature/new-feature
  1. Commit changes
git commit -m "Add feature"
  1. Push
git push origin feature/new-feature
  1. Open Pull Request

License

This project is licensed under the GNU General Public License v3.0 (GPL-3.0).

See the LICENSE file for details.


About Me

✨ I’m Sufyan bin Uzayr, an open-source developer passionate about building and sharing meaningful projects.

You can learn more about me and my work:

🌐 https://sufyanism.com šŸ’¼ https://www.linkedin.com/in/sufyanism


Your all-in-one learning hub!

šŸš€ Explore courses and resources in coding, tech, and development at Zeba Academy.

Empower yourself with practical skills through curated tutorials, real-world projects, and hands-on experience.

🌐 https://zeba.academy šŸ’» https://code.zeba.academy ā–¶ https://www.youtube.com/@zeba.academy šŸ“ø https://www.instagram.com/zeba.academy/

Thank you for visiting ā¤ļø