4
2
Fork 0

replaced pageview with nested navigator for better UX

pull/31/head^2
Sudharshan S. 2019-03-03 17:41:22 +08:00
parent 0d8e2a82b2
commit 22aa18dd0c
Signed by: sudharshan
GPG Key ID: C861C97AAF3D9559
4 changed files with 112 additions and 85 deletions

View File

@ -19,8 +19,7 @@ class Welcome extends StatelessWidget {
padding: EdgeInsets.only(
top: topPadding,
bottom: bottomPadding + 10.0,
left: 15.0,
right: 15.0),
),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
@ -33,7 +32,27 @@ class Welcome extends StatelessWidget {
child: Text("Beep",
style: Theme.of(context).accentTextTheme.display3)),
]),
Expanded(child: OtpPage()),
Expanded(
child: Navigator(
initialRoute: "welcome/hello",
onGenerateRoute: (RouteSettings settings) {
WidgetBuilder builder;
switch (settings.name) {
case "welcome/hello":
builder = (BuildContext _) => WelcomePage();
break;
case "welcome/login":
builder = (BuildContext _) => LoginPage();
break;
case "welcome/otp":
builder = (BuildContext _) => OtpPage();
break;
default:
throw Exception("Invalid route: ${settings.name}");
}
return MaterialPageRoute(builder: builder, settings: settings);
},
)),
]),
decoration: BoxDecoration(
gradient: LinearGradient(

View File

@ -9,7 +9,9 @@ class LoginPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Column(mainAxisSize: MainAxisSize.min, children: <Widget>[
return Padding(
padding: EdgeInsets.only(left: 15.0, right: 15.0),
child: Column(mainAxisSize: MainAxisSize.min, children: <Widget>[
Padding(
padding: EdgeInsets.only(top: 10.0, bottom: 20.0),
child: SvgPicture.asset(phoneSvg,
@ -27,12 +29,14 @@ class LoginPage extends StatelessWidget {
.accentTextTheme
.title
.copyWith(fontWeight: FontWeight.w400)),
Padding(padding: EdgeInsets.only(top: 20.0), child: PhoneInput()),
Padding(
padding: EdgeInsets.only(top: 20.0), child: PhoneInput()),
]),
Spacer(),
TextButton(
text: "Continue",
onClickCallback: () => Navigator.pushNamed(context, '/otp')),
]);
onClickCallback: () =>
Navigator.pushNamed(context, 'welcome/otp')),
]));
}
}

View File

@ -9,7 +9,9 @@ class OtpPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Column(mainAxisSize: MainAxisSize.min, children: <Widget>[
return Padding(
padding: EdgeInsets.only(left: 15.0, right: 15.0),
child: Column(mainAxisSize: MainAxisSize.min, children: <Widget>[
Padding(
padding: EdgeInsets.only(top: 10.0, bottom: 20.0),
child: SvgPicture.asset(phoneSvg,
@ -45,8 +47,7 @@ class OtpPage extends StatelessWidget {
]),
Spacer(),
TextButton(
text: "Done",
onClickCallback: () => Navigator.pushNamed(context, '/home')),
]);
text: "Done", onClickCallback: () => Navigator.of(context).pop),
]));
}
}

View File

@ -8,7 +8,9 @@ class WelcomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Column(mainAxisSize: MainAxisSize.min, children: <Widget>[
return Padding(
padding: EdgeInsets.only(left: 15.0, right: 15.0),
child: Column(mainAxisSize: MainAxisSize.min, children: <Widget>[
Spacer(),
SvgPicture.asset(welcomeSvg,
width: MediaQuery.of(context).size.width - 40.0),
@ -21,8 +23,9 @@ class WelcomePage extends StatelessWidget {
textAlign: TextAlign.center)),
TextButton(
text: "Login",
onClickCallback: () => Navigator.pushNamed(context, "/login")),
onClickCallback: () =>
Navigator.pushNamed(context, "welcome/login")),
TextButton(text: "Sign Up", onClickCallback: () => print("hello")),
]);
]));
}
}