Files
buzz/mobile/lib/main.dart
npub1ft62tztwwm2x9xamk25smmuaj4sfckdkldksruf2x2jwqalffkrq0g7arr fb375ddf24 feat(mobile): add consent-gated crash reporting
Co-authored-by: npub1ft62tztwwm2x9xamk25smmuaj4sfckdkldksruf2x2jwqalffkrq0g7arr <4af4a5896e76d4629bbbb2a90def9d95609c59b6fb6d01f12a32a4e077e94d86@sprout-oss.stage.blox.sqprod.co>
Signed-off-by: npub1ft62tztwwm2x9xamk25smmuaj4sfckdkldksruf2x2jwqalffkrq0g7arr <4af4a5896e76d4629bbbb2a90def9d95609c59b6fb6d01f12a32a4e077e94d86@sprout-oss.stage.blox.sqprod.co>
2026-07-19 13:09:19 -07:00

34 lines
1001 B
Dart

import 'package:flutter/material.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'app.dart';
import 'shared/diagnostics/diagnostics.dart';
import 'shared/theme/theme_provider.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// Pre-load preferences so startup can apply saved diagnostics consent and
// the first frame uses the saved theme/accent.
final prefs = await SharedPreferences.getInstance();
final diagnosticsController = DiagnosticsController(
preferences: prefs,
config: const SentryConfig.fromEnvironment(),
crashReporter: const SentryCrashReporter(),
);
await diagnosticsController.applyStartupConsent();
runApp(
ProviderScope(
overrides: [
savedPrefsProvider.overrideWithValue(prefs),
diagnosticsControllerProvider.overrideWith(
(_) => diagnosticsController,
),
],
child: const App(),
),
);
}