diff --git a/lib/main.dart b/lib/main.dart index 3ea11af..0a4231b 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,6 +1,5 @@ +import 'package:capstone_hungry_hippos/route_generator.dart'; import 'package:flutter/material.dart'; -import 'screens/home_widget.dart'; -import 'screens/sport.dart'; void main() => runApp(App()); @@ -10,10 +9,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..3e01d5e --- /dev/null +++ b/lib/route_generator.dart @@ -0,0 +1,53 @@ +import 'package:capstone_hungry_hippos/screens/chat.dart'; +import 'package:capstone_hungry_hippos/screens/schedule.dart'; +import 'package:capstone_hungry_hippos/screens/standing.dart'; +import 'package:flutter/material.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()); + case '/Schedule': + return MaterialPageRoute(builder: (_) => Schedule()); + case '/Standing': + return MaterialPageRoute(builder: (_) => Standing()); + case '/Chat': + return MaterialPageRoute(builder: (_) => Chat()); + 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(_, '/'), + ), + ), + ], + ), + ), + ); + }); + } +} diff --git a/lib/screens/chat.dart b/lib/screens/chat.dart new file mode 100644 index 0000000..e987612 --- /dev/null +++ b/lib/screens/chat.dart @@ -0,0 +1,40 @@ +import 'package:flutter/material.dart'; + +class Chat extends StatelessWidget{ + @override + Widget build(BuildContext context) { + return StatefulBuilder( + builder: (context, StateSetter setState) => Scaffold( + appBar: AppBar( + centerTitle: false, + title: Text("49ers"), + backgroundColor: Colors.green, + ), + body: Text("Chat Goes Here"), + drawer: Drawer( + child: ListView( + children: [ + DrawerHeader( + child: Text( + 'Drawer Header', + style: TextStyle( + color: Colors.white, + fontSize: 24, + ), + ), + decoration: BoxDecoration( + color: Colors.green, + ), + ), + ListTile( + title: IconButton( + icon: Icon(Icons.home), + onPressed: () => Navigator.pushNamed(context, '/'), + ), + ), + ], + ), + ) + )); + } +} \ No newline at end of file diff --git a/lib/screens/home_widget.dart b/lib/screens/home_widget.dart index 9a7946d..6c0488d 100644 --- a/lib/screens/home_widget.dart +++ b/lib/screens/home_widget.dart @@ -1,50 +1,64 @@ import 'package:flutter/material.dart'; import '../news/feed.dart'; - class Home extends StatelessWidget { - - final feed = Feed(); //was var not final - @override Widget build(BuildContext context) { - return StatefulBuilder( - builder: (context, StateSetter setState) => Scaffold( - appBar: AppBar( - centerTitle: false, - title: Text("49ers"), - backgroundColor: Colors.green, - ), - body: ListView( - children: [ - HorizontalNewsFeed(newsFeed: feed, title: Text("Basketball")), - HorizontalNewsFeed(newsFeed: feed, title: Text("Soccer")), - HorizontalNewsFeed(newsFeed: feed, title: Text("Football")), - HorizontalNewsFeed(newsFeed: feed, title: Text("Volleyball")), - ], - ), - drawer: Drawer( - child: ListView( - children: [ - DrawerHeader( - child: Text( - 'Drawer Header', - style: TextStyle( - color: Colors.white, - fontSize: 28, - ), - ), - decoration: BoxDecoration( - color: Colors.green, - ), - ), - ListTile( - leading: Icon(Icons.message), - title: Text('Messages'), - ), - ], + return Scaffold( + body: CustomScrollView( + slivers: [ + _AppBar(), + SliverList(delegate: SliverChildListDelegate(_buildList())), + ], + ), + drawer: Drawer( + child: ListView( + children: [ + DrawerHeader( + child: Text( + 'Drawer Header', + style: TextStyle( + color: Colors.white, + fontSize: 28, ), ), - )); + decoration: BoxDecoration( + color: Colors.green, + ), + ), + ListTile( + title: IconButton( + icon: Icon(Icons.message), + onPressed: () => Navigator.pushNamed(context, '/Chat'), + ), + ), + ], + ), + ), + ); } } + +class _AppBar extends StatelessWidget { + @override + Widget build(BuildContext context) { + return SliverAppBar( + centerTitle: false, + title: Text("49ers"), + backgroundColor: Colors.green, + ); + } +} + +List _buildList() { + final feed = Feed(); + List listItems = List(); + listItems.add(HorizontalNewsFeed(newsFeed: feed, title: Text("Football"))); + listItems.add(HorizontalNewsFeed(newsFeed: feed, title: Text("Soccer"))); + listItems.add(HorizontalNewsFeed(newsFeed: feed, title: Text("Basketball"))); + listItems.add(HorizontalNewsFeed(newsFeed: feed, title: Text("Volleyball"))); + listItems.add(HorizontalNewsFeed(newsFeed: feed, title: Text("Baseball"))); + listItems.add(HorizontalNewsFeed(newsFeed: feed, title: Text("Softball"))); + listItems.add(HorizontalNewsFeed(newsFeed: feed, title: Text("Tennis"))); + return listItems; +} diff --git a/lib/screens/schedule.dart b/lib/screens/schedule.dart new file mode 100644 index 0000000..c827f1f --- /dev/null +++ b/lib/screens/schedule.dart @@ -0,0 +1,40 @@ +import 'package:flutter/material.dart'; + +class Schedule extends StatelessWidget{ + @override + Widget build(BuildContext context) { + return StatefulBuilder( + builder: (context, StateSetter setState) => Scaffold( + appBar: AppBar( + centerTitle: false, + title: Text("49ers"), + backgroundColor: Colors.green, + ), + body: Text("Schedule Goes Here"), + drawer: Drawer( + child: ListView( + children: [ + DrawerHeader( + child: Text( + 'Drawer Header', + style: TextStyle( + color: Colors.white, + fontSize: 24, + ), + ), + decoration: BoxDecoration( + color: Colors.green, + ), + ), + ListTile( + title: IconButton( + icon: Icon(Icons.home), + onPressed: () => Navigator.pushNamed(context, '/'), + ), + ), + ], + ), + ) + )); + } +} \ No newline at end of file diff --git a/lib/screens/sport.dart b/lib/screens/sport.dart index 2d7d1ae..ac34014 100644 --- a/lib/screens/sport.dart +++ b/lib/screens/sport.dart @@ -55,6 +55,18 @@ class Sport extends StatelessWidget { onPressed: () => Navigator.pushNamed(context, '/'), ), ), + ListTile( + title: IconButton( + icon: Icon(Icons.table_chart), + onPressed: () => Navigator.pushNamed(context, '/Standing'), + ), + ), + ListTile( + title: IconButton( + icon: Icon(Icons.calendar_today), + onPressed: () => Navigator.pushNamed(context, '/Schedule'), + ), + ), ], ), ), diff --git a/lib/screens/standing.dart b/lib/screens/standing.dart new file mode 100644 index 0000000..32a4029 --- /dev/null +++ b/lib/screens/standing.dart @@ -0,0 +1,40 @@ +import 'package:flutter/material.dart'; + +class Standing extends StatelessWidget{ + @override + Widget build(BuildContext context) { + return StatefulBuilder( + builder: (context, StateSetter setState) => Scaffold( + appBar: AppBar( + centerTitle: false, + title: Text("49ers"), + backgroundColor: Colors.green, + ), + body: Text("Standings Goes Here"), + drawer: Drawer( + child: ListView( + children: [ + DrawerHeader( + child: Text( + 'Drawer Header', + style: TextStyle( + color: Colors.white, + fontSize: 24, + ), + ), + decoration: BoxDecoration( + color: Colors.green, + ), + ), + ListTile( + title: IconButton( + icon: Icon(Icons.home), + onPressed: () => Navigator.pushNamed(context, '/'), + ), + ), + ], + ), + ) + )); + } +} \ No newline at end of file diff --git a/pubspec.lock b/pubspec.lock index dd132b2..a5d537b 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -22,6 +22,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.4.0" + bloc: + dependency: transitive + description: + name: bloc + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.0" boolean_selector: dependency: transitive description: @@ -69,6 +76,13 @@ packages: description: flutter source: sdk version: "0.0.0" + flutter_bloc: + dependency: "direct main" + description: + name: flutter_bloc + url: "https://pub.dartlang.org" + source: hosted + version: "3.2.0" flutter_test: dependency: "direct dev" description: flutter @@ -109,6 +123,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.1.8" + nested: + dependency: transitive + description: + name: nested + url: "https://pub.dartlang.org" + source: hosted + version: "0.0.4" path: dependency: transitive description: @@ -130,6 +151,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.4.0" + provider: + dependency: transitive + description: + name: provider + url: "https://pub.dartlang.org" + source: hosted + version: "4.0.4" quiver: dependency: transitive description: @@ -137,6 +165,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.0.5" + rxdart: + dependency: transitive + description: + name: rxdart + url: "https://pub.dartlang.org" + source: hosted + version: "0.23.1" sky_engine: dependency: transitive description: flutter @@ -183,7 +218,7 @@ packages: name: test_api url: "https://pub.dartlang.org" source: hosted - version: "0.2.11" + version: "0.2.15" typed_data: dependency: transitive description: @@ -206,4 +241,5 @@ packages: source: hosted version: "3.5.0" sdks: - dart: ">=2.4.0 <3.0.0" + dart: ">=2.6.0 <3.0.0" + flutter: ">=1.12.1" diff --git a/pubspec.yaml b/pubspec.yaml index 5d4a329..7cf311d 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -19,6 +19,7 @@ environment: dependencies: flutter: sdk: flutter + flutter_bloc: ^3.2.0 http: ^0.12.0+4