From 014722a8506e80d66a619f411dc068f0bc49de5e Mon Sep 17 00:00:00 2001 From: Jean-Luc Makiola Date: Sun, 15 Mar 2026 20:06:53 +0100 Subject: [PATCH] feat(01-02): wire app.dart and main.dart for launchable app - App widget with MaterialApp.router, theme/darkTheme from AppTheme, themeMode from ThemeNotifier - German localization delegates configured, debug banner disabled - main.dart wraps App in ProviderScope with ensureInitialized - All 16 tests pass, dart analyze clean, flutter build apk succeeds Co-Authored-By: Claude Opus 4.6 --- lib/app.dart | 27 +++++++++++++++++++++++++++ lib/main.dart | 5 ++++- 2 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 lib/app.dart diff --git a/lib/app.dart b/lib/app.dart new file mode 100644 index 0000000..a684b31 --- /dev/null +++ b/lib/app.dart @@ -0,0 +1,27 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; + +import 'package:household_keeper/core/router/router.dart'; +import 'package:household_keeper/core/theme/app_theme.dart'; +import 'package:household_keeper/core/theme/theme_provider.dart'; +import 'package:household_keeper/l10n/app_localizations.dart'; + +class App extends ConsumerWidget { + const App({super.key}); + + @override + Widget build(BuildContext context, WidgetRef ref) { + final themeMode = ref.watch(themeProvider); + + return MaterialApp.router( + routerConfig: router, + theme: AppTheme.lightTheme(), + darkTheme: AppTheme.darkTheme(), + themeMode: themeMode, + localizationsDelegates: AppLocalizations.localizationsDelegates, + supportedLocales: const [Locale('de')], + locale: const Locale('de'), + debugShowCheckedModeBanner: false, + ); + } +} diff --git a/lib/main.dart b/lib/main.dart index fe30f18..a81d80f 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,6 +1,9 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:household_keeper/app.dart'; + void main() { - runApp(const ProviderScope(child: MaterialApp(home: Scaffold()))); + WidgetsFlutterBinding.ensureInitialized(); + runApp(const ProviderScope(child: App())); }