1.9 KiB
1.9 KiB
App
Namespace: FrymasterBadgeApp
Base Class: Microsoft.Maui.Controls.Application
Purpose: MAUI application entry point. Handles theme persistence, dependency injection, and graceful startup error handling.
🔑 Fields
| Name | Type | Access | Description |
|---|---|---|---|
_serviceProvider |
IServiceProvider |
private |
Holds the DI container used to resolve services like AppShell. |
ThemePrefKey |
const string |
public |
Constant key ("AppTheme") used to store/retrieve theme preference. Must match SettingsPage. |
🛠 Constructor
App(IServiceProvider serviceProvider)
- Access:
public - Parameters:
serviceProvider(IServiceProvider) - Behavior:
- Logs constructor start.
- Calls
InitializeComponent()to load XAML UI. - Applies saved theme via
ApplySavedTheme(). - Stores the injected
IServiceProvider. - Catches and logs fatal XAML initialization errors.
📦 Methods
ApplySavedTheme()
- Access:
private - Returns:
void - Behavior:
- Reads
"AppTheme"fromPreferences.Default. Defaults to"System". - Maps string to
AppThemeenum (Light,Dark,Unspecified). - Sets
Application.Current.UserAppTheme. - Logs success or warns on failure.
- Reads
CreateWindow(IActivationState? activationState)
- Access:
protected override - Parameters:
activationState(IActivationState?) - Returns:
Window - Behavior:
- Resolves
AppShellvia_serviceProvider. - Returns new
Windowcontaining resolvedAppShell. - If resolution fails, returns a fallback
ContentPagewith"Startup Failed"title, exception message in red, and log reference. Prevents hard crash.
- Resolves
Key Features:
- ✅ Theme persistence across sessions
- ✅ DI-ready shell resolution
- ✅ Graceful startup failure UI
- ✅ Comprehensive initialization logging