// Flutter import 'package:flutter/material.dart'; // Local import '/globals.dart'; import '/pages/home.dart'; // SQLite import 'dart:io'; import 'package:sqflite_common_ffi/sqflite_ffi.dart'; import 'package:path/path.dart'; import 'package:path_provider/path_provider.dart'; void main() { // I see no good explanations of why to use this other package yet, but // trying this to see if it fixes the DB factory errors. // "Unhandled Exception: Bad state: databaseFactory not initialized databaseFactory is only initialized when using sqflite. When using `sqflite_common_ffi`You must call `databaseFactory = databaseFactoryFfi;` before using global openDatabase API // https://stackoverflow.com/questions/76158800/databasefactory-not-initialized-when-using-sqflite-in-flutter if (Platform.isWindows || Platform.isLinux) { // Initialize FFI sqfliteFfiInit(); databaseFactory = databaseFactoryFfi; } WidgetsFlutterBinding.ensureInitialized(); // Remove the DB and recreate it to test the Database Helper multiple times. if (testing) { () async { Directory documentsDirectory = await getApplicationDocumentsDirectory(); String path = join(documentsDirectory.path, 'ExpenseTracker.sqlite.db'); await deleteDatabase(path); }(); } runApp(const MainApp()); } class MainApp extends StatelessWidget { const MainApp({super.key}); @override Widget build(BuildContext context) { return MaterialApp( title: 'Recurring Expense Tracker', theme: ThemeData( useMaterial3: true, colorScheme: ColorScheme.fromSeed(seedColor: Colors.green), ), darkTheme: ThemeData( useMaterial3: true, brightness: Brightness.dark, colorSchemeSeed: Colors.green, ), themeMode: ThemeMode.system, home: HomePage(), ); } }