Skip to content
Snippets Groups Projects
Commit a397f0fc authored by vjrj's avatar vjrj
Browse files

Theme upgrade

parent 1e15bc44
No related branches found
No related tags found
No related merge requests found
This diff is collapsed.
This diff is collapsed.
import 'package:flutter/material.dart';
const ColorScheme lightColorScheme = ColorScheme(
brightness: Brightness.light,
primary: Color(0xFF526600),
onPrimary: Color(0xFFFFFFFF),
primaryContainer: Color(0xFFD4ED7F),
onPrimaryContainer: Color(0xFF171E00),
secondary: Color(0xFF5B6146),
onSecondary: Color(0xFFFFFFFF),
secondaryContainer: Color(0xFFE0E6C4),
onSecondaryContainer: Color(0xFF191E08),
tertiary: Color(0xFF516600),
onTertiary: Color(0xFFFFFFFF),
tertiaryContainer: Color(0xFFC7F333),
onTertiaryContainer: Color(0xFF161E00),
error: Color(0xFFBA1A1A),
errorContainer: Color(0xFFFFDAD6),
onError: Color(0xFFFFFFFF),
onErrorContainer: Color(0xFF410002),
background: Color(0xFFFEFCF4),
onBackground: Color(0xFF1B1C17),
surface: Color(0xFFFEFCF4),
onSurface: Color(0xFF1B1C17),
surfaceVariant: Color(0xFFE3E4D3),
onSurfaceVariant: Color(0xFF46483C),
outline: Color(0xFF77786B),
onInverseSurface: Color(0xFFF3F1E9),
inverseSurface: Color(0xFF30312B),
inversePrimary: Color(0xFFB8D166),
shadow: Color(0xFF000000),
surfaceTint: Color(0xFF526600),
outlineVariant: Color(0xFFC7C8B8),
scrim: Color(0xFF000000),
);
const ColorScheme darkColorScheme = ColorScheme(
brightness: Brightness.dark,
primary: Color(0xFFB8D166),
onPrimary: Color(0xFF293500),
primaryContainer: Color(0xFF3D4D00),
onPrimaryContainer: Color(0xFFD4ED7F),
secondary: Color(0xFFC4CAA9),
onSecondary: Color(0xFF2D331B),
secondaryContainer: Color(0xFF444930),
onSecondaryContainer: Color(0xFFE0E6C4),
tertiary: Color(0xFFACD605),
onTertiary: Color(0xFF283500),
tertiaryContainer: Color(0xFF3C4D00),
onTertiaryContainer: Color(0xFFC7F333),
error: Color(0xFFFFB4AB),
errorContainer: Color(0xFF93000A),
onError: Color(0xFF690005),
onErrorContainer: Color(0xFFFFDAD6),
background: Color(0xFF1B1C17),
onBackground: Color(0xFFE4E3DA),
surface: Color(0xFF1B1C17),
onSurface: Color(0xFFE4E3DA),
surfaceVariant: Color(0xFF46483C),
onSurfaceVariant: Color(0xFFC7C8B8),
outline: Color(0xFF909283),
onInverseSurface: Color(0xFF1B1C17),
inverseSurface: Color(0xFFE4E3DA),
inversePrimary: Color(0xFF526600),
shadow: Color(0xFF000000),
surfaceTint: Color(0xFFB8D166),
outlineVariant: Color(0xFF46483C),
scrim: Color(0xFF000000),
);
import 'dart:async';
import 'dart:convert';
import 'dart:io';
import 'package:connectivity_wrapper/connectivity_wrapper.dart';
......@@ -12,6 +13,7 @@ import 'package:flutter/services.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_displaymode/flutter_displaymode.dart';
import 'package:introduction_screen/introduction_screen.dart';
import 'package:json_theme/json_theme.dart';
import 'package:l10n_esperanto/l10n_esperanto.dart';
import 'package:lehttp_overrides/lehttp_overrides.dart';
import 'package:once/once.dart';
......@@ -26,7 +28,6 @@ import 'package:uni_links/uni_links.dart';
import 'package:workmanager/workmanager.dart';
import 'app_bloc_observer.dart';
import 'config/theme.dart';
import 'custom_feedback_localization.dart';
import 'data/eo_timeago_support.dart';
import 'data/eu_timeago_support.dart';
......@@ -62,6 +63,16 @@ const String fetchWalletsTransactionsTask =
void main() async {
await NotificationController.initializeLocalNotifications();
final String themeDarkStr =
await rootBundle.loadString('assets/appainter_theme_dark.json');
final dynamic themeDarkJson = jsonDecode(themeDarkStr);
final ThemeData themeDark = ThemeDecoder.decodeThemeData(themeDarkJson)!;
final String themeLightStr =
await rootBundle.loadString('assets/appainter_theme_light.json');
final dynamic themeLightJson = jsonDecode(themeLightStr);
final ThemeData themeLight = ThemeDecoder.decodeThemeData(themeLightJson)!;
// To resolve Let's Encrypt SSL certificate problems with Android 7.1.1 and below
if (!kIsWeb && Platform.isAndroid) {
HttpOverrides.global = LEHttpOverrides();
......@@ -115,54 +126,57 @@ void main() async {
DeviceOrientation.portraitDown
]).then((_) {
runApp(ChangeNotifierProvider<SharedPreferencesHelper>(
create: (BuildContext context) => SharedPreferencesHelper(),
child: EasyLocalization(
path: 'assets/translations',
supportedLocales: const <Locale>[
// Asturian is not supported in flutter
// More info: https://docs.flutter.dev/development/accessibility-and-localization/internationalization#adding-support-for-a-new-language
// Meantime we use this workaround:
// https://github.com/aissat/easy_localization/issues/220#issuecomment-846035493
Locale('es', 'AST'),
Locale('ca'),
Locale('de'),
Locale('en'),
Locale('eo'),
Locale('es'),
Locale('eu'),
Locale('fr'),
Locale('gl'),
Locale('it'),
Locale('nl'),
Locale('pt'),
],
fallbackLocale: const Locale('en'),
useFallbackTranslations: true,
child: MultiBlocProvider(providers: <BlocProvider<dynamic>>[
BlocProvider<BottomNavCubit>(
create: (BuildContext context) => BottomNavCubit()),
BlocProvider<AppCubit>(
create: (BuildContext context) => AppCubit()),
BlocProvider<PaymentCubit>(
create: (BuildContext context) => PaymentCubit()),
BlocProvider<NodeListCubit>(
create: (BuildContext context) => NodeListCubit()),
BlocProvider<ContactsCubit>(
create: (BuildContext context) => ContactsCubit()),
BlocProvider<UtxoCubit>(
create: (BuildContext context) => UtxoCubit()),
// TODO(vjrj): Remove when clean the state of this after upgrades
BlocProvider<TransactionCubitRemove>(
create: (BuildContext context) => TransactionCubitRemove()),
BlocProvider<MultiWalletTransactionCubit>(
create: (BuildContext context) =>
MultiWalletTransactionCubit()),
BlocProvider<ThemeCubit>(
create: (BuildContext context) => ThemeCubit()),
// Add other BlocProviders here if needed
], child: const GinkgoApp()),
),
));
create: (BuildContext context) => SharedPreferencesHelper(),
child: EasyLocalization(
path: 'assets/translations',
supportedLocales: const <Locale>[
// Asturian is not supported in flutter
// More info: https://docs.flutter.dev/development/accessibility-and-localization/internationalization#adding-support-for-a-new-language
// Meantime we use this workaround:
// https://github.com/aissat/easy_localization/issues/220#issuecomment-846035493
Locale('es', 'AST'),
Locale('ca'),
Locale('de'),
Locale('en'),
Locale('eo'),
Locale('es'),
Locale('eu'),
Locale('fr'),
Locale('gl'),
Locale('it'),
Locale('nl'),
Locale('pt'),
],
fallbackLocale: const Locale('en'),
useFallbackTranslations: true,
child: MultiBlocProvider(
providers: <BlocProvider<dynamic>>[
BlocProvider<BottomNavCubit>(
create: (BuildContext context) => BottomNavCubit()),
BlocProvider<AppCubit>(
create: (BuildContext context) => AppCubit()),
BlocProvider<PaymentCubit>(
create: (BuildContext context) => PaymentCubit()),
BlocProvider<NodeListCubit>(
create: (BuildContext context) => NodeListCubit()),
BlocProvider<ContactsCubit>(
create: (BuildContext context) => ContactsCubit()),
BlocProvider<UtxoCubit>(
create: (BuildContext context) => UtxoCubit()),
// TODO(vjrj): Remove when clean the state of this after upgrades
BlocProvider<TransactionCubitRemove>(
create: (BuildContext context) =>
TransactionCubitRemove()),
BlocProvider<MultiWalletTransactionCubit>(
create: (BuildContext context) =>
MultiWalletTransactionCubit()),
BlocProvider<ThemeCubit>(
create: (BuildContext context) => ThemeCubit()),
// Add other BlocProviders here if needed
],
child:
GinkgoApp(themeDark: themeDark, themeLight: themeLight)),
)));
});
if (inDevelopment) {
// Only use sentry in production
......@@ -319,12 +333,16 @@ PageViewModel createPageViewModel(
}
class GinkgoApp extends StatefulWidget {
const GinkgoApp({super.key});
const GinkgoApp(
{super.key, required this.themeLight, required this.themeDark});
// The navigator key is necessary to navigate using static methods
static final GlobalKey<NavigatorState> navigatorKey =
GlobalKey<NavigatorState>();
final ThemeData themeDark;
final ThemeData themeLight;
@override
State<GinkgoApp> createState() => _GinkgoAppState();
}
......@@ -506,11 +524,8 @@ class _GinkgoAppState extends State<GinkgoApp> {
child: MaterialApp(
/// Localization is not available for the title.
title: 'Ğ1nkgo',
theme: ThemeData(
useMaterial3: true, colorScheme: lightColorScheme),
darkTheme:
ThemeData(useMaterial3: true, colorScheme: darkColorScheme),
theme: widget.themeLight,
darkTheme: widget.themeDark,
navigatorKey: GinkgoApp.navigatorKey,
scaffoldMessengerKey: globalMessengerKey,
......
......@@ -3,7 +3,6 @@ import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import '../config/theme.dart';
import '../main.dart';
import 'logger.dart';
import 'ui_helpers.dart';
......@@ -34,8 +33,8 @@ class NotificationController {
groupAlertBehavior: GroupAlertBehavior.Children,
importance: NotificationImportance.High,
defaultPrivacy: NotificationPrivacy.Private,
defaultColor: lightColorScheme.primary,
ledColor: lightColorScheme.primary)
defaultColor: const Color(0xff526600),
ledColor: Colors.white)
],
debug: true);
......@@ -127,7 +126,7 @@ class NotificationController {
style: Theme.of(context)
.textTheme
.titleLarge
?.copyWith(color: lightColorScheme.primary)),
?.copyWith(color: Theme.of(context).primaryColor)),
),
],
);
......
......@@ -2,7 +2,6 @@ import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:universal_html/html.dart' as html;
import '../config/theme.dart';
import '../main.dart';
import 'ui_helpers.dart';
......@@ -74,11 +73,13 @@ class NotificationController {
userAuthorized = true;
Navigator.of(ctx).pop();
},
child: Text(tr('allow_notifications_btn'),
style: Theme.of(context)
.textTheme
.titleLarge
?.copyWith(color: lightColorScheme.primary)),
child: Text(
tr('allow_notifications_btn'),
style: Theme.of(context)
.textTheme
.titleLarge
?.copyWith(color: const Color(0xff526600)),
),
),
],
);
......
......@@ -1021,6 +1021,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.0.1"
json_schema:
dependency: transitive
description:
name: json_schema
sha256: f1bcf81647c347f53281dca9c8ea3e2b7b4d0eee5b4d1e4cee3173a5c162f358
url: "https://pub.dev"
source: hosted
version: "5.1.7"
json_schema2:
dependency: transitive
description:
......@@ -1037,6 +1045,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "6.7.1"
json_theme:
dependency: "direct main"
description:
name: json_theme
sha256: "40d524c455287ac019f5d1c370ddd76c5d61c6390b67de149ee0bdb33912c4a5"
url: "https://pub.dev"
source: hosted
version: "6.0.0"
jsqr:
dependency: "direct main"
description:
......@@ -1469,6 +1485,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.2.1+11"
rfc_6901:
dependency: transitive
description:
name: rfc_6901
sha256: df1bbfa3d023009598f19636d6114c6ac1e0b7bb7bf6a260f0e6e6ce91416820
url: "https://pub.dev"
source: hosted
version: "0.2.0"
ristretto255:
dependency: transitive
description:
......
......@@ -104,6 +104,7 @@ dependencies:
ferry: ^0.11.3-dev.0+1
gql_http_link: ^0.4.5
substrate_bip39: ^0.2.0
json_theme: ^6.0.0
dev_dependencies:
flutter_test:
......@@ -155,6 +156,8 @@ flutter:
- assets/gva-tx.json
- assets/img/animated-bell.gif
- assets/img/pos.png
- assets/appainter_theme_dark.json
- assets/appainter_theme_light.json
fonts:
- family: Nunito
......
// This is a basic Flutter widget test.
//
// To perform an interaction with a widget in your test, use the WidgetTester
// utility in the flutter_test package. For example, you can send tap and scroll
// gestures. You can also use WidgetTester to find child widgets in the widget
// tree, read text, and verify that the values of widget properties are correct.
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:ginkgo/main.dart';
void main() {
testWidgets('Counter increments smoke test', skip: true,
(WidgetTester tester) async {
// Build our app and trigger a frame.
await tester.pumpWidget(const GinkgoApp());
// Verify that our counter starts at 0.
expect(find.text('0'), findsOneWidget);
expect(find.text('1'), findsNothing);
// Tap the '+' icon and trigger a frame.
await tester.tap(find.byIcon(Icons.add));
await tester.pump();
// Verify that our counter has incremented.
expect(find.text('0'), findsNothing);
expect(find.text('1'), findsOneWidget);
});
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment