From 60fb57f9049c1738508029885a54d5766965855f Mon Sep 17 00:00:00 2001 From: Carlos Lopez-Rosario Date: Thu, 5 Mar 2020 18:24:44 -0500 Subject: [PATCH] RouteGenerator --- lib/main.dart | 6 ++---- lib/news/feed.dart | 2 +- lib/route_generator.dart | 45 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 48 insertions(+), 5 deletions(-) create mode 100644 lib/route_generator.dart diff --git a/lib/main.dart b/lib/main.dart index 3ea11af..fc04fcc 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,3 +1,4 @@ +import 'package:capstone_hungry_hippos/route_generator.dart'; import 'package:flutter/material.dart'; import 'screens/home_widget.dart'; import 'screens/sport.dart'; @@ -10,10 +11,7 @@ class App extends StatelessWidget { return MaterialApp( debugShowCheckedModeBanner: false, initialRoute: '/', - routes: { - '/': (context) => Home(), - '/Sport': (context) => Sport(), - }, + onGenerateRoute: RouteGenerator.generateRoute, ); } } diff --git a/lib/news/feed.dart b/lib/news/feed.dart index 3592029..f9da8d6 100644 --- a/lib/news/feed.dart +++ b/lib/news/feed.dart @@ -43,7 +43,7 @@ class HorizontalNewsFeed extends StatelessWidget { title: title, trailing: IconButton( icon: Icon(Icons.navigate_next), - onPressed: () => Navigator.pushNamed(context, '/Sport'), + onPressed: () => Navigator.of(context).pushNamed('/Sport'), ), ), Expanded( diff --git a/lib/route_generator.dart b/lib/route_generator.dart new file mode 100644 index 0000000..757bd65 --- /dev/null +++ b/lib/route_generator.dart @@ -0,0 +1,45 @@ +import 'package:flutter/material.dart'; +import 'package:capstone_hungry_hippos/main.dart'; +import 'package:capstone_hungry_hippos/screens/home_widget.dart'; +import 'package:capstone_hungry_hippos/screens/sport.dart'; + +class RouteGenerator { + static Route generateRoute(RouteSettings settings){ + final args = settings.arguments; //This is how we pass arguments and can be used in case + + switch (settings.name){ + case '/': + return MaterialPageRoute(builder: (_) => Home()); + case '/Sport': + //We can put logic and stuff here for checking if logged in + return MaterialPageRoute(builder: (_) => Sport()); + default: + return _errorRoute(); + } + } + + static Route _errorRoute() { + return MaterialPageRoute(builder: (_){ + return Scaffold( + appBar: AppBar( + title: Text("Error Page"), + ), + body: Center( + child: Text("Error Page"), + ), + drawer: Drawer( + child: ListView( + children: [ + ListTile( + title: IconButton( + icon: Icon(Icons.home), + onPressed: () => Navigator.pushNamed(_, '/'), + ), + ), + ], + ), + ), + ); + }); + } +}