import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:google_fonts/google_fonts.dart'; import 'package:pdfrx/pdfrx.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'editor/pdf/pen_capture_region.dart'; import 'providers/settings_provider.dart'; import 'screens/home_screen.dart'; import 'services/database_service.dart'; Future main() async { // Kind-aware binding (extends WidgetsFlutterBinding) must be the active // binding before runApp so the M1 spike's PenCaptureRegion can gate // hit-testing by pointer kind. Safe for the rest of the app: with no pen // region mounted it behaves exactly like the default binding. PenCaptureBinding.ensureInitialized(); // pdfrx native engine init (required before any PdfViewer is built). pdfrxFlutterInitialize(); // Ensure DB is ready before the app starts so providers can use it eagerly await DatabaseService.getInstance(); // Initialize SharedPreferences await SharedPreferences.getInstance(); runApp(const ProviderScope(child: BadNoteApp())); } class BadNoteApp extends ConsumerWidget { const BadNoteApp({super.key}); @override Widget build(BuildContext context, WidgetRef ref) { final settings = ref.watch(settingsProvider); return MaterialApp( title: 'BadNote', themeMode: settings.themeMode, theme: ThemeData( colorScheme: ColorScheme.fromSeed( seedColor: settings.colorSchemeSeed, brightness: Brightness.light, ), textTheme: GoogleFonts.interTextTheme( ThemeData(brightness: Brightness.light).textTheme, ), useMaterial3: true, ), darkTheme: ThemeData( colorScheme: ColorScheme.fromSeed( seedColor: settings.colorSchemeSeed, brightness: Brightness.dark, ), textTheme: GoogleFonts.interTextTheme( ThemeData(brightness: Brightness.dark).textTheme, ), useMaterial3: true, ), home: const HomeScreen(), ); } }