fix: initialize Drift WASM module for web
This commit is contained in:
@@ -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();
|
||||
|
||||
// Запускаем приложение, передавая экземпляр базы данных
|
||||
|
||||
Reference in New Issue
Block a user