onboarding
This is a sample flutter onboarding plugin you use to attract first-time users when they land on your page, hence the name onboarding. You can implement this widget anyhow you want in your app, by managing its top-level state to show the widget to users at the appropriate time. There are also many parameters that enable you to design this widget to your liking.
Environment
sdk: ">=2.12.0 <3.0.0"
flutter: ">=1.17.0"
Getting Started
To start using this widget, you will need to first import the package inside your project following the installation guide found on peb.dev/packages/onboarding.
dependencies:
onboarding: ^2.1.0
$ flutter pub get
Usage
To use this widget,
import 'package:onboarding/onboarding.dart';
inside your dart file- Follow the example found at the
main.dart
of the example and implement it in your app.
Example
class MyApp extends StatelessWidget {
final onboardingPagesList = [
PageModel(
widget: Column(
children: [
Container(
padding: EdgeInsets.only(bottom: 45.0),
child: Image.asset('assets/images/facebook.png',
color: pageImageColor)),
Container(
width: double.infinity,
child: Text('SECURED BACKUP', style: pageTitleStyle)),
Container(
width: double.infinity,
child: Text(
'Keep your files in closed safe so you can\'t lose them',
style: pageInfoStyle,
),
),
],
),
),
PageModel(
widget: Column(
children: [
Image.asset('assets/images/twitter.png', color: pageImageColor),
Text('CHANGE AND RISE', style: pageTitleStyle),
Text(
'Give others access to any file or folder you choose',
style: pageInfoStyle,
)
],
),
),
PageModel(
widget: Column(
children: [
Image.asset('assets/images/instagram.png', color: pageImageColor),
Text('EASY ACCESS', style: pageTitleStyle),
Text(
'Reach your files anytime from any devices anywhere',
style: pageInfoStyle,
),
],
),
),
];
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
visualDensity: VisualDensity.adaptivePlatformDensity,
),
home: Onboarding(
proceedButtonStyle: ProceedButtonStyle(
proceedButtonRoute: (context) {
return Navigator.pushAndRemoveUntil(
context,
MaterialPageRoute(
builder: (context) => Container(),
),
(route) => false,
);
},
),
isSkippable = true,
pages: onboardingPagesList,
indicator: Indicator(
indicatorDesign: IndicatorDesign.line(
lineDesign: LineDesign(
lineType: DesignType.line_uniform,
),
),
),
//-------------Other properties--------------
//Color background,
//EdgeInsets pagesContentPadding
//EdgeInsets titleAndInfoPadding
//EdgeInsets footerPadding
//SkipButtonStyle skipButtonStyle
),
);
}
}
Display
Sample examples of using different indicator types
Onboarding(
proceedButtonStyle: ProceedButtonStyle(
proceedButtonRoute: (context) {
return Navigator.pushAndRemoveUntil(
context,
MaterialPageRoute(
builder: (context) => Container(),
),
(route) => false,
);
}),
pages: onboardingPagesList,
isSkippable = true,
indicator: Indicator(
indicatorDesign: IndicatorDesign.line(
lineDesign: LineDesign(
lineType: DesignType.line_uniform,
),
),
),
)
Onboarding(
proceedButtonStyle: ProceedButtonStyle(
proceedButtonRoute: (context) {
return Navigator.pushAndRemoveUntil(
context,
MaterialPageRoute(
builder: (context) => Container(),
),
(route) => false,
);
}),
pages: onboardingPagesList,
isSkippable = true,
indicator: Indicator(
indicatorDesign: IndicatorDesign.line(
lineDesign: LineDesign(
lineType: DesignType.line_nonuniform,
),
),
),
)
Onboarding(
proceedButtonStyle: ProceedButtonStyle(
proceedButtonRoute: (context) {
return Navigator.pushAndRemoveUntil(
context,
MaterialPageRoute(
builder: (context) => Container(),
),
(route) => false,
);
}),
pages: onboardingPagesList,
isSkippable = true,
indicator: Indicator(
indicatorDesign: IndicatorDesign.polygon(
polygonDesign: PolygonDesign(
polygon: DesignType.polygon_arrow,
),
),
),
)
Onboarding(
proceedButtonStyle: ProceedButtonStyle(
proceedButtonRoute: (context) {
return Navigator.pushAndRemoveUntil(
context,
MaterialPageRoute(
builder: (context) => Container(),
),
(route) => false,
);
}),
pages: onboardingPagesList,
isSkippable = true,
indicator: Indicator(
indicatorDesign: IndicatorDesign.polygon(
polygonDesign: PolygonDesign(
polygon: DesignType.polygon_circle,
),
),
),
)
Onboarding(
proceedButtonStyle: ProceedButtonStyle(
proceedButtonRoute: (context) {
return Navigator.pushAndRemoveUntil(
context,
MaterialPageRoute(
builder: (context) => Container(),
),
(route) => false,
);
}),
pages: onboardingPagesList,
isSkippable = true,
indicator: Indicator(
indicatorDesign: IndicatorDesign.polygon(
polygonDesign: PolygonDesign(
polygon: DesignType.polygon_diamond,
),
),
),
)
Onboarding(
proceedButtonStyle: ProceedButtonStyle(
proceedButtonRoute: (context) {
return Navigator.pushAndRemoveUntil(
context,
MaterialPageRoute(
builder: (context) => Container(),
),
(route) => false,
);
}),
pages: onboardingPagesList,
isSkippable = true,
indicator: Indicator(
indicatorDesign: IndicatorDesign.polygon(
polygonDesign: PolygonDesign(
polygon: DesignType.polygon_pentagon,
),
),
),
)
Onboarding(
proceedButtonStyle: ProceedButtonStyle(
proceedButtonRoute: (context) {
return Navigator.pushAndRemoveUntil(
context,
MaterialPageRoute(
builder: (context) => Container(),
),
(route) => false,
);
}),
pages: onboardingPagesList,
isSkippable = true,
indicator: Indicator(
indicatorDesign: IndicatorDesign.polygon(
polygonDesign: PolygonDesign(
polygon: DesignType.polygon_square,
polygonSpacer: 14.0
),
),
),
)