Skip to content

Commit

Permalink
[#231] [NF] BrandBook and Custom Theme. Extend context
Browse files Browse the repository at this point in the history
  • Loading branch information
lyskouski committed Sep 15, 2023
1 parent 7f0c5bb commit 0080ec7
Show file tree
Hide file tree
Showing 47 changed files with 141 additions and 84 deletions.
10 changes: 10 additions & 0 deletions lib/_ext/build_context_ext.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
// Copyright 2023 The terCAD team. All rights reserved.
// Use of this source code is governed by a CC BY-NC-ND 4.0 license that can be found in the LICENSE file.

import 'package:flutter/material.dart';

extension BuildContextExt on BuildContext {
ColorScheme get colorScheme => Theme.of(this).colorScheme;

TextTheme get textTheme => Theme.of(this).textTheme;
}
3 changes: 2 additions & 1 deletion lib/charts/bar_race_chart.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import 'dart:math';

import 'package:app_finance/_classes/herald/app_locale.dart';
import 'package:app_finance/_classes/structure/interface_app_data.dart';
import 'package:app_finance/_ext/build_context_ext.dart';
import 'package:app_finance/charts/interface/chart_data.dart';
import 'package:app_finance/charts/painter/bar_chart_painter.dart';
import 'package:app_finance/charts/painter/foreground_chart_painter.dart';
Expand Down Expand Up @@ -49,7 +50,7 @@ class BarRaceChart extends StatelessWidget {
if (data.isEmpty) {
return const EmptyWidget();
}
final bgColor = Theme.of(context).colorScheme.onBackground;
final bgColor = context.colorScheme.onBackground;
final xMax = data.reduce((max, item) => item.dy > max.dy ? item : max).dy;
final plot = _getData();
final size = Size(width, 36.0 * (1 + plot.length));
Expand Down
3 changes: 2 additions & 1 deletion lib/charts/column_chart.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
// Use of this source code is governed by a CC BY-NC-ND 4.0 license that can be found in the LICENSE file.

import 'package:app_finance/_classes/herald/app_locale.dart';
import 'package:app_finance/_ext/build_context_ext.dart';
import 'package:app_finance/charts/interface/chart_data.dart';
import 'package:app_finance/charts/painter/column_chart_painter.dart';
import 'package:app_finance/charts/painter/foreground_chart_painter.dart';
Expand Down Expand Up @@ -34,7 +35,7 @@ class ColumnChart extends StatelessWidget {
}
final now = DateTime.now();
final size = Size(width, height);
final bgColor = Theme.of(context).colorScheme.onBackground;
final bgColor = context.colorScheme.onBackground;
final xMin = DateTime(now.year);
final xMax = DateTime(now.year + 1);
final bg = ForegroundChartPainter(
Expand Down
3 changes: 2 additions & 1 deletion lib/charts/forecast_chart.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
// Copyright 2023 The terCAD team. All rights reserved.
// Use of this source code is governed by a CC BY-NC-ND 4.0 license that can be found in the LICENSE file.

import 'package:app_finance/_ext/build_context_ext.dart';
import 'package:app_finance/charts/interface/chart_data.dart';
import 'package:app_finance/charts/painter/forecast_chart_painter.dart';
import 'package:app_finance/charts/painter/foreground_chart_painter.dart';
Expand Down Expand Up @@ -32,7 +33,7 @@ class ForecastChart extends StatelessWidget {
}
final now = DateTime.now();
final size = Size(width, height);
final bgColor = Theme.of(context).colorScheme.onBackground;
final bgColor = context.colorScheme.onBackground;
final xMin = DateTime(now.year, now.month);
final xMax = DateTime(now.year, now.month + 1);
final bg = ForegroundChartPainter(
Expand Down
3 changes: 2 additions & 1 deletion lib/charts/ohlc_chart.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
// Use of this source code is governed by a CC BY-NC-ND 4.0 license that can be found in the LICENSE file.

import 'package:app_finance/_classes/herald/app_locale.dart';
import 'package:app_finance/_ext/build_context_ext.dart';
import 'package:app_finance/charts/interface/ohlc_data.dart';
import 'package:app_finance/charts/painter/foreground_chart_painter.dart';
import 'package:app_finance/charts/painter/ohlc_chart_painter.dart';
Expand Down Expand Up @@ -41,7 +42,7 @@ class OhlcChart extends StatelessWidget {
yMax *= 1.25;
final now = DateTime.now();
final size = Size(width, height);
final bgColor = Theme.of(context).colorScheme.onBackground;
final bgColor = context.colorScheme.onBackground;
final xMax = DateTime(now.year, now.month + 1);
final bg = ForegroundChartPainter(
size: size,
Expand Down
3 changes: 2 additions & 1 deletion lib/charts/trade_chart.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import 'dart:collection';

import 'package:app_finance/_classes/herald/app_locale.dart';
import 'package:app_finance/_classes/structure/transaction_log_data.dart';
import 'package:app_finance/_ext/build_context_ext.dart';
import 'package:app_finance/charts/interface/chart_data.dart';
import 'package:app_finance/charts/interface/data_scope.dart';
import 'package:app_finance/charts/painter/foreground_chart_painter.dart';
Expand Down Expand Up @@ -69,7 +70,7 @@ class TradeChart extends StatelessWidget {
@override
Widget build(BuildContext context) {
final size = Size(width, height);
final bgColor = Theme.of(context).colorScheme.onBackground;
final bgColor = context.colorScheme.onBackground;
final scope = _prepareData();

final bg = ForegroundChartPainter(
Expand Down
3 changes: 2 additions & 1 deletion lib/pages/about_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

import 'package:app_finance/_classes/herald/app_locale.dart';
import 'package:app_finance/_configs/theme_helper.dart';
import 'package:app_finance/_ext/build_context_ext.dart';
import 'package:app_finance/_mixins/launcher_mixin.dart';
import 'package:app_finance/pages/abstract_page_state.dart';
import 'package:app_finance/widgets/wrapper/row_widget.dart';
Expand Down Expand Up @@ -64,7 +65,7 @@ class AboutPageState extends AbstractPageState<AboutPage> with LauncherMixin {
),
Text(
AppLocale.labels.appTitle,
style: Theme.of(context).textTheme.headlineLarge,
style: context.textTheme.headlineLarge,
),
Column(
children: [
Expand Down
7 changes: 4 additions & 3 deletions lib/pages/abstract_page_state.dart
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import 'package:app_finance/_classes/storage/app_data.dart';
import 'package:app_finance/_classes/controller/focus_controller.dart';
import 'package:app_finance/_configs/responsive_matrix.dart';
import 'package:app_finance/_configs/theme_helper.dart';
import 'package:app_finance/_ext/build_context_ext.dart';
import 'package:app_finance/widgets/generic/menu_widget.dart';
import 'package:app_finance/widgets/wrapper/input_controller_wrapper.dart';
import 'package:app_finance/widgets/wrapper/row_widget.dart';
Expand Down Expand Up @@ -81,7 +82,7 @@ abstract class AbstractPageState<T extends StatefulWidget> extends State<T> {
Widget getBarTitle(BuildContext context, [bool isBottom = false]) {
return TextWrapper(
getTitle(),
style: TextStyle(color: Theme.of(context).colorScheme.inversePrimary),
style: TextStyle(color: context.colorScheme.inversePrimary),
);
}

Expand All @@ -90,7 +91,7 @@ abstract class AbstractPageState<T extends StatefulWidget> extends State<T> {
return AppBar(
title: Center(child: getBarTitle(context)),
toolbarHeight: barHeight,
backgroundColor: Theme.of(context).colorScheme.primary,
backgroundColor: context.colorScheme.primary,
leading: getBarLeading(nav),
actions: getBarActions(nav),
);
Expand Down Expand Up @@ -135,7 +136,7 @@ abstract class AbstractPageState<T extends StatefulWidget> extends State<T> {
}

Drawer? buildDrawer() {
final ColorScheme colorScheme = Theme.of(context).colorScheme;
final ColorScheme colorScheme = context.colorScheme;
double indent = ThemeHelper.getIndent();
return Drawer(
elevation: 0,
Expand Down
3 changes: 2 additions & 1 deletion lib/pages/account/account_add_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import 'package:app_finance/_configs/account_type.dart';
import 'package:app_finance/_classes/controller/focus_controller.dart';
import 'package:app_finance/_classes/storage/app_preferences.dart';
import 'package:app_finance/_configs/theme_helper.dart';
import 'package:app_finance/_ext/build_context_ext.dart';
import 'package:app_finance/pages/abstract_add_page.dart';
import 'package:app_finance/widgets/form/color_selector.dart';
import 'package:app_finance/widgets/form/currency_selector.dart';
Expand Down Expand Up @@ -117,7 +118,7 @@ class AccountAddPageState<T extends AccountAddPage> extends AbstractAddPageState

@override
Widget buildContent(BuildContext context, BoxConstraints constraints) {
final TextTheme textTheme = Theme.of(context).textTheme;
final TextTheme textTheme = context.textTheme;
double indent = ThemeHelper.getIndent(2);
double width = ThemeHelper.getWidth(context, 6);
FocusController.init();
Expand Down
7 changes: 4 additions & 3 deletions lib/pages/automation/widgets/sync_tab.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import 'package:app_finance/_classes/herald/app_locale.dart';
import 'package:app_finance/_classes/herald/app_sync.dart';
import 'package:app_finance/_classes/storage/app_data.dart';
import 'package:app_finance/_configs/theme_helper.dart';
import 'package:app_finance/_ext/build_context_ext.dart';
import 'package:app_finance/widgets/form/simple_input.dart';
import 'package:app_finance/widgets/wrapper/row_widget.dart';
import 'package:app_finance/widgets/wrapper/table_widget.dart';
Expand Down Expand Up @@ -61,7 +62,7 @@ class SyncTabState extends State<SyncTab> {

@override
Widget build(BuildContext context) {
final TextTheme textTheme = Theme.of(context).textTheme;
final textTheme = context.textTheme;
final indent = ThemeHelper.getIndent();
return Consumer<AppSync>(builder: (context, appSync, _) {
sync = appSync..followBinary(runtimeType, ping);
Expand All @@ -87,7 +88,7 @@ class SyncTabState extends State<SyncTab> {
),
Container(
padding: EdgeInsets.all(indent),
color: Theme.of(context).colorScheme.inversePrimary.withOpacity(0.3),
color: context.colorScheme.inversePrimary.withOpacity(0.3),
child: SelectableText(
sync.getUuid() ?? AppLocale.labels.pearDisabled,
style: textTheme.bodyLarge,
Expand Down Expand Up @@ -128,7 +129,7 @@ class SyncTabState extends State<SyncTab> {
ThemeHelper.hIndent4x,
TableWidget(
width: ThemeHelper.getWidth(context),
shadowColor: Theme.of(context).colorScheme.onBackground.withOpacity(0.1),
shadowColor: context.colorScheme.onBackground.withOpacity(0.1),
chunk: const [80, null, 80, 90],
data: [
[
Expand Down
3 changes: 2 additions & 1 deletion lib/pages/bill/widgets/expenses_tab.dart
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import 'package:app_finance/_classes/controller/focus_controller.dart';
import 'package:app_finance/_classes/storage/app_preferences.dart';
import 'package:app_finance/_classes/storage/app_data.dart';
import 'package:app_finance/_configs/theme_helper.dart';
import 'package:app_finance/_ext/build_context_ext.dart';
import 'package:app_finance/pages/abstract_page_state.dart';
import 'package:app_finance/widgets/form/currency_exchange_input.dart';
import 'package:app_finance/widgets/form/currency_selector.dart';
Expand Down Expand Up @@ -126,7 +127,7 @@ class ExpensesTabState<T extends ExpensesTab> extends AbstractPageState<T> {

@override
Widget buildContent(BuildContext context, BoxConstraints constraints) {
final TextTheme textTheme = Theme.of(context).textTheme;
final TextTheme textTheme = context.textTheme;
double indent = ThemeHelper.getIndent(2);
double width = ThemeHelper.getWidth(context, 6);

Expand Down
3 changes: 2 additions & 1 deletion lib/pages/bill/widgets/income_tab.dart
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import 'package:app_finance/_classes/controller/focus_controller.dart';
import 'package:app_finance/_classes/storage/app_preferences.dart';
import 'package:app_finance/_classes/storage/app_data.dart';
import 'package:app_finance/_configs/theme_helper.dart';
import 'package:app_finance/_ext/build_context_ext.dart';
import 'package:app_finance/pages/abstract_page_state.dart';
import 'package:app_finance/widgets/form/currency_exchange_input.dart';
import 'package:app_finance/widgets/form/currency_selector.dart';
Expand Down Expand Up @@ -116,7 +117,7 @@ class IncomeTabState extends AbstractPageState<IncomeTab> {

@override
Widget buildContent(BuildContext context, BoxConstraints constraints) {
final TextTheme textTheme = Theme.of(context).textTheme;
final TextTheme textTheme = context.textTheme;
double indent = ThemeHelper.getIndent(2);
double width = ThemeHelper.getWidth(context, 6);

Expand Down
3 changes: 2 additions & 1 deletion lib/pages/bill/widgets/transfer_tab.dart
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import 'package:app_finance/_classes/structure/navigation/app_route.dart';
import 'package:app_finance/_classes/controller/focus_controller.dart';
import 'package:app_finance/_classes/storage/app_data.dart';
import 'package:app_finance/_configs/theme_helper.dart';
import 'package:app_finance/_ext/build_context_ext.dart';
import 'package:app_finance/pages/abstract_page_state.dart';
import 'package:app_finance/widgets/form/currency_exchange_input.dart';
import 'package:app_finance/widgets/form/date_time_input.dart';
Expand Down Expand Up @@ -117,7 +118,7 @@ class TransferTabState extends AbstractPageState<TransferTab> {

@override
Widget buildContent(BuildContext context, BoxConstraints constraints) {
final TextTheme textTheme = Theme.of(context).textTheme;
final TextTheme textTheme = context.textTheme;
double indent = ThemeHelper.getIndent(2);
double width = ThemeHelper.getWidth(context, 6);

Expand Down
5 changes: 3 additions & 2 deletions lib/pages/budget/budget_add_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import 'package:app_finance/_classes/structure/budget_app_data.dart';
import 'package:app_finance/_classes/controller/focus_controller.dart';
import 'package:app_finance/_classes/storage/app_preferences.dart';
import 'package:app_finance/_configs/theme_helper.dart';
import 'package:app_finance/_ext/build_context_ext.dart';
import 'package:app_finance/pages/abstract_add_page.dart';
import 'package:app_finance/widgets/form/color_selector.dart';
import 'package:app_finance/widgets/form/currency_selector.dart';
Expand Down Expand Up @@ -100,7 +101,7 @@ class BudgetAddPageState<T extends BudgetAddPage> extends AbstractAddPageState<B

@override
Widget buildContent(BuildContext context, BoxConstraints constraints) {
final TextTheme textTheme = Theme.of(context).textTheme;
final textTheme = context.textTheme;
double indent = ThemeHelper.getIndent(2);
double width = ThemeHelper.getWidth(context, 6);

Expand Down Expand Up @@ -199,7 +200,7 @@ class BudgetAddPageState<T extends BudgetAddPage> extends AbstractAddPageState<B
],
[
Container(
color: Theme.of(context).colorScheme.inversePrimary.withOpacity(0.3),
color: context.colorScheme.inversePrimary.withOpacity(0.3),
child: Slider(
value: e.value,
onChanged: (v) => setState(() => amountSet[e.key] = v),
Expand Down
3 changes: 2 additions & 1 deletion lib/pages/budget/widgets/budget_line_widget.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import 'package:app_finance/_classes/structure/navigation/app_menu.dart';
import 'package:app_finance/_configs/custom_text_theme.dart';
import 'package:app_finance/_configs/theme_helper.dart';
import 'package:app_finance/_ext/build_context_ext.dart';
import 'package:app_finance/charts/bar_horizontal_single.dart';
import 'package:app_finance/widgets/wrapper/row_widget.dart';
import 'package:app_finance/widgets/wrapper/tap_widget.dart';
Expand Down Expand Up @@ -43,7 +44,7 @@ class BudgetLineWidget extends StatelessWidget {
}
final indent = ThemeHelper.getIndent();
final width = ThemeHelper.getWidth(context);
final TextTheme textTheme = Theme.of(context).textTheme;
final textTheme = context.textTheme;
final sumStyle = textTheme.numberMedium.copyWith(color: textTheme.headlineSmall?.color);

return TapWidget(
Expand Down
3 changes: 2 additions & 1 deletion lib/pages/currency_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import 'package:app_finance/_classes/storage/history_data.dart';
import 'package:app_finance/_classes/structure/currency_app_data.dart';
import 'package:app_finance/_classes/storage/app_data.dart';
import 'package:app_finance/_configs/theme_helper.dart';
import 'package:app_finance/_ext/build_context_ext.dart';
import 'package:app_finance/charts/trade_chart.dart';
import 'package:app_finance/pages/abstract_page_state.dart';
import 'package:app_finance/widgets/generic/notification_bar.dart';
Expand Down Expand Up @@ -56,7 +57,7 @@ class CurrencyPageState extends AbstractPageState<CurrencyPage> {

@override
Widget buildContent(BuildContext context, BoxConstraints constraints) {
final TextTheme textTheme = Theme.of(context).textTheme;
final TextTheme textTheme = context.textTheme;
final indent = ThemeHelper.getIndent();
final now = DateTime.now();
final cutDate = DateTime(now.year, now.month - 2);
Expand Down
3 changes: 2 additions & 1 deletion lib/pages/goal/goal_add_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import 'package:app_finance/_classes/controller/focus_controller.dart';
import 'package:app_finance/_classes/storage/app_data.dart';
import 'package:app_finance/_configs/theme_helper.dart';
import 'package:app_finance/_classes/storage/app_preferences.dart';
import 'package:app_finance/_ext/build_context_ext.dart';
import 'package:app_finance/pages/abstract_page_state.dart';
import 'package:app_finance/widgets/form/color_selector.dart';
import 'package:app_finance/widgets/form/currency_selector.dart';
Expand Down Expand Up @@ -114,7 +115,7 @@ class GoalAddPageState<T extends GoalAddPage> extends AbstractPageState<GoalAddP

@override
Widget buildContent(BuildContext context, BoxConstraints constraints) {
final TextTheme textTheme = Theme.of(context).textTheme;
final TextTheme textTheme = context.textTheme;
double indent = ThemeHelper.getIndent(2);
double width = ThemeHelper.getWidth(context, 6);

Expand Down
7 changes: 4 additions & 3 deletions lib/pages/goal/goal_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import 'package:app_finance/_classes/structure/goal_app_data.dart';
import 'package:app_finance/_configs/custom_text_theme.dart';
import 'package:app_finance/_configs/theme_helper.dart';
import 'package:app_finance/_classes/structure/navigation/app_route.dart';
import 'package:app_finance/_ext/build_context_ext.dart';
import 'package:app_finance/_ext/double_ext.dart';
import 'package:app_finance/_mixins/formatter_mixin.dart';
import 'package:app_finance/charts/gauge_chart.dart';
Expand Down Expand Up @@ -69,13 +70,13 @@ class GoalPageState extends AbstractPageState<GoalPage> with FormatterMixin {
Widget buildContent(BuildContext context, BoxConstraints constraints) {
final indent = ThemeHelper.getIndent();
final width = ThemeHelper.getWidth(context, 4);
final TextTheme textTheme = Theme.of(context).textTheme;
final TextTheme textTheme = context.textTheme;
final goals = super.state.getList(AppDataType.goals);
final maxValue = _getMaxValue(goals.cast<GoalAppData>());
final valInvoice = _getValue(AppDataType.invoice);
final valBill = _getValue(AppDataType.bills);
final value = valInvoice - valBill;
final textStyle = Theme.of(context).textTheme.numberSmall.copyWith(color: textTheme.headlineSmall?.color);
final textStyle = context.textTheme.numberSmall.copyWith(color: textTheme.headlineSmall?.color);

return SingleChildScrollView(
child: Padding(
Expand All @@ -90,7 +91,7 @@ class GoalPageState extends AbstractPageState<GoalPage> with FormatterMixin {
chunk: const [null, null],
children: [
[
TextWrapper(AppLocale.labels.goalProfitTooltip, style: Theme.of(context).textTheme.bodyLarge),
TextWrapper(AppLocale.labels.goalProfitTooltip, style: context.textTheme.bodyLarge),
TextWrapper(AppLocale.labels.goalProfit(maxValue.toCurrency()), style: textStyle, maxLines: 2),
TextWrapper(AppLocale.labels.invoiceSum(valInvoice.toCurrency()), style: textStyle, maxLines: 2),
TextWrapper(AppLocale.labels.billSum(valBill.toCurrency()), style: textStyle, maxLines: 2),
Expand Down
5 changes: 3 additions & 2 deletions lib/pages/home/widgets/goal_line_widget.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import 'package:app_finance/_classes/herald/app_locale.dart';
import 'package:app_finance/_classes/structure/navigation/app_route.dart';
import 'package:app_finance/_classes/structure/goal_app_data.dart';
import 'package:app_finance/_ext/build_context_ext.dart';
import 'package:app_finance/widgets/wrapper/row_widget.dart';
import 'package:app_finance/widgets/wrapper/tap_widget.dart';
import 'package:app_finance/_configs/theme_helper.dart';
Expand All @@ -22,8 +23,8 @@ class GoalLineWidget extends StatelessWidget {
@override
Widget build(context) {
final indent = ThemeHelper.getIndent();
final ColorScheme colorScheme = Theme.of(context).colorScheme;
final TextTheme textTheme = Theme.of(context).textTheme;
final ColorScheme colorScheme = context.colorScheme;
final TextTheme textTheme = context.textTheme;
double screenWidth = width ?? ThemeHelper.getWidth(context, 2);
return TapWidget(
tooltip: AppLocale.labels.goalTooltip,
Expand Down
Loading

0 comments on commit 0080ec7

Please sign in to comment.