Adding Hive persistence

This commit is contained in:
Ankit Mahato
2023-03-27 12:17:30 +05:30
parent e9b3b04ffd
commit bb698539fe
5 changed files with 153 additions and 18 deletions

View File

@ -1,19 +1,23 @@
import 'dart:io'; import 'dart:io';
import 'dart:math' as math; import 'dart:math' as math;
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:window_size/window_size.dart' as window_size; import 'package:window_size/window_size.dart' as window_size;
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:google_fonts/google_fonts.dart'; import 'package:google_fonts/google_fonts.dart';
import 'services/services.dart';
import 'screens/screens.dart'; import 'screens/screens.dart';
void main() async { void main() async {
WidgetsFlutterBinding.ensureInitialized(); WidgetsFlutterBinding.ensureInitialized();
if (!kIsWeb) {
if (Platform.isWindows || Platform.isLinux || Platform.isMacOS) { if (Platform.isWindows || Platform.isLinux || Platform.isMacOS) {
window_size.getWindowInfo().then((window) { window_size.getWindowInfo().then((window) {
final screen = window.screen; final screen = window.screen;
if (screen != null) { if (screen != null) {
final screenFrame = screen.visibleFrame; final screenFrame = screen.visibleFrame;
final width = math.max((screenFrame.width / 2).roundToDouble(), 1200.0); final width =
math.max((screenFrame.width / 2).roundToDouble(), 1200.0);
final height = final height =
math.max((screenFrame.height / 2).roundToDouble(), 800.0); math.max((screenFrame.height / 2).roundToDouble(), 800.0);
final left = ((screenFrame.width - width) / 2).roundToDouble(); final left = ((screenFrame.width - width) / 2).roundToDouble();
@ -26,6 +30,8 @@ void main() async {
} }
}); });
} }
}
await openBoxes();
runApp( runApp(
const ProviderScope( const ProviderScope(
child: App(), child: App(),

View File

@ -0,0 +1,31 @@
import 'package:hive_flutter/hive_flutter.dart';
// constants
const String kDataBox = "data";
// sequence of ids
const String kDataBoxIds = "ids";
Future<void> openBoxes() async {
await Hive.initFlutter();
await Hive.openBox(kDataBox);
}
class HiveHandler {
late final Box dataBox;
HiveHandler() {
dataBox = Hive.box(kDataBox);
}
List<String>? getIds() => dataBox.get(kDataBoxIds) as List<String>?;
Future<void> setIds(List<String>? ids) => dataBox.put(kDataBoxIds, ids);
Map<String, dynamic>? getRequestModel(String id) =>
dataBox.get(id) as Map<String, dynamic>?;
Future<void> setRequestModel(
String id, Map<String, dynamic>? requestModelJson) =>
dataBox.put(id, requestModelJson);
Future<int> clear() => dataBox.clear();
}

View File

@ -1 +1,2 @@
export 'http_service.dart'; export 'http_service.dart';
export 'hive_services.dart';

View File

@ -1,6 +1,22 @@
# Generated by pub # Generated by pub
# See https://dart.dev/tools/pub/glossary#lockfile # See https://dart.dev/tools/pub/glossary#lockfile
packages: packages:
archive:
dependency: transitive
description:
name: archive
sha256: d6347d54a2d8028e0437e3c099f66fdb8ae02c4720c1e7534c9f24c10351f85d
url: "https://pub.dev"
source: hosted
version: "3.3.6"
args:
dependency: transitive
description:
name: args
sha256: "4cab82a83ffef80b262ddedf47a0a8e56ee6fbf7fe21e6e768b02792034dd440"
url: "https://pub.dev"
source: hosted
version: "2.4.0"
async: async:
dependency: transitive dependency: transitive
description: description:
@ -33,6 +49,22 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.2.1" version: "1.2.1"
checked_yaml:
dependency: transitive
description:
name: checked_yaml
sha256: "3d1505d91afa809d177efd4eed5bb0eb65805097a1463abdd2add076effae311"
url: "https://pub.dev"
source: hosted
version: "2.0.2"
cli_util:
dependency: transitive
description:
name: cli_util
sha256: "66f86e916d285c1a93d3b79587d94bd71984a66aac4ff74e524cfa7877f1395c"
url: "https://pub.dev"
source: hosted
version: "0.3.5"
clock: clock:
dependency: transitive dependency: transitive
description: description:
@ -49,6 +81,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.17.0" version: "1.17.0"
convert:
dependency: transitive
description:
name: convert
sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592"
url: "https://pub.dev"
source: hosted
version: "3.1.1"
crypto: crypto:
dependency: transitive dependency: transitive
description: description:
@ -102,6 +142,14 @@ packages:
description: flutter description: flutter
source: sdk source: sdk
version: "0.0.0" version: "0.0.0"
flutter_launcher_icons:
dependency: "direct dev"
description:
name: flutter_launcher_icons
sha256: "02dcaf49d405f652b7160e882bacfc02cb497041bb2eab2a49b1c393cf9aac12"
url: "https://pub.dev"
source: hosted
version: "0.12.0"
flutter_lints: flutter_lints:
dependency: "direct dev" dependency: "direct dev"
description: description:
@ -144,6 +192,22 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.1.1" version: "0.1.1"
hive:
dependency: transitive
description:
name: hive
sha256: "8dcf6db979d7933da8217edcec84e9df1bdb4e4edc7fc77dbd5aa74356d6d941"
url: "https://pub.dev"
source: hosted
version: "2.2.3"
hive_flutter:
dependency: "direct main"
description:
name: hive_flutter
sha256: dca1da446b1d808a51689fb5d0c6c9510c0a2ba01e22805d492c73b68e33eecc
url: "https://pub.dev"
source: hosted
version: "1.1.0"
html_unescape: html_unescape:
dependency: transitive dependency: transitive
description: description:
@ -168,6 +232,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "4.0.2" version: "4.0.2"
image:
dependency: transitive
description:
name: image
sha256: "483a389d6ccb292b570c31b3a193779b1b0178e7eb571986d9a49904b6861227"
url: "https://pub.dev"
source: hosted
version: "4.0.15"
jinja: jinja:
dependency: "direct main" dependency: "direct main"
description: description:
@ -184,6 +256,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.6.5" version: "0.6.5"
json_annotation:
dependency: transitive
description:
name: json_annotation
sha256: c33da08e136c3df0190bd5bbe51ae1df4a7d96e7954d1d7249fea2968a72d317
url: "https://pub.dev"
source: hosted
version: "4.8.0"
lints: lints:
dependency: transitive dependency: transitive
description: description:
@ -304,6 +384,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.1.4" version: "2.1.4"
pointycastle:
dependency: transitive
description:
name: pointycastle
sha256: c3120a968135aead39699267f4c74bc9a08e4e909e86bc1b0af5bfd78691123c
url: "https://pub.dev"
source: hosted
version: "3.7.2"
process: process:
dependency: transitive dependency: transitive
description: description:
@ -510,6 +598,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "6.2.2" version: "6.2.2"
yaml:
dependency: transitive
description:
name: yaml
sha256: "23812a9b125b48d4007117254bca50abb6c712352927eece9e155207b1db2370"
url: "https://pub.dev"
source: hosted
version: "3.1.1"
sdks: sdks:
dart: ">=2.19.2 <3.0.0" dart: ">=2.19.2 <3.0.0"
flutter: ">=3.3.0" flutter: ">=3.3.0"

View File

@ -1,7 +1,7 @@
name: apidash name: apidash
description: A new Flutter project. description: A new Flutter project.
publish_to: 'none' publish_to: 'none'
version: 0.1.0 version: 0.1.0+1
environment: environment:
sdk: '>=2.19.2 <3.0.0' sdk: '>=2.19.2 <3.0.0'
@ -27,6 +27,7 @@ dependencies:
git: git:
url: https://github.com/google/flutter-desktop-embedding.git url: https://github.com/google/flutter-desktop-embedding.git
path: plugins/window_size path: plugins/window_size
hive_flutter: ^1.1.0
dev_dependencies: dev_dependencies:
flutter_test: flutter_test: