cmx_onboarding
A highly customizable Flutter onboarding package with 16 built-in UI templates, themeable indicators and buttons, per-page styling, full controller support, and a dead-simple API.
Features
- 16 production-ready templates — classic, parallax, fade, zoom, card-stack, split-screen, fullscreen, minimal, glassmorphism, story, slide-up, lottie, editorial, vibrant, pastel, darkPro
- 6 indicator styles + a "none" option — dots, expanding dots, worm, lines, numeric (
1 / 4), avatar group - Programmatic navigation via
OnboardController(next(),previous(),jumpTo(),animateToPage()) - Auto-play with optional loop
- Per-page customization — solid color / gradient / image backgrounds, title style, description style, image widget
- RTL aware (uses ambient
Directionality) - Pure Dart/Flutter — works on Android, iOS, web, and desktop
- Lottie animation support out of the box
Install
dependencies:
cmx_onboarding: ^0.0.1
Quick start
import 'package:cmx_onboarding/cmx_onboarding.dart';
Onboardly(
template: OnboardTemplate.classic,
pages: const [
OnboardPage(
title: 'Welcome',
description: 'Your app, your way.',
image: Icon(Icons.explore, size: 120, color: Colors.white),
backgroundColor: Color(0xFF6750A4),
),
OnboardPage(
title: 'Connect',
description: 'Find people who care about the same things you do.',
image: Icon(Icons.people, size: 120, color: Colors.white),
backgroundColor: Color(0xFF1E88E5),
),
],
onDone: () => Navigator.of(context).pushReplacementNamed('/home'),
)
With a controller
final controller = OnboardController();
Onboardly(
template: OnboardTemplate.parallax,
controller: controller,
indicatorType: OnboardIndicatorType.expandingDot,
activeColor: Colors.deepPurple,
inactiveColor: Colors.grey,
pages: pages,
onDone: () {},
onSkip: () {},
onPageChanged: (i) => print('on page $i'),
);
// Later, from anywhere:
controller.next();
controller.jumpTo(2);
controller.startAutoPlay(const Duration(seconds: 3));
Templates
| Template | Best for |
|---|---|
OnboardTemplate.classic |
Image top, text bottom — the safe default |
OnboardTemplate.parallax |
Adding depth without extra assets |
OnboardTemplate.fade |
Distraction-free, no swipe gesture |
OnboardTemplate.zoom |
Hero illustrations with focus |
OnboardTemplate.cardStack |
Card-based content |
OnboardTemplate.splitScreen |
Hero photo + white text panel |
OnboardTemplate.fullscreen |
Full-bleed photography |
OnboardTemplate.minimal |
Icon + headline only |
OnboardTemplate.glassmorphism |
Modern, colorful gradient UIs |
OnboardTemplate.story |
Instagram-style auto progress |
OnboardTemplate.slideUp |
Static hero, animated text |
OnboardTemplate.lottie |
Lottie animation per page |
OnboardTemplate.editorial |
Bold left-aligned headline + tilted card |
OnboardTemplate.vibrant |
Solid bold color, mascot, full-width pill |
OnboardTemplate.pastel |
Pastel bg, avatars, square arrow CTA |
OnboardTemplate.darkPro |
Dark, dual CTA (sign in + get started) |
Indicators
| Type | Looks like |
|---|---|
OnboardIndicatorType.dot |
● ○ ○ ○ |
OnboardIndicatorType.expandingDot |
▬ ○ ○ ○ |
OnboardIndicatorType.worm |
stretching active dot |
OnboardIndicatorType.line |
▭ ▫ ▫ ▫ |
OnboardIndicatorType.number |
2 / 4 |
OnboardIndicatorType.avatarGroup |
overlapping avatars |
OnboardIndicatorType.none |
(hidden) |
Example app
Check out example/ for a gallery of every template.
License
MIT
Libraries
- cmx_onboarding
- CMX Onboarding — a Flutter onboarding package with 16 built-in templates, full controller support, themeable indicators and buttons, and per-page styling.