import 'package:hash_wallet/themes/core/theme_store.dart'; import 'package:hash_wallet/themes/utils/theme_list.dart'; import 'package:hash_wallet/themes/theme_classes/black_theme.dart'; import 'package:flutter/material.dart'; import 'package:flutter_mobx/flutter_mobx.dart'; /// A widget that provides theme management to its descendants. /// This widget would wrap the [MaterialApp] in the widget tree. class ThemeProvider extends StatelessWidget { final ThemeStore themeStore; final MaterialApp Function(BuildContext, ThemeData, ThemeData?, ThemeMode) materialAppBuilder; const ThemeProvider({ Key? key, required this.themeStore, required this.materialAppBuilder, }) : super(key: key); @override Widget build(BuildContext context) { return Observer( builder: (_) { final currentTheme = themeStore.currentTheme; final theme = currentTheme.themeData; final themeMode = themeStore.themeMode; final isCustomTheme = ThemeList.all.contains(currentTheme) || currentTheme is BlackTheme; if (isCustomTheme) { return materialAppBuilder(context, theme, theme, themeMode); } final darkTheme = ThemeList.darkTheme.themeData; return materialAppBuilder(context, theme, darkTheme, themeMode); }, ); } }