From 8aec8c6c8b8ef463590a2742782f422af50b586a Mon Sep 17 00:00:00 2001 From: AmirrezaChegini Date: Tue, 30 Sep 2025 17:13:53 +0330 Subject: [PATCH] add: hive database and create database schema --- lib/core/constants/my_constants.dart | 1 + .../level/data/model/level_model.dart | 2 +- .../level/domain/entity/level_entity.dart | 29 +- .../level/domain/entity/level_entity.g.dart | 50 +++ .../question/data/model/question_model.dart | 2 +- .../question/domain/entity/answer_entity.dart | 29 ++ .../domain/entity/answer_entity.g.dart | 56 ++++ .../question/domain/entity/file_entity.dart | 19 ++ .../question/domain/entity/file_entity.g.dart | 47 +++ .../domain/entity/question_entity.dart | 40 ++- .../domain/entity/question_entity.g.dart | 62 ++++ lib/init_bindings.dart | 21 ++ lib/main.dart | 1 + pubspec.lock | 306 +++++++++++++++++- pubspec.yaml | 4 + 15 files changed, 647 insertions(+), 22 deletions(-) create mode 100644 lib/features/level/domain/entity/level_entity.g.dart create mode 100644 lib/features/question/domain/entity/answer_entity.dart create mode 100644 lib/features/question/domain/entity/answer_entity.g.dart create mode 100644 lib/features/question/domain/entity/file_entity.dart create mode 100644 lib/features/question/domain/entity/file_entity.g.dart create mode 100644 lib/features/question/domain/entity/question_entity.g.dart diff --git a/lib/core/constants/my_constants.dart b/lib/core/constants/my_constants.dart index d03a559..c6e11bb 100644 --- a/lib/core/constants/my_constants.dart +++ b/lib/core/constants/my_constants.dart @@ -5,4 +5,5 @@ class MyConstants { static const String token = 'TOKEN'; static const String theme = 'THEME'; + static const String levelBox = 'LEVEL_BOX'; } \ No newline at end of file diff --git a/lib/features/level/data/model/level_model.dart b/lib/features/level/data/model/level_model.dart index 1d3fb5f..b93f39d 100644 --- a/lib/features/level/data/model/level_model.dart +++ b/lib/features/level/data/model/level_model.dart @@ -1,7 +1,7 @@ import 'package:hadi_hoda_flutter/features/level/domain/entity/level_entity.dart'; class LevelModel extends LevelEntity { - const LevelModel({ + LevelModel({ super.id, }); diff --git a/lib/features/level/domain/entity/level_entity.dart b/lib/features/level/domain/entity/level_entity.dart index 4b4616b..196bd26 100644 --- a/lib/features/level/domain/entity/level_entity.dart +++ b/lib/features/level/domain/entity/level_entity.dart @@ -1,14 +1,23 @@ -import 'package:equatable/equatable.dart'; +import 'package:hadi_hoda_flutter/features/question/domain/entity/question_entity.dart'; +import 'package:hive/hive.dart'; -class LevelEntity extends Equatable { - final int? id; +part 'level_entity.g.dart'; - const LevelEntity({ - this.id, - }); +@HiveType(typeId: 0) +class LevelEntity extends HiveObject { + @HiveField(0) + int? id; + @HiveField(1) + int? order; + @HiveField(2) + String? title; + @HiveField(3) + List? questions; - @override - List get props => [ - id, - ]; + LevelEntity({ + this.id, + this.order, + this.title, + this.questions, + }); } diff --git a/lib/features/level/domain/entity/level_entity.g.dart b/lib/features/level/domain/entity/level_entity.g.dart new file mode 100644 index 0000000..7c5ddd0 --- /dev/null +++ b/lib/features/level/domain/entity/level_entity.g.dart @@ -0,0 +1,50 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'level_entity.dart'; + +// ************************************************************************** +// TypeAdapterGenerator +// ************************************************************************** + +class LevelEntityAdapter extends TypeAdapter { + @override + final int typeId = 0; + + @override + LevelEntity read(BinaryReader reader) { + final numOfFields = reader.readByte(); + final fields = { + for (int i = 0; i < numOfFields; i++) reader.readByte(): reader.read(), + }; + return LevelEntity( + id: fields[0] as int?, + order: fields[1] as int?, + title: fields[2] as String?, + questions: (fields[3] as List?)?.cast(), + ); + } + + @override + void write(BinaryWriter writer, LevelEntity obj) { + writer + ..writeByte(4) + ..writeByte(0) + ..write(obj.id) + ..writeByte(1) + ..write(obj.order) + ..writeByte(2) + ..write(obj.title) + ..writeByte(3) + ..write(obj.questions); + } + + @override + int get hashCode => typeId.hashCode; + + @override + bool operator ==(Object other) => + identical(this, other) || + other is LevelEntityAdapter && + runtimeType == other.runtimeType && + typeId == other.typeId; +} diff --git a/lib/features/question/data/model/question_model.dart b/lib/features/question/data/model/question_model.dart index 489b66c..f6dcfad 100644 --- a/lib/features/question/data/model/question_model.dart +++ b/lib/features/question/data/model/question_model.dart @@ -1,7 +1,7 @@ import 'package:hadi_hoda_flutter/features/question/domain/entity/question_entity.dart'; class QuestionModel extends QuestionEntity { - const QuestionModel({ + QuestionModel({ super.id, }); diff --git a/lib/features/question/domain/entity/answer_entity.dart b/lib/features/question/domain/entity/answer_entity.dart new file mode 100644 index 0000000..e3204e0 --- /dev/null +++ b/lib/features/question/domain/entity/answer_entity.dart @@ -0,0 +1,29 @@ +import 'package:hadi_hoda_flutter/features/question/domain/entity/file_entity.dart'; +import 'package:hive/hive.dart'; + +part 'answer_entity.g.dart'; + +@HiveType(typeId: 2) +class AnswerEntity extends HiveObject { + @HiveField(0) + int? id; + @HiveField(1) + String? title; + @HiveField(2) + String? imageId; + @HiveField(3) + FileEntity? imageInfo; + @HiveField(4) + int? order; + @HiveField(5) + bool? isActive; + + AnswerEntity({ + this.id, + this.title, + this.imageId, + this.imageInfo, + this.order, + this.isActive, + }); +} diff --git a/lib/features/question/domain/entity/answer_entity.g.dart b/lib/features/question/domain/entity/answer_entity.g.dart new file mode 100644 index 0000000..34a06de --- /dev/null +++ b/lib/features/question/domain/entity/answer_entity.g.dart @@ -0,0 +1,56 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'answer_entity.dart'; + +// ************************************************************************** +// TypeAdapterGenerator +// ************************************************************************** + +class AnswerEntityAdapter extends TypeAdapter { + @override + final int typeId = 2; + + @override + AnswerEntity read(BinaryReader reader) { + final numOfFields = reader.readByte(); + final fields = { + for (int i = 0; i < numOfFields; i++) reader.readByte(): reader.read(), + }; + return AnswerEntity( + id: fields[0] as int?, + title: fields[1] as String?, + imageId: fields[2] as String?, + imageInfo: fields[3] as FileEntity?, + order: fields[4] as int?, + isActive: fields[5] as bool?, + ); + } + + @override + void write(BinaryWriter writer, AnswerEntity obj) { + writer + ..writeByte(6) + ..writeByte(0) + ..write(obj.id) + ..writeByte(1) + ..write(obj.title) + ..writeByte(2) + ..write(obj.imageId) + ..writeByte(3) + ..write(obj.imageInfo) + ..writeByte(4) + ..write(obj.order) + ..writeByte(5) + ..write(obj.isActive); + } + + @override + int get hashCode => typeId.hashCode; + + @override + bool operator ==(Object other) => + identical(this, other) || + other is AnswerEntityAdapter && + runtimeType == other.runtimeType && + typeId == other.typeId; +} diff --git a/lib/features/question/domain/entity/file_entity.dart b/lib/features/question/domain/entity/file_entity.dart new file mode 100644 index 0000000..9446384 --- /dev/null +++ b/lib/features/question/domain/entity/file_entity.dart @@ -0,0 +1,19 @@ +import 'package:hive/hive.dart'; + +part 'file_entity.g.dart'; + +@HiveType(typeId: 3) +class FileEntity extends HiveObject { + @HiveField(0) + String? filename; + @HiveField(1) + int? size; + @HiveField(2) + String? extension; + + FileEntity({ + this.filename, + this.size, + this.extension, + }); +} diff --git a/lib/features/question/domain/entity/file_entity.g.dart b/lib/features/question/domain/entity/file_entity.g.dart new file mode 100644 index 0000000..964bef5 --- /dev/null +++ b/lib/features/question/domain/entity/file_entity.g.dart @@ -0,0 +1,47 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'file_entity.dart'; + +// ************************************************************************** +// TypeAdapterGenerator +// ************************************************************************** + +class FileEntityAdapter extends TypeAdapter { + @override + final int typeId = 3; + + @override + FileEntity read(BinaryReader reader) { + final numOfFields = reader.readByte(); + final fields = { + for (int i = 0; i < numOfFields; i++) reader.readByte(): reader.read(), + }; + return FileEntity( + filename: fields[0] as String?, + size: fields[1] as int?, + extension: fields[2] as String?, + ); + } + + @override + void write(BinaryWriter writer, FileEntity obj) { + writer + ..writeByte(3) + ..writeByte(0) + ..write(obj.filename) + ..writeByte(1) + ..write(obj.size) + ..writeByte(2) + ..write(obj.extension); + } + + @override + int get hashCode => typeId.hashCode; + + @override + bool operator ==(Object other) => + identical(this, other) || + other is FileEntityAdapter && + runtimeType == other.runtimeType && + typeId == other.typeId; +} diff --git a/lib/features/question/domain/entity/question_entity.dart b/lib/features/question/domain/entity/question_entity.dart index 377f2b1..4c05d26 100644 --- a/lib/features/question/domain/entity/question_entity.dart +++ b/lib/features/question/domain/entity/question_entity.dart @@ -1,14 +1,36 @@ -import 'package:equatable/equatable.dart'; +import 'package:hadi_hoda_flutter/features/question/domain/entity/answer_entity.dart'; +import 'package:hadi_hoda_flutter/features/question/domain/entity/file_entity.dart'; +import 'package:hive/hive.dart'; -class QuestionEntity extends Equatable { - final int? id; +part 'question_entity.g.dart'; - const QuestionEntity({ +@HiveType(typeId: 1) +class QuestionEntity extends HiveObject { + @HiveField(0) + int? id; + @HiveField(1) + String? title; + @HiveField(2) + String? audioId; + @HiveField(3) + FileEntity? audioInfo; + @HiveField(4) + int? order; + @HiveField(5) + int? correctAnswer; + @HiveField(6) + bool? isActive; + @HiveField(7) + List? answers; + + QuestionEntity({ this.id, + this.title, + this.audioId, + this.audioInfo, + this.order, + this.correctAnswer, + this.isActive, + this.answers, }); - - @override - List get props => [ - id, - ]; } diff --git a/lib/features/question/domain/entity/question_entity.g.dart b/lib/features/question/domain/entity/question_entity.g.dart new file mode 100644 index 0000000..d90e05f --- /dev/null +++ b/lib/features/question/domain/entity/question_entity.g.dart @@ -0,0 +1,62 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'question_entity.dart'; + +// ************************************************************************** +// TypeAdapterGenerator +// ************************************************************************** + +class QuestionEntityAdapter extends TypeAdapter { + @override + final int typeId = 1; + + @override + QuestionEntity read(BinaryReader reader) { + final numOfFields = reader.readByte(); + final fields = { + for (int i = 0; i < numOfFields; i++) reader.readByte(): reader.read(), + }; + return QuestionEntity( + id: fields[0] as int?, + title: fields[1] as String?, + audioId: fields[2] as String?, + audioInfo: fields[3] as FileEntity?, + order: fields[4] as int?, + correctAnswer: fields[5] as int?, + isActive: fields[6] as bool?, + answers: (fields[7] as List?)?.cast(), + ); + } + + @override + void write(BinaryWriter writer, QuestionEntity obj) { + writer + ..writeByte(8) + ..writeByte(0) + ..write(obj.id) + ..writeByte(1) + ..write(obj.title) + ..writeByte(2) + ..write(obj.audioId) + ..writeByte(3) + ..write(obj.audioInfo) + ..writeByte(4) + ..write(obj.order) + ..writeByte(5) + ..write(obj.correctAnswer) + ..writeByte(6) + ..write(obj.isActive) + ..writeByte(7) + ..write(obj.answers); + } + + @override + int get hashCode => typeId.hashCode; + + @override + bool operator ==(Object other) => + identical(this, other) || + other is QuestionEntityAdapter && + runtimeType == other.runtimeType && + typeId == other.typeId; +} diff --git a/lib/init_bindings.dart b/lib/init_bindings.dart index 325ee32..215ccac 100644 --- a/lib/init_bindings.dart +++ b/lib/init_bindings.dart @@ -1,3 +1,6 @@ +import 'dart:io'; + +import 'package:hadi_hoda_flutter/core/constants/my_constants.dart'; import 'package:hadi_hoda_flutter/core/network/http_request.dart'; import 'package:hadi_hoda_flutter/core/network/http_request_impl.dart'; import 'package:hadi_hoda_flutter/features/intro/data/datasource/intro_datasource.dart'; @@ -6,10 +9,14 @@ import 'package:hadi_hoda_flutter/features/intro/domain/repository/intro_reposit import 'package:hadi_hoda_flutter/features/intro/domain/usecases/get_intro_usecase.dart'; import 'package:hadi_hoda_flutter/features/level/data/datasource/level_datasource.dart'; import 'package:hadi_hoda_flutter/features/level/data/repository_impl/level_repository_impl.dart'; +import 'package:hadi_hoda_flutter/features/level/domain/entity/level_entity.dart'; import 'package:hadi_hoda_flutter/features/level/domain/repository/level_repository.dart'; import 'package:hadi_hoda_flutter/features/level/domain/usecases/get_level_usecase.dart'; import 'package:hadi_hoda_flutter/features/question/data/datasource/question_datasource.dart'; import 'package:hadi_hoda_flutter/features/question/data/repository_impl/question_repository_impl.dart'; +import 'package:hadi_hoda_flutter/features/question/domain/entity/answer_entity.dart'; +import 'package:hadi_hoda_flutter/features/question/domain/entity/file_entity.dart'; +import 'package:hadi_hoda_flutter/features/question/domain/entity/question_entity.dart'; import 'package:hadi_hoda_flutter/features/question/domain/repository/question_repository.dart'; import 'package:hadi_hoda_flutter/features/question/domain/usecases/get_question_usecase.dart'; import 'package:hadi_hoda_flutter/features/sample/data/datasource/sample_datasource.dart'; @@ -17,6 +24,8 @@ import 'package:hadi_hoda_flutter/features/sample/data/repository_impl/sample_re import 'package:hadi_hoda_flutter/features/sample/domain/repository/sample_repository.dart'; import 'package:hadi_hoda_flutter/features/sample/domain/usecases/get_sample_usecase.dart'; import 'package:get_it/get_it.dart'; +import 'package:hive/hive.dart'; +import 'package:path_provider/path_provider.dart'; final GetIt locator = GetIt.I; @@ -44,3 +53,15 @@ void initBindings() { locator.registerLazySingleton(() => LevelRepositoryImpl(locator())); locator.registerLazySingleton(() => GetLevelUseCase(locator())); } + +Future initDataBase() async { + final Directory dir = await getApplicationDocumentsDirectory(); + Hive + ..init(dir.path) + ..registerAdapter(FileEntityAdapter()) + ..registerAdapter(AnswerEntityAdapter()) + ..registerAdapter(QuestionEntityAdapter()) + ..registerAdapter(LevelEntityAdapter()); + + await Hive.openBox(MyConstants.levelBox); +} \ No newline at end of file diff --git a/lib/main.dart b/lib/main.dart index 613e7c8..5fa9c22 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -14,6 +14,7 @@ Future main() async { initBindings(); await Future.wait([ LocalStorage.init(), + initDataBase(), ]); AuthStorage.loadData(); runApp(const MainApp()); diff --git a/pubspec.lock b/pubspec.lock index 0a9a3de..346dcbd 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1,6 +1,22 @@ # Generated by pub # See https://dart.dev/tools/pub/glossary#lockfile packages: + _fe_analyzer_shared: + dependency: transitive + description: + name: _fe_analyzer_shared + sha256: "0b2f2bd91ba804e53a61d757b986f89f1f9eaed5b11e4b2f5a2468d86d6c9fc7" + url: "https://pub.dev" + source: hosted + version: "67.0.0" + analyzer: + dependency: transitive + description: + name: analyzer + sha256: "37577842a27e4338429a1cbc32679d508836510b056f1eedf0c8d20e39c1383d" + url: "https://pub.dev" + source: hosted + version: "6.4.1" archive: dependency: transitive description: @@ -41,6 +57,70 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.2" + build: + dependency: transitive + description: + name: build + sha256: "80184af8b6cb3e5c1c4ec6d8544d27711700bc3e6d2efad04238c7b5290889f0" + url: "https://pub.dev" + source: hosted + version: "2.4.1" + build_config: + dependency: transitive + description: + name: build_config + sha256: "4ae2de3e1e67ea270081eaee972e1bd8f027d459f249e0f1186730784c2e7e33" + url: "https://pub.dev" + source: hosted + version: "1.1.2" + build_daemon: + dependency: transitive + description: + name: build_daemon + sha256: "8e928697a82be082206edb0b9c99c5a4ad6bc31c9e9b8b2f291ae65cd4a25daa" + url: "https://pub.dev" + source: hosted + version: "4.0.4" + build_resolvers: + dependency: transitive + description: + name: build_resolvers + sha256: "339086358431fa15d7eca8b6a36e5d783728cf025e559b834f4609a1fcfb7b0a" + url: "https://pub.dev" + source: hosted + version: "2.4.2" + build_runner: + dependency: "direct dev" + description: + name: build_runner + sha256: "028819cfb90051c6b5440c7e574d1896f8037e3c96cf17aaeb054c9311cfbf4d" + url: "https://pub.dev" + source: hosted + version: "2.4.13" + build_runner_core: + dependency: transitive + description: + name: build_runner_core + sha256: f8126682b87a7282a339b871298cc12009cb67109cfa1614d6436fb0289193e0 + url: "https://pub.dev" + source: hosted + version: "7.3.2" + built_collection: + dependency: transitive + description: + name: built_collection + sha256: "376e3dd27b51ea877c28d525560790aee2e6fbb5f20e2f85d5081027d94e2100" + url: "https://pub.dev" + source: hosted + version: "5.1.1" + built_value: + dependency: transitive + description: + name: built_value + sha256: a30f0a0e38671e89a492c44d005b5545b830a961575bbd8336d42869ff71066d + url: "https://pub.dev" + source: hosted + version: "8.12.0" characters: dependency: transitive description: @@ -49,6 +129,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.4.0" + checked_yaml: + dependency: transitive + description: + name: checked_yaml + sha256: "959525d3162f249993882720d52b7e0c833978df229be20702b33d48d91de70f" + url: "https://pub.dev" + source: hosted + version: "2.0.4" clock: dependency: transitive description: @@ -57,6 +145,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.1.2" + code_builder: + dependency: transitive + description: + name: code_builder + sha256: "11654819532ba94c34de52ff5feb52bd81cba1de00ef2ed622fd50295f9d4243" + url: "https://pub.dev" + source: hosted + version: "4.11.0" collection: dependency: transitive description: @@ -65,6 +161,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.19.1" + convert: + dependency: transitive + description: + name: convert + sha256: b30acd5944035672bc15c6b7a8b47d773e41e2f17de064350988c5d02adb1c68 + url: "https://pub.dev" + source: hosted + version: "3.1.2" crypto: dependency: transitive description: @@ -73,6 +177,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.6" + dart_style: + dependency: transitive + description: + name: dart_style + sha256: "99e066ce75c89d6b29903d788a7bb9369cf754f7b24bf70bf4b6d6d6b26853b9" + url: "https://pub.dev" + source: hosted + version: "2.3.6" dio: dependency: "direct main" description: @@ -129,6 +241,14 @@ packages: url: "https://pub.dev" source: hosted version: "7.0.1" + fixnum: + dependency: transitive + description: + name: fixnum + sha256: b6dc7065e46c974bc7c5f143080a6764ec7a4be6da1285ececdc37be96de53be + url: "https://pub.dev" + source: hosted + version: "1.1.1" flutter: dependency: "direct main" description: flutter @@ -173,6 +293,14 @@ packages: description: flutter source: sdk version: "0.0.0" + frontend_server_client: + dependency: transitive + description: + name: frontend_server_client + sha256: f64a0333a82f30b0cca061bc3d143813a486dc086b574bfb233b7c1372427694 + url: "https://pub.dev" + source: hosted + version: "4.0.0" get_it: dependency: "direct main" description: @@ -181,6 +309,14 @@ packages: url: "https://pub.dev" source: hosted version: "8.2.0" + glob: + dependency: transitive + description: + name: glob + sha256: c3f1ee72c96f8f78935e18aa8cecced9ab132419e8625dc187e1c2408efc20de + url: "https://pub.dev" + source: hosted + version: "2.1.3" go_router: dependency: "direct main" description: @@ -197,6 +333,30 @@ packages: url: "https://pub.dev" source: hosted version: "6.3.2" + graphs: + dependency: transitive + description: + name: graphs + sha256: "741bbf84165310a68ff28fe9e727332eef1407342fca52759cb21ad8177bb8d0" + url: "https://pub.dev" + source: hosted + version: "2.3.2" + hive: + dependency: "direct main" + description: + name: hive + sha256: "8dcf6db979d7933da8217edcec84e9df1bdb4e4edc7fc77dbd5aa74356d6d941" + url: "https://pub.dev" + source: hosted + version: "2.2.3" + hive_generator: + dependency: "direct dev" + description: + name: hive_generator + sha256: "06cb8f58ace74de61f63500564931f9505368f45f98958bd7a6c35ba24159db4" + url: "https://pub.dev" + source: hosted + version: "2.0.1" http: dependency: transitive description: @@ -205,6 +365,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.5.0" + http_multi_server: + dependency: transitive + description: + name: http_multi_server + sha256: aa6199f908078bb1c5efb8d8638d4ae191aac11b311132c3ef48ce352fb52ef8 + url: "https://pub.dev" + source: hosted + version: "3.2.2" http_parser: dependency: transitive description: @@ -221,6 +389,30 @@ packages: url: "https://pub.dev" source: hosted version: "0.20.2" + io: + dependency: transitive + description: + name: io + sha256: dfd5a80599cf0165756e3181807ed3e77daf6dd4137caaad72d0b7931597650b + url: "https://pub.dev" + source: hosted + version: "1.0.5" + js: + dependency: transitive + description: + name: js + sha256: "53385261521cc4a0c4658fd0ad07a7d14591cf8fc33abbceae306ddb974888dc" + url: "https://pub.dev" + source: hosted + version: "0.7.2" + json_annotation: + dependency: transitive + description: + name: json_annotation + sha256: "1ce844379ca14835a50d2f019a3099f419082cfdd231cd86a142af94dd5c6bb1" + url: "https://pub.dev" + source: hosted + version: "4.9.0" leak_tracker: dependency: transitive description: @@ -309,6 +501,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.0" + package_config: + dependency: transitive + description: + name: package_config + sha256: f096c55ebb7deb7e384101542bfba8c52696c1b56fca2eb62827989ef2353bbc + url: "https://pub.dev" + source: hosted + version: "2.2.0" path: dependency: transitive description: @@ -334,7 +534,7 @@ packages: source: hosted version: "1.1.0" path_provider: - dependency: transitive + dependency: "direct main" description: name: path_provider sha256: "50c5dd5b6e1aaf6fb3a78b33f6aa3afca52bf903a8a5298f53101fdaee55bbcd" @@ -405,6 +605,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.8" + pool: + dependency: transitive + description: + name: pool + sha256: "978783255c543aa3586a1b3c21f6e9d720eb315376a915872c61ef8b5c20177d" + url: "https://pub.dev" + source: hosted + version: "1.5.2" posix: dependency: transitive description: @@ -429,6 +637,22 @@ packages: url: "https://pub.dev" source: hosted version: "6.1.5+1" + pub_semver: + dependency: transitive + description: + name: pub_semver + sha256: "5bfcf68ca79ef689f8990d1160781b4bad40a3bd5e5218ad4076ddb7f4081585" + url: "https://pub.dev" + source: hosted + version: "2.2.0" + pubspec_parse: + dependency: transitive + description: + name: pubspec_parse + sha256: "0560ba233314abbed0a48a2956f7f022cce7c3e1e73df540277da7544cad4082" + url: "https://pub.dev" + source: hosted + version: "1.5.0" shared_preferences: dependency: "direct main" description: @@ -485,6 +709,22 @@ packages: url: "https://pub.dev" source: hosted version: "2.4.1" + shelf: + dependency: transitive + description: + name: shelf + sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12 + url: "https://pub.dev" + source: hosted + version: "1.4.2" + shelf_web_socket: + dependency: transitive + description: + name: shelf_web_socket + sha256: cc36c297b52866d203dbf9332263c94becc2fe0ceaa9681d07b6ef9807023b67 + url: "https://pub.dev" + source: hosted + version: "2.0.1" showcaseview: dependency: "direct main" description: @@ -498,6 +738,22 @@ packages: description: flutter source: sdk version: "0.0.0" + source_gen: + dependency: transitive + description: + name: source_gen + sha256: "14658ba5f669685cd3d63701d01b31ea748310f7ab854e471962670abcf57832" + url: "https://pub.dev" + source: hosted + version: "1.5.0" + source_helper: + dependency: transitive + description: + name: source_helper + sha256: "86d247119aedce8e63f4751bd9626fc9613255935558447569ad42f9f5b48b3c" + url: "https://pub.dev" + source: hosted + version: "1.3.5" source_span: dependency: transitive description: @@ -522,6 +778,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.4" + stream_transform: + dependency: transitive + description: + name: stream_transform + sha256: ad47125e588cfd37a9a7f86c7d6356dde8dfe89d071d293f80ca9e9273a33871 + url: "https://pub.dev" + source: hosted + version: "2.1.1" string_scanner: dependency: transitive description: @@ -546,6 +810,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.7.6" + timing: + dependency: transitive + description: + name: timing + sha256: "62ee18aca144e4a9f29d212f5a4c6a053be252b895ab14b5821996cff4ed90fe" + url: "https://pub.dev" + source: hosted + version: "1.0.2" typed_data: dependency: transitive description: @@ -594,6 +866,14 @@ packages: url: "https://pub.dev" source: hosted version: "15.0.2" + watcher: + dependency: transitive + description: + name: watcher + sha256: "5bf046f41320ac97a469d506261797f35254fa61c641741ef32dacda98b7d39c" + url: "https://pub.dev" + source: hosted + version: "1.1.3" web: dependency: transitive description: @@ -602,6 +882,22 @@ packages: url: "https://pub.dev" source: hosted version: "1.1.1" + web_socket: + dependency: transitive + description: + name: web_socket + sha256: "34d64019aa8e36bf9842ac014bb5d2f5586ca73df5e4d9bf5c936975cae6982c" + url: "https://pub.dev" + source: hosted + version: "1.0.1" + web_socket_channel: + dependency: transitive + description: + name: web_socket_channel + sha256: d645757fb0f4773d602444000a8131ff5d48c9e47adfe9772652dd1a4f2d45c8 + url: "https://pub.dev" + source: hosted + version: "3.0.3" xdg_directories: dependency: transitive description: @@ -618,6 +914,14 @@ packages: url: "https://pub.dev" source: hosted version: "6.6.1" + yaml: + dependency: transitive + description: + name: yaml + sha256: b9da305ac7c39faa3f030eccd175340f968459dae4af175130b3fc47e40d76ce + url: "https://pub.dev" + source: hosted + version: "3.1.3" sdks: dart: ">=3.9.2 <4.0.0" flutter: ">=3.35.0" diff --git a/pubspec.yaml b/pubspec.yaml index aaef526..041b47d 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -20,8 +20,10 @@ dependencies: get_it: ^8.2.0 go_router: ^16.1.0 google_fonts: ^6.3.2 + hive: ^2.2.3 intl: ^0.20.2 path_drawing: ^1.0.1 + path_provider: ^2.1.5 pretty_dio_logger: ^1.4.0 shared_preferences: ^2.5.3 showcaseview: ^4.0.1 @@ -30,6 +32,8 @@ dev_dependencies: flutter_test: sdk: flutter flutter_lints: ^5.0.0 + hive_generator: ^2.0.1 + build_runner: ^2.4.13 flutter: uses-material-design: true