barely working example with Isar

This commit is contained in:
SomnusVeritas
2023-11-07 23:24:18 +01:00
parent d1da474998
commit 17d3a125fb
13 changed files with 78 additions and 34 deletions

View File

@@ -1,29 +1,36 @@
import 'package:hive/hive.dart';
import 'package:path_provider/path_provider.dart';
import 'dart:io';
import 'package:flutter/foundation.dart';
import 'package:path_provider/path_provider.dart';
import 'package:isar/isar.dart';
import '../../../models/recipe.dart';
import '../../../example_data.dart' as e;
class DbHelper {
static Box<Recipe> get _recipesBox => Hive.box(name: 'recipes');
static late Directory _dir;
static Isar get _isar => Isar.open(
schemas: _schemas,
directory: _dir.path,
);
static const List<IsarGeneratedSchema> _schemas = [
RecipeSchema,
];
static int get nextRecipeId => _isar.recipes.autoIncrement();
static Future<void> init() async {
final dir = await getApplicationDocumentsDirectory();
Hive.defaultDirectory = dir.path;
Hive.registerAdapter('Recipe', Recipe.fromJson);
_recipesBox.clear();
for (final recipe in e.exampleRecipes) {
insertRecipe(recipe);
_dir = await getApplicationDocumentsDirectory();
if (kDebugMode) {
_isar.write((isar) => _isar.recipes.putAll(e.exampleRecipes));
}
}
static List<Recipe> fetchRecipes() {
List<Recipe> recipes = _recipesBox.getAll(['0', '1']).cast<Recipe>();
return recipes;
}
static void insertRecipe(Recipe recipe) {
_recipesBox.put(_recipesBox.length.toString(), recipe);
return _isar.recipes
.getAll([1, 2])
.where((element) => element != null)
.cast<Recipe>()
.toList();
}
}

View File

@@ -13,7 +13,7 @@ class RecipeListProvider extends ChangeNotifier {
notifyListeners();
}
List<Recipe> get recipes => DbHelper.fetchRecipes();
List<Recipe> get recipes => DbHelper.fetchRecipes(); // _recipes;
void clearRecipes({silent = false}) {
_recipes.clear();

View File

@@ -5,7 +5,7 @@ import '../../models/recipe.dart';
class RecipeProvider extends ChangeNotifier {
Recipe? _recipe;
Recipe get recipe => _recipe ??= Recipe(title: '');
Recipe get recipe => _recipe ??= Recipe(id: 0, title: '');
set recipe(Recipe recipe) {
_recipe = recipe;