dev
dart 37 lines 1.28 KB
Raw
1 import 'package:cake_wallet/themes/core/theme_store.dart';
2 import 'package:cake_wallet/themes/utils/theme_list.dart';
3 import 'package:cake_wallet/themes/theme_classes/black_theme.dart';
4 import 'package:flutter/material.dart';
5 import 'package:flutter_mobx/flutter_mobx.dart';
6
7 /// A widget that provides theme management to its descendants.
8 /// This widget would wrap the [MaterialApp] in the widget tree.
9 class ThemeProvider extends StatelessWidget {
10 final ThemeStore themeStore;
11 final MaterialApp Function(BuildContext, ThemeData, ThemeData?, ThemeMode) materialAppBuilder;
12
13 const ThemeProvider({
14 Key? key,
15 required this.themeStore,
16 required this.materialAppBuilder,
17 }) : super(key: key);
18
19 @override
20 Widget build(BuildContext context) {
21 return Observer(
22 builder: (_) {
23 final currentTheme = themeStore.currentTheme;
24 final theme = currentTheme.themeData;
25 final themeMode = themeStore.themeMode;
26
27 final isCustomTheme = ThemeList.all.contains(currentTheme) || currentTheme is BlackTheme;
28 if (isCustomTheme) {
29 return materialAppBuilder(context, theme, theme, themeMode);
30 }
31
32 final darkTheme = ThemeList.darkTheme.themeData;
33 return materialAppBuilder(context, theme, darkTheme, themeMode);
34 },
35 );
36 }
37 }