OnBoardingScreens: Do not let us skip screens

This requires us to dynamically generate the screens based on if we have
completed the screen or not.
This commit is contained in:
Vishesh Handa
2019-01-11 18:42:26 +01:00
parent fe4f6effe7
commit 839da00307

View File

@ -16,15 +16,28 @@ class OnBoardingScreen extends StatefulWidget {
} }
class OnBoardingScreenState extends State<OnBoardingScreen> { class OnBoardingScreenState extends State<OnBoardingScreen> {
var _pageInputUrlDone = false;
var _pageSshKeyDone = false;
var pageController = PageController(); var pageController = PageController();
final GlobalKey<ScaffoldState> _scaffoldKey = new GlobalKey<ScaffoldState>(); final GlobalKey<ScaffoldState> _scaffoldKey = new GlobalKey<ScaffoldState>();
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
var pageView = PageView( var pageCount = 1;
if (_pageInputUrlDone) {
pageCount++;
}
if (_pageSshKeyDone) {
pageCount++;
}
var pageView = PageView.builder(
controller: pageController, controller: pageController,
children: <Widget>[ itemBuilder: (BuildContext context, int pos) {
OnBoardingGitUrl(doneFunction: (String sshUrl) { if (pos == 0) {
return OnBoardingGitUrl(doneFunction: (String sshUrl) {
setPageInputUrlDone();
pageController.nextPage( pageController.nextPage(
duration: Duration(milliseconds: 200), duration: Duration(milliseconds: 200),
curve: Curves.easeIn, curve: Curves.easeIn,
@ -33,20 +46,28 @@ class OnBoardingScreenState extends State<OnBoardingScreen> {
SharedPreferences.getInstance().then((SharedPreferences pref) { SharedPreferences.getInstance().then((SharedPreferences pref) {
pref.setString("sshCloneUrl", sshUrl); pref.setString("sshCloneUrl", sshUrl);
}); });
}), });
OnBoardingSshKey( }
if (pos == 1) {
return OnBoardingSshKey(
doneFunction: () { doneFunction: () {
setPageSshKeyDone();
pageController.nextPage( pageController.nextPage(
duration: Duration(milliseconds: 200), duration: Duration(milliseconds: 200),
curve: Curves.easeIn, curve: Curves.easeIn,
); );
}, },
scaffoldKey: _scaffoldKey, scaffoldKey: _scaffoldKey,
), );
OnBoardingGitClone( }
if (pos == 2) {
return OnBoardingGitClone(
doneFunction: this.widget.onBoardingCompletedFunction, doneFunction: this.widget.onBoardingCompletedFunction,
), );
], }
},
itemCount: pageCount,
); );
return new Scaffold( return new Scaffold(
@ -59,6 +80,18 @@ class OnBoardingScreenState extends State<OnBoardingScreen> {
), ),
); );
} }
void setPageInputUrlDone() {
setState(() {
this._pageInputUrlDone = true;
});
}
void setPageSshKeyDone() {
setState(() {
this._pageSshKeyDone = true;
});
}
} }
class OnBoardingGitUrl extends StatefulWidget { class OnBoardingGitUrl extends StatefulWidget {