-
Notifications
You must be signed in to change notification settings - Fork 9
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
persitent theming, animated icons, config screen
- Loading branch information
1 parent
1912099
commit f53668f
Showing
32 changed files
with
480 additions
and
205 deletions.
There are no files selected for viewing
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,38 +1,49 @@ | ||
import 'package:device_preview/device_preview.dart'; | ||
import 'package:flutter/material.dart'; | ||
import 'package:flutter/services.dart'; | ||
import 'package:fst_app_flutter/models/theme_model.dart'; | ||
import 'package:fst_app_flutter/models/preferences/theme_model.dart'; | ||
import 'package:fst_app_flutter/routing/generate_routes.dart'; | ||
|
||
import 'package:fst_app_flutter/utils/app_theme.dart'; | ||
import 'package:provider/provider.dart'; | ||
|
||
void main() { | ||
runApp(DevicePreview(child: FSTApp())); | ||
void main() async { | ||
WidgetsFlutterBinding.ensureInitialized(); | ||
ThemeModel themeModel = ThemeModel(); | ||
await themeModel.init(); | ||
runApp(DevicePreview( | ||
child: FSTApp( | ||
themeModel: themeModel, | ||
))); | ||
} | ||
|
||
class FSTApp extends StatelessWidget { | ||
final ThemeModel themeModel; | ||
|
||
FSTApp({Key key, this.themeModel}) : super(key: key); | ||
// This widget is the root of the application. | ||
@override | ||
Widget build(BuildContext context) { | ||
|
||
return ChangeNotifierProvider( | ||
create: (context) => ThemeModel(), | ||
child: Consumer<ThemeModel>( | ||
builder:(context, themeModel, child) { | ||
SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle( | ||
statusBarColor: AppTheme.getTheme(themeModel.selectedTheme,MediaQuery.platformBrightnessOf(context)).primaryColor, | ||
)); | ||
return MaterialApp( | ||
debugShowCheckedModeBanner: false, | ||
theme: AppTheme.getTheme(ThemeMode.light, MediaQuery.platformBrightnessOf(context)), | ||
darkTheme: AppTheme.getTheme(ThemeMode.dark, MediaQuery.platformBrightnessOf(context)), | ||
themeMode: themeModel.selectedTheme, | ||
title: 'FST App', | ||
builder: DevicePreview.appBuilder, | ||
onGenerateRoute: Router.generateRoute, | ||
); | ||
}, | ||
)); | ||
create: (context) => themeModel, | ||
builder: (context, child) => Consumer<ThemeModel>( | ||
builder: (context, themeModel, child) { | ||
SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle( | ||
statusBarColor: AppTheme.getTheme(themeModel.selectedTheme, | ||
MediaQuery.platformBrightnessOf(context)) | ||
.primaryColor, | ||
)); | ||
return MaterialApp( | ||
debugShowCheckedModeBanner: false, | ||
theme: AppTheme.getTheme(ThemeMode.light, | ||
MediaQuery.platformBrightnessOf(context)), | ||
darkTheme: AppTheme.getTheme( | ||
ThemeMode.dark, MediaQuery.platformBrightnessOf(context)), | ||
themeMode: themeModel.selectedTheme, | ||
title: 'FST App', | ||
builder: DevicePreview.appBuilder, | ||
onGenerateRoute: Router.generateRoute, | ||
); | ||
}, | ||
)); | ||
} | ||
} |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
import 'package:flutter/cupertino.dart'; | ||
import 'package:flutter/material.dart'; | ||
import 'package:fst_app_flutter/models/preferences/theme_preference.dart'; | ||
|
||
class ThemeModel with ChangeNotifier { | ||
static ThemePreference _themePreference = ThemePreference(); | ||
//set to system theme by default | ||
ThemeMode _currentTheme; | ||
|
||
init() async { | ||
_currentTheme = await _themePreference.mode; | ||
} | ||
|
||
ThemeMode get selectedTheme => _currentTheme; | ||
|
||
switchThemeTo(ThemeMode themeMode) { | ||
_currentTheme = themeMode; | ||
_themePreference.setThemeMode(themeMode); | ||
notifyListeners(); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
import 'package:flutter/material.dart'; | ||
|
||
class StatefulPopupRoute extends PopupRoute { | ||
Widget page; | ||
|
||
StatefulPopupRoute({RouteSettings settings, this.page}) | ||
: super( | ||
settings: settings, | ||
); | ||
|
||
@override | ||
Color get barrierColor => Colors.black54; | ||
|
||
@override | ||
bool get barrierDismissible => true; | ||
|
||
@override | ||
String get barrierLabel => 'Stateful popup barrier'; | ||
|
||
@override | ||
Widget buildPage(BuildContext context, Animation<double> animation, | ||
Animation<double> secondaryAnimation) { | ||
return page; | ||
} | ||
|
||
@override | ||
Duration get transitionDuration => Duration(milliseconds: 300); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
import 'package:flutter/material.dart'; | ||
import 'package:fst_app_flutter/screens/app_preferences_screen/app_preferences_view_mobile.dart'; | ||
import 'package:fst_app_flutter/screens/app_preferences_screen/app_preferences_view_tablet.dart'; | ||
import 'package:fst_app_flutter/widgets/orientation_layout.dart'; | ||
import 'package:fst_app_flutter/widgets/screen_type_layout.dart'; | ||
|
||
class AppPreferencesView extends StatelessWidget { | ||
const AppPreferencesView({Key key}) : super(key: key); | ||
|
||
@override | ||
Widget build(BuildContext context) { | ||
return ScreenTypeLayout( | ||
mobile: OrientationLayout( | ||
portrait: (context) => AppPreferencesViewMobilePortrait(), | ||
landscape: (context) => AppPreferencesViewMobileLandscape(), | ||
), | ||
tablet: OrientationLayout( | ||
portrait: (context) => AppPreferencesViewTabletPortrait(), | ||
landscape: (context) => AppPreferencesViewTabletLandscape(), | ||
), | ||
); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
import 'package:flutter/material.dart'; | ||
import 'package:fst_app_flutter/models/preferences/theme_model.dart'; | ||
import 'package:fst_app_flutter/routing/stateful_popup_route.dart'; | ||
import 'package:fst_app_flutter/widgets/preferences/theme_chooser_dialog.dart'; | ||
import 'package:provider/provider.dart'; | ||
|
||
class AppPreferencesViewMobileLandscape extends StatelessWidget { | ||
const AppPreferencesViewMobileLandscape({Key key}) : super(key: key); | ||
|
||
@override | ||
Widget build(BuildContext context) { | ||
return Container(); | ||
} | ||
} | ||
|
||
class AppPreferencesViewMobilePortrait extends StatelessWidget { | ||
const AppPreferencesViewMobilePortrait({Key key}) : super(key: key); | ||
|
||
@override | ||
Widget build(BuildContext context) { | ||
return Scaffold( | ||
appBar: AppBar( | ||
title: Text('Settings'), | ||
centerTitle: false, | ||
), | ||
body: Consumer<ThemeModel>(builder: (context, themeModel, child) { | ||
return ListView(children: [ | ||
ListTile( | ||
leading: Icon(Icons.brush), | ||
title: Text('Theme'), | ||
subtitle: | ||
Text(themeModel.selectedTheme.toString().substring(10)), | ||
onTap: () => Navigator.push( | ||
context, | ||
StatefulPopupRoute( | ||
page: ThemeChooserDialog(), | ||
settings: RouteSettings(arguments: themeModel)), | ||
)), | ||
Divider(), | ||
]); | ||
})); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
import 'package:flutter/material.dart'; | ||
|
||
class AppPreferencesViewTabletLandscape extends StatelessWidget { | ||
const AppPreferencesViewTabletLandscape({Key key}) : super(key: key); | ||
|
||
@override | ||
Widget build(BuildContext context) { | ||
return Container( | ||
); | ||
} | ||
} | ||
|
||
class AppPreferencesViewTabletPortrait extends StatelessWidget { | ||
const AppPreferencesViewTabletPortrait({Key key}) : super(key: key); | ||
|
||
@override | ||
Widget build(BuildContext context) { | ||
return Container( | ||
); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.