flutter_intro
A better way for new feature introduction and step-by-step users guide for your Flutter project.

Usage
To use this package, add flutter_intro
as a dependency in your pubspec.yaml file.
Init

The intro
object in the first step contains the keys
property, and keys
is a globalKey
array of length stepCount
. Just bind the globalKey
in the array to the corresponding component.
Run
That's it!
If you need to completely customize the style and content of the guide page, you need to implement the widgetBuilder
method yourself.
This method will be called internally by flutter_intro
when the intro page appears,
and will pass some data on the current page in the form of parameters StepWidgetParams
,
and finally render the component returned by this method on the screen.

StepWidgetParams
provides all the parameters needed to generate the guide page.
The theme provided by default is also based on this parameter to generate the guide page.
Q&A
Q1. What if the highlighted area is not displayed completely?

A1. That's because Intro provides 8px padding by default.

We can change it by setting the value of padding.

Q2. Can I set different configurations for each step?
A2. Above version 0.4.x
, you can set single or multiple step settings(padding & borderRadius) through setStepConfig and setStepsConfig.
Q3. Can I make the highlight area smaller?
A3. You can do it by setting padding to a negative number.

Example
class _MyHomePageState extends State<MyHomePage> {
Intro intro;
_MyHomePageState() {
/// init Intro
intro = Intro(
stepCount: 4,
/// use defaultTheme, or you can implement widgetBuilder function yourself
widgetBuilder: StepWidgetBuilder.useDefaultTheme(
texts: [
'Hello, I\'m Flutter Intro.',
'I can help you quickly implement the Step By Step guide in the Flutter project.',
'My usage is also very simple, you can quickly learn and use it through example and api documentation.',
'In order to quickly implement the guidance, I also provide a set of out-of-the-box themes, I wish you all a happy use, goodbye!',
],
btnLabel: 'I KNOW',
showStepLabel: true,
),
);
}
@override
void initState() {
super.initState();
Timer(Duration(microseconds: 0), () {
/// start the intro
intro.start(context);
});
}
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: SizedBox.expand(
child: Container(
padding: EdgeInsets.all(16),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
SizedBox(
width: 100,
child: Placeholder(
/// 2nd guide
key: intro.keys[1],
fallbackHeight: 100,
),
),
SizedBox(
height: 16,
),
Placeholder(
/// 3rd guide
key: intro.keys[2],
fallbackHeight: 100,
),
SizedBox(
height: 16,
),
Row(
mainAxisAlignment: MainAxisAlignment.end,
children: [
SizedBox(
width: 100,
child: Placeholder(
/// 4th guide
key: intro.keys[3],
fallbackHeight: 300,
),
),
],
),
],
),
),
),
floatingActionButton: FloatingActionButton(
/// 1st guide
key: intro.keys[0],
child: Icon(
Icons.play_arrow,
),
onPressed: () {
intro.start(context);
},
),
);
}
}
GitHub
https://github.com/tal-tech/flutter_intro