fix: initialize Drift WASM module for web

This commit is contained in:
2025-05-04 13:12:53 +03:00
parent c088933cef
commit 3156802df6
+26
View File
@@ -1,4 +1,6 @@
import 'package:flutter/material.dart';
import 'package:flutter/foundation.dart'; // Для kIsWeb
import 'package:drift/wasm.dart'; // Для инициализации WASM
import 'app.dart'; // Import the new app root widget
import 'database/database.dart'; // Import the database
@@ -6,11 +8,35 @@ Future<void> main() async {
// Необходимо для асинхронных операций перед runApp, например, инициализации БД
WidgetsFlutterBinding.ensureInitialized();
// Инициализация WASM-модуля SQLite для веб-платформы
if (kIsWeb) {
print("Running on Web, attempting to initialize sqlite3.wasm...");
// Указываем Drift, где найти файл sqlite3.wasm.
// WasmDatabase.resolveFile попытается найти его автоматически (обычно в корне /sqlite3.wasm).
final result = await WasmDatabase.resolveFile('sqlite3.wasm');
if (result.isSuccessful) {
print("sqlite3.wasm loaded successfully.");
} else {
// Если файл не найден или произошла ошибка загрузки
print("Error loading sqlite3.wasm: ${result.errorMessage}");
// Здесь можно предпринять действия, если загрузка не удалась,
// например, показать сообщение об ошибке пользователю или использовать
// альтернативное хранилище. Пока просто выводим ошибку в консоль.
// Приложение может не работать корректно без базы данных.
}
} else {
print("Running on Native platform, skipping WASM initialization.");
}
// Создаем единственный экземпляр базы данных для всего приложения
// Это должно происходить ПОСЛЕ инициализации WASM на вебе
final database = AppDatabase();
// Опционально: Вставляем начальные данные, если база данных пуста
// Это полезно для первого запуска или демонстрации
// Делаем это после создания экземпляра БД
await database.insertInitialDataIfNeeded();
// Запускаем приложение, передавая экземпляр базы данных