zeba_academy_showcase
A powerful Flutter package for building interactive onboarding experiences, coach marks, feature discovery systems, and guided walkthroughs with beautiful spotlight animations.
✨ Features
✅ Widget highlighting ✅ Spotlight effects ✅ Interactive tutorials ✅ Coach marks ✅ Guided onboarding ✅ Step indicators ✅ Feature discovery system ✅ Animated overlays ✅ Skip & next controls ✅ Lightweight & customizable ✅ Beginner-friendly API
📦 Installation
Add this to your pubspec.yaml:
dependencies:
zeba_academy_showcase: ^0.0.1
Then run:
flutter pub get
🚀 Quick Start
Import the package:
import 'package:zeba_academy_showcase/zeba_academy_showcase.dart';
🧠 Basic Usage
1. Create Global Keys
final GlobalKey menuKey = GlobalKey();
final GlobalKey searchKey = GlobalKey();
final GlobalKey fabKey = GlobalKey();
2. Create Showcase Controller
late ShowcaseController controller;
@override
void initState() {
super.initState();
controller = ShowcaseController(
steps: [
ShowcaseStep(
key: menuKey,
title: "Menu",
description: "Open navigation drawer from here.",
),
ShowcaseStep(
key: searchKey,
title: "Search",
description: "Search anything instantly.",
),
ShowcaseStep(
key: fabKey,
title: "Add",
description: "Create new items quickly.",
),
],
);
WidgetsBinding.instance.addPostFrameCallback((_) {
controller.start();
});
}
3. Wrap Your App
ShowcaseOverlay(
controller: controller,
child: Scaffold(
body: YourWidget(),
),
)
4. Wrap Target Widgets
ShowcaseTarget(
showcaseKey: menuKey,
child: IconButton(
onPressed: () {},
icon: const Icon(Icons.menu),
),
)
📘 Complete Example
import 'package:flutter/material.dart';
import 'package:zeba_academy_showcase/zeba_academy_showcase.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: const HomePage(),
);
}
}
class HomePage extends StatefulWidget {
const HomePage({super.key});
@override
State<HomePage> createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
final GlobalKey menuKey = GlobalKey();
final GlobalKey searchKey = GlobalKey();
final GlobalKey fabKey = GlobalKey();
late ShowcaseController controller;
@override
void initState() {
super.initState();
controller = ShowcaseController(
steps: [
ShowcaseStep(
key: menuKey,
title: "Menu",
description: "Open the app menu from here.",
),
ShowcaseStep(
key: searchKey,
title: "Search",
description: "Search content instantly.",
),
ShowcaseStep(
key: fabKey,
title: "Create",
description: "Tap here to add new items.",
),
],
);
WidgetsBinding.instance.addPostFrameCallback((_) {
controller.start();
});
}
@override
Widget build(BuildContext context) {
return ShowcaseOverlay(
controller: controller,
child: Scaffold(
appBar: AppBar(
title: const Text("Zeba Showcase"),
leading: ShowcaseTarget(
showcaseKey: menuKey,
child: IconButton(
onPressed: () {},
icon: const Icon(Icons.menu),
),
),
actions: [
ShowcaseTarget(
showcaseKey: searchKey,
child: IconButton(
onPressed: () {},
icon: const Icon(Icons.search),
),
),
],
),
body: const Center(
child: Text(
"zeba_academy_showcase Demo",
style: TextStyle(fontSize: 22),
),
),
floatingActionButton: ShowcaseTarget(
showcaseKey: fabKey,
child: FloatingActionButton(
onPressed: () {},
child: const Icon(Icons.add),
),
),
),
);
}
}
🎨 Customization
You can customize:
- Spotlight shape
- Overlay opacity
- Tooltip design
- Animation duration
- Button styles
- Text styles
- Highlight padding
- Border radius
📂 Package Structure
lib/
│
├── zeba_academy_showcase.dart
│
└── src/
├── controller/
├── models/
├── widgets/
└── utils/
🧪 Running Tests
flutter test
🛠 Roadmap
Circular spotlight supportAuto tooltip positioningProgress indicatorsBack button supportShowcase persistenceMultiple overlay themesCustom animation systemAccessibility improvements
🤝 Contributing
Contributions are welcome!
If you find bugs or want new features, feel free to open issues and pull requests.
📄 License
This project is licensed under the GPL License.
👨💻 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 at: 🌐 https://sufyanism.com/
Connect with me on LinkedIn: 💼 https://www.linkedin.com/in/sufyanism
🚀 Your all-in-one learning hub!
Explore courses and resources in coding, tech, and development at:
🌍 https://zeba.academy 💻 https://code.zeba.academy
Empower yourself with practical skills through curated tutorials, real-world projects, and hands-on experience.
Level up your tech game today! 💻✨
🔗 Links
🌐 Main Website https://zeba.academy
💻 Coding Platform https://code.zeba.academy
📺 YouTube https://www.youtube.com/@zeba.academy
📸 Instagram https://www.instagram.com/zeba.academy/
❤️ Support
If you like this package, please give it a ⭐ on GitHub and share it with the Flutter community.
🙌 Thank You
Thank you for visiting and supporting open-source development!