From 847ff7d703d85e0f18c6eb33ab039f5dde340e61 Mon Sep 17 00:00:00 2001 From: Tommy Chow Date: Wed, 25 Aug 2021 00:47:01 -0400 Subject: [PATCH] Refactor main page, add tab bar --- lib/main.dart | 38 ++++++++------------------ lib/screens/home.dart | 63 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+), 27 deletions(-) create mode 100644 lib/screens/home.dart diff --git a/lib/main.dart b/lib/main.dart index e7aeec98..2fd158f3 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:frosty/providers/authentication_provider.dart'; -import 'package:frosty/screens/channel_list.dart'; +import 'package:frosty/providers/settings_provider.dart'; +import 'package:frosty/screens/home.dart'; import 'package:provider/provider.dart'; void main() { @@ -12,33 +13,16 @@ class MyApp extends StatelessWidget { Widget build(BuildContext context) { return MultiProvider( providers: [ - ChangeNotifierProvider(create: (_) => Authentication()), + ChangeNotifierProvider(create: (_) => AuthenticationProvider()), + ChangeNotifierProvider(create: (_) => SettingsProvider()), ], - child: Builder( - builder: (context) { - return MaterialApp( - title: 'Frosty', - theme: ThemeData( - primaryColor: Colors.purple.shade900, - primarySwatch: Colors.blue, - brightness: Brightness.dark, - ), - home: Scaffold( - appBar: AppBar( - title: Text('Top Channels'), - ), - body: FutureBuilder( - future: context.read().init(), - builder: (context, snapshot) { - if (snapshot.connectionState == ConnectionState.done) { - return ChannelList(); - } - return CircularProgressIndicator(); - }, - ), - ), - ); - }, + child: MaterialApp( + title: 'Frosty', + theme: ThemeData( + primarySwatch: Colors.blue, + brightness: Brightness.dark, + ), + home: Home(), ), ); } diff --git a/lib/screens/home.dart b/lib/screens/home.dart new file mode 100644 index 00000000..7034ea41 --- /dev/null +++ b/lib/screens/home.dart @@ -0,0 +1,63 @@ +import 'package:flutter/material.dart'; +import 'package:frosty/providers/authentication_provider.dart'; +import 'package:frosty/screens/settings.dart'; +import 'package:provider/provider.dart'; + +import 'channel_list.dart'; + +class Home extends StatelessWidget { + const Home({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return DefaultTabController( + length: 3, + child: Scaffold( + appBar: AppBar( + title: Text('Top Channels'), + bottom: TabBar( + tabs: [ + Tab(text: 'Top'), + Tab(text: 'Followed'), + Tab(text: 'Games'), + ], + ), + actions: [ + IconButton( + icon: Icon(Icons.settings), + onPressed: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) { + return Settings(); + }, + ), + ); + }, + ) + ], + ), + body: FutureBuilder( + future: context.read().init(), + builder: (context, snapshot) { + if (snapshot.connectionState == ConnectionState.done) { + return TabBarView( + children: [ + ChannelList(), + Center( + child: Text('Followed'), + ), + Center( + child: Text('Games'), + ), + ], + ); + } + return Center(child: CircularProgressIndicator()); + }, + ), + ), + ); + } +}