From d9da034e73c301146568be550906b0ab69470ae8 Mon Sep 17 00:00:00 2001 From: Alex Vavvas Date: Thu, 12 Nov 2020 14:54:02 +0200 Subject: [PATCH 1/6] Styling revamp using CupertinoThemeData and CupertinoTextThemeData to handle dark mode --- experimental/veggieseasons/lib/main.dart | 2 + .../veggieseasons/lib/screens/details.dart | 11 +- .../veggieseasons/lib/screens/favorites.dart | 3 - .../veggieseasons/lib/screens/list.dart | 4 +- .../veggieseasons/lib/screens/search.dart | 1 - experimental/veggieseasons/lib/styles.dart | 182 +++++------------- .../lib/widgets/settings_item.dart | 2 - .../veggieseasons/lib/widgets/trivia.dart | 6 +- .../lib/widgets/veggie_card.dart | 10 +- .../lib/widgets/veggie_headline.dart | 1 - 10 files changed, 68 insertions(+), 154 deletions(-) diff --git a/experimental/veggieseasons/lib/main.dart b/experimental/veggieseasons/lib/main.dart index 2792b1fd0bf..f7cfdd660da 100644 --- a/experimental/veggieseasons/lib/main.dart +++ b/experimental/veggieseasons/lib/main.dart @@ -8,6 +8,7 @@ import 'package:provider/provider.dart'; import 'package:veggieseasons/data/app_state.dart'; import 'package:veggieseasons/data/preferences.dart'; import 'package:veggieseasons/screens/home.dart'; +import 'package:veggieseasons/styles.dart'; void main() { WidgetsFlutterBinding.ensureInitialized(); @@ -58,6 +59,7 @@ class _VeggieAppState extends State with RestorationMixin { ), ], child: CupertinoApp( + theme: Styles.veggieThemeData, debugShowCheckedModeBanner: false, home: HomeScreen(restorationId: 'home'), restorationScopeId: 'app', diff --git a/experimental/veggieseasons/lib/screens/details.dart b/experimental/veggieseasons/lib/screens/details.dart index bdd6e3f94ad..aa8efac26ee 100644 --- a/experimental/veggieseasons/lib/screens/details.dart +++ b/experimental/veggieseasons/lib/screens/details.dart @@ -28,12 +28,10 @@ class ServingInfoChart extends StatelessWidget { builder: (context, snapshot) { final target = snapshot?.data ?? 2000; final percent = standardPercentage * 2000 ~/ target; - final themeData = CupertinoTheme.of(context); return Text( '$percent% DV', textAlign: TextAlign.end, - style: Styles.detailsServingValueText(themeData), ); }, ); @@ -54,7 +52,6 @@ class ServingInfoChart extends StatelessWidget { ), child: Text( 'Serving info', - style: Styles.detailsServingHeaderText, ), ), ), @@ -79,7 +76,6 @@ class ServingInfoChart extends StatelessWidget { child: Text( veggie.servingSize, textAlign: TextAlign.end, - style: Styles.detailsServingValueText(themeData), ), ), ], @@ -96,7 +92,6 @@ class ServingInfoChart extends StatelessWidget { child: Text( '${veggie.caloriesPerServing} kCal', textAlign: TextAlign.end, - style: Styles.detailsServingValueText(themeData), ), ), ], @@ -184,7 +179,7 @@ class InfoView extends StatelessWidget { style: (snapshot.hasData && snapshot.data.contains(veggie.category)) ? Styles.detailsPreferredCategoryText(themeData) - : Styles.detailsCategoryText(themeData), + : themeData.textTheme.textStyle, ); }, ), @@ -210,7 +205,6 @@ class InfoView extends StatelessWidget { SizedBox(height: 8), Text( veggie.shortDescription, - style: Styles.detailsDescriptionText(themeData), ), ServingInfoChart(veggie, prefs), SizedBox(height: 24), @@ -249,7 +243,8 @@ class DetailsScreen extends StatefulWidget { static Route _routeBuilder(BuildContext context, Object arguments) { final veggieId = arguments as int; return CupertinoPageRoute( - builder: (context) => DetailsScreen(id: veggieId, restorationId: 'details'), + builder: (context) => + DetailsScreen(id: veggieId, restorationId: 'details'), fullscreenDialog: true, ); } diff --git a/experimental/veggieseasons/lib/screens/favorites.dart b/experimental/veggieseasons/lib/screens/favorites.dart index 05446673e2d..bd4808d56ef 100644 --- a/experimental/veggieseasons/lib/screens/favorites.dart +++ b/experimental/veggieseasons/lib/screens/favorites.dart @@ -7,7 +7,6 @@ import 'package:flutter/widgets.dart'; import 'package:provider/provider.dart'; import 'package:veggieseasons/data/app_state.dart'; import 'package:veggieseasons/data/veggie.dart'; -import 'package:veggieseasons/styles.dart'; import 'package:veggieseasons/widgets/veggie_headline.dart'; class FavoritesScreen extends StatelessWidget { @@ -32,8 +31,6 @@ class FavoritesScreen extends StatelessWidget { padding: const EdgeInsets.symmetric(horizontal: 24), child: Text( 'You haven\'t added any favorite veggies to your garden yet.', - style: Styles.headlineDescription( - CupertinoTheme.of(context)), ), ) : ListView( diff --git a/experimental/veggieseasons/lib/screens/list.dart b/experimental/veggieseasons/lib/screens/list.dart index 8b49ce941ba..ce3f02daa95 100644 --- a/experimental/veggieseasons/lib/screens/list.dart +++ b/experimental/veggieseasons/lib/screens/list.dart @@ -32,6 +32,7 @@ class ListScreen extends StatelessWidget { @override Widget build(BuildContext context) { + final themeData = CupertinoTheme.of(context); return CupertinoTabView( restorationScopeId: restorationId, builder: (context) { @@ -52,7 +53,8 @@ class ListScreen extends StatelessWidget { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Text(dateString.toUpperCase(), style: Styles.minorText), + Text(dateString.toUpperCase(), + style: Styles.minorText(themeData)), Text('In season today', style: Styles.headlineText(themeData)), ], diff --git a/experimental/veggieseasons/lib/screens/search.dart b/experimental/veggieseasons/lib/screens/search.dart index 21c5b242fdc..e588bed7cbc 100644 --- a/experimental/veggieseasons/lib/screens/search.dart +++ b/experimental/veggieseasons/lib/screens/search.dart @@ -63,7 +63,6 @@ class _SearchScreenState extends State with RestorationMixin { padding: const EdgeInsets.symmetric(horizontal: 24), child: Text( 'No veggies matching your search terms were found.', - style: Styles.headlineDescription(CupertinoTheme.of(context)), ), ), ); diff --git a/experimental/veggieseasons/lib/styles.dart b/experimental/veggieseasons/lib/styles.dart index e4c5d907c72..c1d0a014519 100644 --- a/experimental/veggieseasons/lib/styles.dart +++ b/experimental/veggieseasons/lib/styles.dart @@ -3,171 +3,100 @@ // found in the LICENSE file. import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:veggieseasons/data/veggie.dart'; abstract class Styles { - static TextStyle headlineText(CupertinoThemeData themeData) => TextStyle( - color: themeData.textTheme.textStyle.color, + static CupertinoThemeData veggieThemeData = CupertinoThemeData( + textTheme: CupertinoTextThemeData( + textStyle: TextStyle( + fontSize: 16, + fontWeight: FontWeight.normal, + fontStyle: FontStyle.normal, fontFamily: 'NotoSans', + letterSpacing: -0.41, + decoration: TextDecoration.none, + ), + ), + ); + + static TextStyle headlineText(CupertinoThemeData themeData) => + themeData.textTheme.textStyle.copyWith( fontSize: 32, - fontStyle: FontStyle.normal, fontWeight: FontWeight.bold, ); - static const minorText = TextStyle( - color: Color.fromRGBO(128, 128, 128, 1), - fontFamily: 'NotoSans', - fontSize: 16, - fontStyle: FontStyle.normal, - fontWeight: FontWeight.normal, - ); + static TextStyle minorText(CupertinoThemeData themeData) => + themeData.textTheme.textStyle.copyWith( + color: Color.fromRGBO(128, 128, 128, 1), + ); - static TextStyle headlineName(CupertinoThemeData themeData) => TextStyle( - color: themeData.textTheme.textStyle.color, - fontFamily: 'NotoSans', + static TextStyle headlineName(CupertinoThemeData themeData) => + themeData.textTheme.textStyle.copyWith( fontSize: 24, - fontStyle: FontStyle.normal, fontWeight: FontWeight.bold, ); - static TextStyle headlineDescription(CupertinoThemeData themeData) => - TextStyle( - color: themeData.textTheme.textStyle.color, - fontFamily: 'NotoSans', - fontSize: 16, - fontStyle: FontStyle.normal, - fontWeight: FontWeight.normal, + static TextStyle cardTitleText(CupertinoThemeData themeData) => + themeData.textTheme.textStyle.copyWith( + color: Color.fromRGBO(0, 0, 0, 0.9), + fontSize: 32, + fontWeight: FontWeight.bold, ); - static const cardTitleText = TextStyle( - color: Color.fromRGBO(0, 0, 0, 0.9), - fontFamily: 'NotoSans', - fontSize: 32, - fontStyle: FontStyle.normal, - fontWeight: FontWeight.bold, - ); - - static const cardCategoryText = TextStyle( - color: Color.fromRGBO(255, 255, 255, 0.9), - fontFamily: 'NotoSans', - fontSize: 16, - fontStyle: FontStyle.normal, - fontWeight: FontWeight.normal, - ); + static TextStyle cardCategoryText(CupertinoThemeData themeData) => + themeData.textTheme.textStyle.copyWith( + color: Color.fromRGBO(255, 255, 255, 0.9), + ); - static const cardDescriptionText = TextStyle( - color: Color.fromRGBO(0, 0, 0, 0.9), - fontFamily: 'NotoSans', - fontSize: 16, - fontStyle: FontStyle.normal, - fontWeight: FontWeight.normal, - ); + static TextStyle cardDescriptionText(CupertinoThemeData themeData) => + themeData.textTheme.textStyle.copyWith( + color: Color.fromRGBO(0, 0, 0, 0.9), + ); - static TextStyle detailsTitleText(CupertinoThemeData themeData) => TextStyle( - color: themeData.textTheme.textStyle.color, - fontFamily: 'NotoSans', + static TextStyle detailsTitleText(CupertinoThemeData themeData) => + themeData.textTheme.textStyle.copyWith( fontSize: 30, - fontStyle: FontStyle.normal, fontWeight: FontWeight.bold, ); static TextStyle detailsPreferredCategoryText(CupertinoThemeData themeData) => - TextStyle( - color: themeData.textTheme.textStyle.color, - fontFamily: 'NotoSans', - fontSize: 16, - fontStyle: FontStyle.normal, + themeData.textTheme.textStyle.copyWith( fontWeight: FontWeight.bold, ); - static TextStyle detailsCategoryText(CupertinoThemeData themeData) => - TextStyle( - color: themeData.textTheme.textStyle.color, - fontFamily: 'NotoSans', - fontSize: 16, - fontStyle: FontStyle.normal, - fontWeight: FontWeight.normal, + static TextStyle detailsBoldDescriptionText(CupertinoThemeData themeData) => + themeData.textTheme.textStyle.copyWith( + color: Color.fromRGBO(0, 0, 0, 0.9), + fontWeight: FontWeight.bold, ); - static TextStyle detailsDescriptionText(CupertinoThemeData themeData) => - TextStyle( - color: themeData.textTheme.textStyle.color, - fontFamily: 'NotoSans', - fontSize: 16, - fontStyle: FontStyle.normal, - fontWeight: FontWeight.normal, + static TextStyle detailsServingHeaderText(CupertinoThemeData themeData) => + themeData.textTheme.textStyle.copyWith( + color: Color.fromRGBO(176, 176, 176, 1), + fontWeight: FontWeight.bold, ); - static const detailsBoldDescriptionText = TextStyle( - color: Color.fromRGBO(0, 0, 0, 0.9), - fontFamily: 'NotoSans', - fontSize: 16, - fontStyle: FontStyle.normal, - fontWeight: FontWeight.bold, - ); - - static const detailsServingHeaderText = TextStyle( - color: Color.fromRGBO(176, 176, 176, 1), - fontFamily: 'NotoSans', - fontSize: 16, - fontStyle: FontStyle.normal, - fontWeight: FontWeight.bold, - ); - static TextStyle detailsServingLabelText(CupertinoThemeData themeData) => - TextStyle( - color: themeData.textTheme.textStyle.color, - fontFamily: 'NotoSans', - fontSize: 16, - fontStyle: FontStyle.normal, + themeData.textTheme.textStyle.copyWith( fontWeight: FontWeight.bold, ); - static TextStyle detailsServingValueText(CupertinoThemeData themeData) => - TextStyle( - color: themeData.textTheme.textStyle.color, - fontFamily: 'NotoSans', - fontSize: 16, - fontStyle: FontStyle.normal, - fontWeight: FontWeight.normal, - ); - static TextStyle detailsServingNoteText(CupertinoThemeData themeData) => - TextStyle( - color: themeData.textTheme.textStyle.color, - fontFamily: 'NotoSans', - fontSize: 16, + themeData.textTheme.textStyle.copyWith( fontStyle: FontStyle.italic, - fontWeight: FontWeight.normal, ); static TextStyle triviaFinishedTitleText(CupertinoThemeData themeData) => - TextStyle( - color: themeData.textTheme.textStyle.color, - fontFamily: 'NotoSans', + themeData.textTheme.textStyle.copyWith( fontSize: 32, - fontStyle: FontStyle.normal, - fontWeight: FontWeight.normal, - ); - - static TextStyle triviaFinishedText(CupertinoThemeData themeData) => - TextStyle( - color: themeData.textTheme.textStyle.color, - fontFamily: 'NotoSans', - fontSize: 16, - fontStyle: FontStyle.normal, - fontWeight: FontWeight.normal, ); static TextStyle triviaFinishedBigText(CupertinoThemeData themeData) => - TextStyle( - color: themeData.textTheme.textStyle.color, - fontFamily: 'NotoSans', + themeData.textTheme.textStyle.copyWith( fontSize: 48, - fontStyle: FontStyle.normal, - fontWeight: FontWeight.normal, ); static const appBackground = Color(0xffd0d0d0); @@ -186,22 +115,15 @@ abstract class Styles { static const closeButtonPressed = Color(0xff808080); - static TextStyle searchText(CupertinoThemeData themeData) => TextStyle( - color: themeData.textTheme.textStyle.color, - fontFamily: 'NotoSans', + static TextStyle searchText(CupertinoThemeData themeData) => + themeData.textTheme.textStyle.copyWith( fontSize: 14, - fontStyle: FontStyle.normal, - fontWeight: FontWeight.normal, ); - static TextStyle settingsItemText(CupertinoThemeData themeData) => - themeData.textTheme.textStyle; - static TextStyle settingsItemSubtitleText(CupertinoThemeData themeData) => - TextStyle( + themeData.textTheme.textStyle.copyWith( fontSize: 12, letterSpacing: -0.2, - color: themeData.textTheme.textStyle.color, ); static const Color searchCursorColor = Color.fromRGBO(0, 122, 255, 1); diff --git a/experimental/veggieseasons/lib/widgets/settings_item.dart b/experimental/veggieseasons/lib/widgets/settings_item.dart index f53a2c23626..b46ea045778 100644 --- a/experimental/veggieseasons/lib/widgets/settings_item.dart +++ b/experimental/veggieseasons/lib/widgets/settings_item.dart @@ -136,7 +136,6 @@ class SettingsItemState extends State { SizedBox(height: 8.5), Text( widget.label, - style: Styles.settingsItemText(themeData), ), SizedBox(height: 4), Text( @@ -149,7 +148,6 @@ class SettingsItemState extends State { padding: EdgeInsets.only(top: 1.5), child: Text( widget.label, - style: Styles.settingsItemText(themeData), ), ), ), diff --git a/experimental/veggieseasons/lib/widgets/trivia.dart b/experimental/veggieseasons/lib/widgets/trivia.dart index a7a49b274f2..aea7cd476be 100644 --- a/experimental/veggieseasons/lib/widgets/trivia.dart +++ b/experimental/veggieseasons/lib/widgets/trivia.dart @@ -41,7 +41,8 @@ class _TriviaViewState extends State with RestorationMixin { Trivia get currentTrivia => veggie.trivia[triviaIndex.value]; /// The current state of the game. - _RestorablePlayerStatus status = _RestorablePlayerStatus(PlayerStatus.readyToAnswer); + _RestorablePlayerStatus status = + _RestorablePlayerStatus(PlayerStatus.readyToAnswer); @override String get restorationId => widget.restorationId; @@ -137,7 +138,6 @@ class _TriviaViewState extends State with RestorationMixin { SizedBox(height: 16), Text( 'You answered', - style: Styles.triviaFinishedText(themeData), ), Row( mainAxisSize: MainAxisSize.min, @@ -152,7 +152,6 @@ class _TriviaViewState extends State with RestorationMixin { padding: const EdgeInsets.symmetric(horizontal: 16), child: Text( ' of ', - style: Styles.triviaFinishedText(themeData), ), ), Text( @@ -163,7 +162,6 @@ class _TriviaViewState extends State with RestorationMixin { ), Text( 'questions correctly!', - style: Styles.triviaFinishedText(themeData), ), SizedBox(height: 16), CupertinoButton( diff --git a/experimental/veggieseasons/lib/widgets/veggie_card.dart b/experimental/veggieseasons/lib/widgets/veggie_card.dart index c1d5e495643..64c4c08386f 100644 --- a/experimental/veggieseasons/lib/widgets/veggie_card.dart +++ b/experimental/veggieseasons/lib/widgets/veggie_card.dart @@ -5,6 +5,7 @@ import 'dart:ui'; import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; import 'package:veggieseasons/data/veggie.dart'; import 'package:veggieseasons/screens/details.dart'; import 'package:veggieseasons/styles.dart'; @@ -117,7 +118,8 @@ class VeggieCard extends StatelessWidget { /// Whether [veggie] falls into one of user's preferred [VeggieCategory]s final bool isPreferredCategory; - Widget _buildDetails() { + Widget _buildDetails(BuildContext context) { + final themeData = CupertinoTheme.of(context); return FrostyBackground( color: Color(0x90ffffff), child: Padding( @@ -127,11 +129,11 @@ class VeggieCard extends StatelessWidget { children: [ Text( veggie.name, - style: Styles.cardTitleText, + style: Styles.cardTitleText(themeData), ), Text( veggie.shortDescription, - style: Styles.cardDescriptionText, + style: Styles.cardDescriptionText(themeData), ), ], ), @@ -165,7 +167,7 @@ class VeggieCard extends StatelessWidget { bottom: 0, left: 0, right: 0, - child: _buildDetails(), + child: _buildDetails(context), ), ], ), diff --git a/experimental/veggieseasons/lib/widgets/veggie_headline.dart b/experimental/veggieseasons/lib/widgets/veggie_headline.dart index 4b1ebb480dc..8255b806c37 100644 --- a/experimental/veggieseasons/lib/widgets/veggie_headline.dart +++ b/experimental/veggieseasons/lib/widgets/veggie_headline.dart @@ -97,7 +97,6 @@ class VeggieHeadline extends StatelessWidget { ), Text( veggie.shortDescription, - style: Styles.headlineDescription(themeData), ), ], ), From bf79045f67c98bfd0f9a8f92631ca187db67d889 Mon Sep 17 00:00:00 2001 From: Alex Vavvas Date: Sun, 15 Nov 2020 15:41:53 +0200 Subject: [PATCH 2/6] Added TextStyle to all texts --- .../veggieseasons/lib/screens/details.dart | 15 +++++++++++++-- .../veggieseasons/lib/screens/favorites.dart | 1 + experimental/veggieseasons/lib/screens/list.dart | 1 - .../veggieseasons/lib/screens/search.dart | 2 +- experimental/veggieseasons/lib/styles.dart | 15 +++++++++++++++ .../lib/widgets/settings_group.dart | 16 +++------------- .../veggieseasons/lib/widgets/settings_item.dart | 10 ++++------ .../veggieseasons/lib/widgets/trivia.dart | 12 +++--------- .../lib/widgets/veggie_headline.dart | 1 + 9 files changed, 41 insertions(+), 32 deletions(-) diff --git a/experimental/veggieseasons/lib/screens/details.dart b/experimental/veggieseasons/lib/screens/details.dart index aa8efac26ee..ddb01056975 100644 --- a/experimental/veggieseasons/lib/screens/details.dart +++ b/experimental/veggieseasons/lib/screens/details.dart @@ -31,6 +31,7 @@ class ServingInfoChart extends StatelessWidget { return Text( '$percent% DV', + style: CupertinoTheme.of(context).textTheme.textStyle, textAlign: TextAlign.end, ); }, @@ -52,6 +53,7 @@ class ServingInfoChart extends StatelessWidget { ), child: Text( 'Serving info', + style: CupertinoTheme.of(context).textTheme.textStyle, ), ), ), @@ -76,6 +78,7 @@ class ServingInfoChart extends StatelessWidget { child: Text( veggie.servingSize, textAlign: TextAlign.end, + style: CupertinoTheme.of(context).textTheme.textStyle, ), ), ], @@ -91,6 +94,7 @@ class ServingInfoChart extends StatelessWidget { TableCell( child: Text( '${veggie.caloriesPerServing} kCal', + style: CupertinoTheme.of(context).textTheme.textStyle, textAlign: TextAlign.end, ), ), @@ -205,6 +209,7 @@ class InfoView extends StatelessWidget { SizedBox(height: 8), Text( veggie.shortDescription, + style: CupertinoTheme.of(context).textTheme.textStyle, ), ServingInfoChart(veggie, prefs), SizedBox(height: 24), @@ -319,8 +324,14 @@ class _DetailsScreenState extends State with RestorationMixin { SizedBox(height: 20), CupertinoSegmentedControl( children: { - 0: Text('Facts & Info'), - 1: Text('Trivia'), + 0: Text( + 'Facts & Info', + ), + //style: CupertinoTheme.of(context).textTheme.textStyle), + 1: Text( + 'Trivia', + ) + //style: CupertinoTheme.of(context).textTheme.textStyle), }, groupValue: _selectedViewIndex.value, onValueChanged: (value) { diff --git a/experimental/veggieseasons/lib/screens/favorites.dart b/experimental/veggieseasons/lib/screens/favorites.dart index bd4808d56ef..f499e0546d9 100644 --- a/experimental/veggieseasons/lib/screens/favorites.dart +++ b/experimental/veggieseasons/lib/screens/favorites.dart @@ -31,6 +31,7 @@ class FavoritesScreen extends StatelessWidget { padding: const EdgeInsets.symmetric(horizontal: 24), child: Text( 'You haven\'t added any favorite veggies to your garden yet.', + style: CupertinoTheme.of(context).textTheme.textStyle, ), ) : ListView( diff --git a/experimental/veggieseasons/lib/screens/list.dart b/experimental/veggieseasons/lib/screens/list.dart index ce3f02daa95..3a6a17ae3d0 100644 --- a/experimental/veggieseasons/lib/screens/list.dart +++ b/experimental/veggieseasons/lib/screens/list.dart @@ -40,7 +40,6 @@ class ListScreen extends StatelessWidget { final appState = Provider.of(context); final prefs = Provider.of(context); - final themeData = CupertinoTheme.of(context); return SafeArea( bottom: false, child: ListView.builder( diff --git a/experimental/veggieseasons/lib/screens/search.dart b/experimental/veggieseasons/lib/screens/search.dart index e588bed7cbc..ea15abedcd8 100644 --- a/experimental/veggieseasons/lib/screens/search.dart +++ b/experimental/veggieseasons/lib/screens/search.dart @@ -7,7 +7,6 @@ import 'package:flutter/widgets.dart'; import 'package:provider/provider.dart'; import 'package:veggieseasons/data/app_state.dart'; import 'package:veggieseasons/data/veggie.dart'; -import 'package:veggieseasons/styles.dart'; import 'package:veggieseasons/widgets/search_bar.dart'; import 'package:veggieseasons/widgets/veggie_headline.dart'; @@ -63,6 +62,7 @@ class _SearchScreenState extends State with RestorationMixin { padding: const EdgeInsets.symmetric(horizontal: 24), child: Text( 'No veggies matching your search terms were found.', + style: CupertinoTheme.of(context).textTheme.textStyle, ), ), ); diff --git a/experimental/veggieseasons/lib/styles.dart b/experimental/veggieseasons/lib/styles.dart index c1d0a014519..264607a2cac 100644 --- a/experimental/veggieseasons/lib/styles.dart +++ b/experimental/veggieseasons/lib/styles.dart @@ -12,6 +12,7 @@ abstract class Styles { static CupertinoThemeData veggieThemeData = CupertinoThemeData( textTheme: CupertinoTextThemeData( textStyle: TextStyle( + color: CupertinoColors.label, fontSize: 16, fontWeight: FontWeight.normal, fontStyle: FontStyle.normal, @@ -99,6 +100,20 @@ abstract class Styles { fontSize: 48, ); + static TextStyle settingsGroupHeaderText(CupertinoThemeData themeData) => + themeData.textTheme.textStyle.copyWith( + color: CupertinoColors.inactiveGray, + fontSize: 13.5, + letterSpacing: -0.5, + ); + + static TextStyle settingsGroupFooterText(CupertinoThemeData themeData) => + themeData.textTheme.textStyle.copyWith( + color: Styles.settingsGroupSubtitle, + fontSize: 13, + letterSpacing: -0.08, + ); + static const appBackground = Color(0xffd0d0d0); static Color scaffoldBackground(Brightness brightness) => diff --git a/experimental/veggieseasons/lib/widgets/settings_group.dart b/experimental/veggieseasons/lib/widgets/settings_group.dart index 2f0105eb971..bd7c964dc80 100644 --- a/experimental/veggieseasons/lib/widgets/settings_group.dart +++ b/experimental/veggieseasons/lib/widgets/settings_group.dart @@ -28,11 +28,7 @@ class SettingsGroupHeader extends StatelessWidget { ), child: Text( title.toUpperCase(), - style: TextStyle( - color: CupertinoColors.inactiveGray, - fontSize: 13.5, - letterSpacing: -0.5, - ), + style: Styles.settingsGroupHeaderText(CupertinoTheme.of(context)), ), ); } @@ -51,14 +47,8 @@ class SettingsGroupFooter extends StatelessWidget { right: 15, top: 7.5, ), - child: Text( - title, - style: TextStyle( - color: Styles.settingsGroupSubtitle, - fontSize: 13, - letterSpacing: -0.08, - ), - ), + child: Text(title, + style: Styles.settingsGroupFooterText(CupertinoTheme.of(context))), ); } } diff --git a/experimental/veggieseasons/lib/widgets/settings_item.dart b/experimental/veggieseasons/lib/widgets/settings_item.dart index b46ea045778..ac63e543980 100644 --- a/experimental/veggieseasons/lib/widgets/settings_item.dart +++ b/experimental/veggieseasons/lib/widgets/settings_item.dart @@ -134,9 +134,8 @@ class SettingsItemState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ SizedBox(height: 8.5), - Text( - widget.label, - ), + Text(widget.label, + style: themeData.textTheme.textStyle), SizedBox(height: 4), Text( widget.subtitle, @@ -146,9 +145,8 @@ class SettingsItemState extends State { ) : Padding( padding: EdgeInsets.only(top: 1.5), - child: Text( - widget.label, - ), + child: Text(widget.label, + style: themeData.textTheme.textStyle), ), ), ), diff --git a/experimental/veggieseasons/lib/widgets/trivia.dart b/experimental/veggieseasons/lib/widgets/trivia.dart index aea7cd476be..5c9de694eb4 100644 --- a/experimental/veggieseasons/lib/widgets/trivia.dart +++ b/experimental/veggieseasons/lib/widgets/trivia.dart @@ -136,9 +136,7 @@ class _TriviaViewState extends State with RestorationMixin { style: Styles.triviaFinishedTitleText(themeData), ), SizedBox(height: 16), - Text( - 'You answered', - ), + Text('You answered', style: themeData.textTheme.textStyle), Row( mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.center, @@ -150,9 +148,7 @@ class _TriviaViewState extends State with RestorationMixin { ), Padding( padding: const EdgeInsets.symmetric(horizontal: 16), - child: Text( - ' of ', - ), + child: Text(' of ', style: themeData.textTheme.textStyle), ), Text( '${veggie.trivia.length}', @@ -160,9 +156,7 @@ class _TriviaViewState extends State with RestorationMixin { ), ], ), - Text( - 'questions correctly!', - ), + Text('questions correctly!', style: themeData.textTheme.textStyle), SizedBox(height: 16), CupertinoButton( child: Text('Try Again'), diff --git a/experimental/veggieseasons/lib/widgets/veggie_headline.dart b/experimental/veggieseasons/lib/widgets/veggie_headline.dart index 8255b806c37..03c70e4ac8a 100644 --- a/experimental/veggieseasons/lib/widgets/veggie_headline.dart +++ b/experimental/veggieseasons/lib/widgets/veggie_headline.dart @@ -97,6 +97,7 @@ class VeggieHeadline extends StatelessWidget { ), Text( veggie.shortDescription, + style: themeData.textTheme.textStyle, ), ], ), From 5e397329e217fd8004529eb01aaa32b2d2c845d0 Mon Sep 17 00:00:00 2001 From: Alex Vavvas Date: Thu, 19 Nov 2020 17:35:33 +0200 Subject: [PATCH 3/6] Removed comments. Changed trivia score text. Fixed In Season text bug --- experimental/veggieseasons/lib/screens/details.dart | 2 -- experimental/veggieseasons/lib/screens/list.dart | 2 +- experimental/veggieseasons/lib/widgets/trivia.dart | 2 +- 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/experimental/veggieseasons/lib/screens/details.dart b/experimental/veggieseasons/lib/screens/details.dart index ddb01056975..d65034c5caf 100644 --- a/experimental/veggieseasons/lib/screens/details.dart +++ b/experimental/veggieseasons/lib/screens/details.dart @@ -327,11 +327,9 @@ class _DetailsScreenState extends State with RestorationMixin { 0: Text( 'Facts & Info', ), - //style: CupertinoTheme.of(context).textTheme.textStyle), 1: Text( 'Trivia', ) - //style: CupertinoTheme.of(context).textTheme.textStyle), }, groupValue: _selectedViewIndex.value, onValueChanged: (value) { diff --git a/experimental/veggieseasons/lib/screens/list.dart b/experimental/veggieseasons/lib/screens/list.dart index 3a6a17ae3d0..d7eea9aeb07 100644 --- a/experimental/veggieseasons/lib/screens/list.dart +++ b/experimental/veggieseasons/lib/screens/list.dart @@ -32,7 +32,6 @@ class ListScreen extends StatelessWidget { @override Widget build(BuildContext context) { - final themeData = CupertinoTheme.of(context); return CupertinoTabView( restorationScopeId: restorationId, builder: (context) { @@ -40,6 +39,7 @@ class ListScreen extends StatelessWidget { final appState = Provider.of(context); final prefs = Provider.of(context); + final themeData = CupertinoTheme.of(context); return SafeArea( bottom: false, child: ListView.builder( diff --git a/experimental/veggieseasons/lib/widgets/trivia.dart b/experimental/veggieseasons/lib/widgets/trivia.dart index 5c9de694eb4..2386ee70849 100644 --- a/experimental/veggieseasons/lib/widgets/trivia.dart +++ b/experimental/veggieseasons/lib/widgets/trivia.dart @@ -143,7 +143,7 @@ class _TriviaViewState extends State with RestorationMixin { textBaseline: TextBaseline.alphabetic, children: [ Text( - '$score', + '${score.value}', style: Styles.triviaFinishedBigText(themeData), ), Padding( From d6307ad650ef4631e141cd504d2777501e201543 Mon Sep 17 00:00:00 2001 From: Alex Vavvas Date: Sun, 22 Nov 2020 00:35:16 +0200 Subject: [PATCH 4/6] Removed unnecessary imports. Added AnnotatedRegions to search and list screens. --- .../veggieseasons/lib/screens/list.dart | 81 ++++++++++--------- .../veggieseasons/lib/screens/search.dart | 24 +++--- experimental/veggieseasons/lib/styles.dart | 1 - .../lib/widgets/veggie_card.dart | 1 - 4 files changed, 58 insertions(+), 49 deletions(-) diff --git a/experimental/veggieseasons/lib/screens/list.dart b/experimental/veggieseasons/lib/screens/list.dart index d7eea9aeb07..754e957bc94 100644 --- a/experimental/veggieseasons/lib/screens/list.dart +++ b/experimental/veggieseasons/lib/screens/list.dart @@ -3,6 +3,7 @@ // found in the LICENSE file. import 'package:flutter/cupertino.dart'; +import 'package:flutter/services.dart'; import 'package:flutter/widgets.dart'; import 'package:intl/intl.dart'; import 'package:provider/provider.dart'; @@ -40,44 +41,48 @@ class ListScreen extends StatelessWidget { final appState = Provider.of(context); final prefs = Provider.of(context); final themeData = CupertinoTheme.of(context); - return SafeArea( - bottom: false, - child: ListView.builder( - restorationId: 'list', - itemCount: appState.allVeggies.length + 2, - itemBuilder: (context, index) { - if (index == 0) { - return Padding( - padding: const EdgeInsets.fromLTRB(16, 24, 16, 16), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text(dateString.toUpperCase(), - style: Styles.minorText(themeData)), - Text('In season today', - style: Styles.headlineText(themeData)), - ], - ), - ); - } else if (index <= appState.availableVeggies.length) { - return _generateVeggieRow( - appState.availableVeggies[index - 1], - prefs, - ); - } else if (index <= appState.availableVeggies.length + 1) { - return Padding( - padding: const EdgeInsets.fromLTRB(16, 24, 16, 16), - child: Text('Not in season', - style: Styles.headlineText(themeData)), - ); - } else { - var relativeIndex = - index - (appState.availableVeggies.length + 2); - return _generateVeggieRow( - appState.unavailableVeggies[relativeIndex], prefs, - inSeason: false); - } - }, + return AnnotatedRegion( + value: + SystemUiOverlayStyle(statusBarBrightness: themeData.brightness), + child: SafeArea( + bottom: false, + child: ListView.builder( + restorationId: 'list', + itemCount: appState.allVeggies.length + 2, + itemBuilder: (context, index) { + if (index == 0) { + return Padding( + padding: const EdgeInsets.fromLTRB(16, 24, 16, 16), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text(dateString.toUpperCase(), + style: Styles.minorText(themeData)), + Text('In season today', + style: Styles.headlineText(themeData)), + ], + ), + ); + } else if (index <= appState.availableVeggies.length) { + return _generateVeggieRow( + appState.availableVeggies[index - 1], + prefs, + ); + } else if (index <= appState.availableVeggies.length + 1) { + return Padding( + padding: const EdgeInsets.fromLTRB(16, 24, 16, 16), + child: Text('Not in season', + style: Styles.headlineText(themeData)), + ); + } else { + var relativeIndex = + index - (appState.availableVeggies.length + 2); + return _generateVeggieRow( + appState.unavailableVeggies[relativeIndex], prefs, + inSeason: false); + } + }, + ), ), ); }, diff --git a/experimental/veggieseasons/lib/screens/search.dart b/experimental/veggieseasons/lib/screens/search.dart index ea15abedcd8..5d88d088133 100644 --- a/experimental/veggieseasons/lib/screens/search.dart +++ b/experimental/veggieseasons/lib/screens/search.dart @@ -3,6 +3,7 @@ // found in the LICENSE file. import 'package:flutter/cupertino.dart'; +import 'package:flutter/services.dart'; import 'package:flutter/widgets.dart'; import 'package:provider/provider.dart'; import 'package:veggieseasons/data/app_state.dart'; @@ -100,15 +101,20 @@ class _SearchScreenState extends State with RestorationMixin { return UnmanagedRestorationScope( child: CupertinoTabView( builder: (context) { - return SafeArea( - bottom: false, - child: Stack( - children: [ - _buildSearchResults(model.searchVeggies(terms)), - _createSearchBox(), - ], - ), - ); + final themeData = CupertinoTheme.of(context); + + return AnnotatedRegion( + value: SystemUiOverlayStyle( + statusBarBrightness: themeData.brightness), + child: SafeArea( + bottom: false, + child: Stack( + children: [ + _buildSearchResults(model.searchVeggies(terms)), + _createSearchBox(), + ], + ), + )); }, ), ); diff --git a/experimental/veggieseasons/lib/styles.dart b/experimental/veggieseasons/lib/styles.dart index 264607a2cac..3516ed60394 100644 --- a/experimental/veggieseasons/lib/styles.dart +++ b/experimental/veggieseasons/lib/styles.dart @@ -3,7 +3,6 @@ // found in the LICENSE file. import 'package:flutter/cupertino.dart'; -import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:veggieseasons/data/veggie.dart'; diff --git a/experimental/veggieseasons/lib/widgets/veggie_card.dart b/experimental/veggieseasons/lib/widgets/veggie_card.dart index 64c4c08386f..05df3175e0f 100644 --- a/experimental/veggieseasons/lib/widgets/veggie_card.dart +++ b/experimental/veggieseasons/lib/widgets/veggie_card.dart @@ -5,7 +5,6 @@ import 'dart:ui'; import 'package:flutter/cupertino.dart'; -import 'package:flutter/material.dart'; import 'package:veggieseasons/data/veggie.dart'; import 'package:veggieseasons/screens/details.dart'; import 'package:veggieseasons/styles.dart'; From 9c564adfa3e22455ba1f034d45f8e7900b298ab2 Mon Sep 17 00:00:00 2001 From: Alex Vavvas Date: Mon, 23 Nov 2020 22:21:00 +0200 Subject: [PATCH 5/6] Changed AnnotatedRegion value to platformBrightness --- experimental/veggieseasons/lib/screens/list.dart | 4 ++-- experimental/veggieseasons/lib/screens/search.dart | 5 ++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/experimental/veggieseasons/lib/screens/list.dart b/experimental/veggieseasons/lib/screens/list.dart index 754e957bc94..5db33eeeddc 100644 --- a/experimental/veggieseasons/lib/screens/list.dart +++ b/experimental/veggieseasons/lib/screens/list.dart @@ -42,8 +42,8 @@ class ListScreen extends StatelessWidget { final prefs = Provider.of(context); final themeData = CupertinoTheme.of(context); return AnnotatedRegion( - value: - SystemUiOverlayStyle(statusBarBrightness: themeData.brightness), + value: SystemUiOverlayStyle( + statusBarBrightness: MediaQuery.of(context).platformBrightness), child: SafeArea( bottom: false, child: ListView.builder( diff --git a/experimental/veggieseasons/lib/screens/search.dart b/experimental/veggieseasons/lib/screens/search.dart index 5d88d088133..f410e9dc84a 100644 --- a/experimental/veggieseasons/lib/screens/search.dart +++ b/experimental/veggieseasons/lib/screens/search.dart @@ -101,11 +101,10 @@ class _SearchScreenState extends State with RestorationMixin { return UnmanagedRestorationScope( child: CupertinoTabView( builder: (context) { - final themeData = CupertinoTheme.of(context); - return AnnotatedRegion( value: SystemUiOverlayStyle( - statusBarBrightness: themeData.brightness), + statusBarBrightness: + MediaQuery.of(context).platformBrightness), child: SafeArea( bottom: false, child: Stack( From 70b661c34c15b0ab06d3afba330315355f5bdcbf Mon Sep 17 00:00:00 2001 From: Alex Vavvas Date: Mon, 23 Nov 2020 22:26:04 +0200 Subject: [PATCH 6/6] Changed AnnotatedRegion value to platformBrightness (MediaQuery.platformBrightnessOf) --- experimental/veggieseasons/lib/screens/list.dart | 2 +- experimental/veggieseasons/lib/screens/search.dart | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/experimental/veggieseasons/lib/screens/list.dart b/experimental/veggieseasons/lib/screens/list.dart index 5db33eeeddc..167b5df2189 100644 --- a/experimental/veggieseasons/lib/screens/list.dart +++ b/experimental/veggieseasons/lib/screens/list.dart @@ -43,7 +43,7 @@ class ListScreen extends StatelessWidget { final themeData = CupertinoTheme.of(context); return AnnotatedRegion( value: SystemUiOverlayStyle( - statusBarBrightness: MediaQuery.of(context).platformBrightness), + statusBarBrightness: MediaQuery.platformBrightnessOf(context)), child: SafeArea( bottom: false, child: ListView.builder( diff --git a/experimental/veggieseasons/lib/screens/search.dart b/experimental/veggieseasons/lib/screens/search.dart index f410e9dc84a..4b2a7cd5cd5 100644 --- a/experimental/veggieseasons/lib/screens/search.dart +++ b/experimental/veggieseasons/lib/screens/search.dart @@ -104,7 +104,7 @@ class _SearchScreenState extends State with RestorationMixin { return AnnotatedRegion( value: SystemUiOverlayStyle( statusBarBrightness: - MediaQuery.of(context).platformBrightness), + MediaQuery.platformBrightnessOf(context)), child: SafeArea( bottom: false, child: Stack(