diff --git a/android/build/reports/problems/problems-report.html b/android/build/reports/problems/problems-report.html
new file mode 100644
index 0000000..bcf3823
--- /dev/null
+++ b/android/build/reports/problems/problems-report.html
@@ -0,0 +1,663 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ Gradle Configuration Cache
+
+
+
+
+
+
+ Loading...
+
+
+
+
+
+
+
diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties
index ac3b479..e4ef43f 100644
--- a/android/gradle/wrapper/gradle-wrapper.properties
+++ b/android/gradle/wrapper/gradle-wrapper.properties
@@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.14-all.zip
diff --git a/lib/db/db_helper.dart b/lib/db/db_helper.dart
new file mode 100644
index 0000000..5427baa
--- /dev/null
+++ b/lib/db/db_helper.dart
@@ -0,0 +1,81 @@
+// Singleton to access database
+import 'dart:developer';
+import 'dart:io';
+import 'package:path/path.dart';
+import 'package:logging/logging.dart';
+import '../models/drone.dart';
+
+
+import 'package:path_provider/path_provider.dart';import 'package:sqflite/sqflite.dart';
+
+class DbHelper
+{
+ static final DbHelper instance = DbHelper._internal();
+ static final log = Logger("DbHelper");
+ static Database? _database;
+
+ DbHelper._internal();
+
+ Future get database async
+ {
+ if (_database != null) return _database!;
+ await _initDb();
+ return _database!;
+ }
+
+ Future _initDb() async
+ {
+ final directory = await getApplicationDocumentsDirectory();
+ final db_name = "rtime.db";
+ final path = join(directory.path, db_name);
+ log.info("Opeing database file at $path");
+
+ _database = await openDatabase(
+ path,
+ version: 1,
+ onCreate: _onCreate,
+ );
+
+ log.info("Database opened successfully !");
+ log.info("${(await getDrones()).length} drones in DB.");
+ }
+
+ Future _onCreate(Database db, int version) async
+ {
+ log.info("Database does not exist, creating a new one.");
+ await db.execute('''
+ CREATE TABLE drones(
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
+ name TEXT NOT NULL,
+ image TEXT
+ )
+ ''');
+ }
+
+ Future insertDrone(Drone drone) async
+ {
+ final db = await database;
+ return await db.insert("drones", drone.toMap());
+ }
+
+ Future> getDrones() async
+ {
+ final db = await database;
+ final maps = await db.query("drones");
+ return maps.map((e) => Drone.fromMap(e)).toList();
+ }
+
+ Future deleteItem(int drone_id) async
+ {
+ final db = await database;
+ return await db.delete("drones", where: "id = ?", whereArgs: [drone_id]);
+ }
+
+ Future closeDb() async
+ {
+ final db = await database;
+ log.info("Closing database.");
+ db.close();
+ _database = null;
+ }
+}
diff --git a/lib/dronedb.dart b/lib/dronedb.dart
new file mode 100644
index 0000000..03ca50f
--- /dev/null
+++ b/lib/dronedb.dart
@@ -0,0 +1,3 @@
+import 'package:sqflite/sqflite.dart';
+
+
diff --git a/lib/main.dart b/lib/main.dart
index 7b7f5b6..c8538e2 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -1,7 +1,25 @@
+import 'dart:io';
+
import 'package:flutter/material.dart';
+import 'package:logging/logging.dart';
+import 'package:rtime/db/db_helper.dart';
+import 'package:rtime/models/drone.dart';
+import 'package:sqflite_common_ffi/sqflite_ffi.dart';
void main() {
+ if(Platform.isWindows || Platform.isLinux)
+ {
+ sqfliteFfiInit();
+ databaseFactory = databaseFactoryFfi;
+ }
+
+ Logger.root.level = Level.ALL;
+ Logger.root.onRecord.listen((record) =>
+ print('${record.level.name}: ${record.time}: ${record.message}')
+ );
runApp(const MyApp());
+
+ //DbHelper.instance.closeDb();
}
class MyApp extends StatelessWidget {
@@ -64,6 +82,7 @@ class _MyHomePageState extends State {
// _counter without calling setState(), then the build method would not be
// called again, and so nothing would appear to happen.
_counter++;
+ DbHelper.instance.insertDrone(Drone(name: "skibidi drone"));
});
}
diff --git a/lib/models/drone.dart b/lib/models/drone.dart
new file mode 100644
index 0000000..eb63bc8
--- /dev/null
+++ b/lib/models/drone.dart
@@ -0,0 +1,24 @@
+import 'package:image/image.dart' as img;
+
+class Drone
+{
+ final int? id;
+ final String name;
+ //final img.Image image;
+
+ Drone ({this.id, required this.name}); //required this.image});
+
+ factory Drone.fromMap(Map map) => Drone
+ (
+ id: map["id"],
+ name: map["name"],
+ //image: img.decodeJpg(map["image"])!,
+ );
+
+ Map toMap() =>
+ {
+ "id": id,
+ "name": name,
+ //"image": img.encodeJpg(image),
+ };
+}
diff --git a/linux/flutter/generated_plugin_registrant.cc b/linux/flutter/generated_plugin_registrant.cc
index e71a16d..2c1ec4f 100644
--- a/linux/flutter/generated_plugin_registrant.cc
+++ b/linux/flutter/generated_plugin_registrant.cc
@@ -6,6 +6,10 @@
#include "generated_plugin_registrant.h"
+#include
void fl_register_plugins(FlPluginRegistry* registry) {
+ g_autoptr(FlPluginRegistrar) sqlite3_flutter_libs_registrar =
+ fl_plugin_registry_get_registrar_for_plugin(registry, "Sqlite3FlutterLibsPlugin");
+ sqlite3_flutter_libs_plugin_register_with_registrar(sqlite3_flutter_libs_registrar);
}
diff --git a/linux/flutter/generated_plugins.cmake b/linux/flutter/generated_plugins.cmake
index 2e1de87..7ea2a80 100644
--- a/linux/flutter/generated_plugins.cmake
+++ b/linux/flutter/generated_plugins.cmake
@@ -3,6 +3,7 @@
#
list(APPEND FLUTTER_PLUGIN_LIST
+ sqlite3_flutter_libs
)
list(APPEND FLUTTER_FFI_PLUGIN_LIST
diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift
index cccf817..85d67e4 100644
--- a/macos/Flutter/GeneratedPluginRegistrant.swift
+++ b/macos/Flutter/GeneratedPluginRegistrant.swift
@@ -5,6 +5,12 @@
import FlutterMacOS
import Foundation
+import path_provider_foundation
+import sqflite_darwin
+import sqlite3_flutter_libs
func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
+ PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))
+ SqflitePlugin.register(with: registry.registrar(forPlugin: "SqflitePlugin"))
+ Sqlite3FlutterLibsPlugin.register(with: registry.registrar(forPlugin: "Sqlite3FlutterLibsPlugin"))
}
diff --git a/pubspec.lock b/pubspec.lock
index eaa659f..1aa7ab8 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -1,6 +1,14 @@
# Generated by pub
# See https://dart.dev/tools/pub/glossary#lockfile
packages:
+ archive:
+ dependency: transitive
+ description:
+ name: archive
+ sha256: "2fde1607386ab523f7a36bb3e7edb43bd58e6edaf2ffb29d8a6d578b297fdbbd"
+ url: "https://pub.dev"
+ source: hosted
+ version: "4.0.7"
async:
dependency: transitive
description:
@@ -41,6 +49,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.19.1"
+ crypto:
+ dependency: transitive
+ description:
+ name: crypto
+ sha256: "1e445881f28f22d6140f181e07737b22f1e099a5e1ff94b0af2f9e4a463f4855"
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.0.6"
cupertino_icons:
dependency: "direct main"
description:
@@ -57,6 +73,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.3.3"
+ ffi:
+ dependency: transitive
+ description:
+ name: ffi
+ sha256: "289279317b4b16eb2bb7e271abccd4bf84ec9bdcbe999e278a94b804f5630418"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.4"
flutter:
dependency: "direct main"
description: flutter
@@ -75,6 +99,14 @@ packages:
description: flutter
source: sdk
version: "0.0.0"
+ image:
+ dependency: "direct main"
+ description:
+ name: image
+ sha256: "4e973fcf4caae1a4be2fa0a13157aa38a8f9cb049db6529aa00b4d71abc4d928"
+ url: "https://pub.dev"
+ source: hosted
+ version: "4.5.4"
leak_tracker:
dependency: transitive
description:
@@ -107,6 +139,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "5.1.1"
+ logging:
+ dependency: "direct main"
+ description:
+ name: logging
+ sha256: c8245ada5f1717ed44271ed1c26b8ce85ca3228fd2ffdb75468ab01979309d61
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.3.0"
matcher:
dependency: transitive
description:
@@ -132,13 +172,93 @@ packages:
source: hosted
version: "1.16.0"
path:
- dependency: transitive
+ dependency: "direct main"
description:
name: path
sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5"
url: "https://pub.dev"
source: hosted
version: "1.9.1"
+ path_provider:
+ dependency: "direct main"
+ description:
+ name: path_provider
+ sha256: "50c5dd5b6e1aaf6fb3a78b33f6aa3afca52bf903a8a5298f53101fdaee55bbcd"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.5"
+ path_provider_android:
+ dependency: transitive
+ description:
+ name: path_provider_android
+ sha256: d0d310befe2c8ab9e7f393288ccbb11b60c019c6b5afc21973eeee4dda2b35e9
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.2.17"
+ path_provider_foundation:
+ dependency: transitive
+ description:
+ name: path_provider_foundation
+ sha256: "4843174df4d288f5e29185bd6e72a6fbdf5a4a4602717eed565497429f179942"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.4.1"
+ path_provider_linux:
+ dependency: transitive
+ description:
+ name: path_provider_linux
+ sha256: f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.2.1"
+ path_provider_platform_interface:
+ dependency: transitive
+ description:
+ name: path_provider_platform_interface
+ sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.2"
+ path_provider_windows:
+ dependency: transitive
+ description:
+ name: path_provider_windows
+ sha256: bd6f00dbd873bfb70d0761682da2b3a2c2fccc2b9e84c495821639601d81afe7
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.3.0"
+ petitparser:
+ dependency: transitive
+ description:
+ name: petitparser
+ sha256: "07c8f0b1913bcde1ff0d26e57ace2f3012ccbf2b204e070290dad3bb22797646"
+ url: "https://pub.dev"
+ source: hosted
+ version: "6.1.0"
+ platform:
+ dependency: transitive
+ description:
+ name: platform
+ sha256: "5d6b1b0036a5f331ebc77c850ebc8506cbc1e9416c27e59b439f917a902a4984"
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.1.6"
+ plugin_platform_interface:
+ dependency: transitive
+ description:
+ name: plugin_platform_interface
+ sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.8"
+ posix:
+ dependency: transitive
+ description:
+ name: posix
+ sha256: "6323a5b0fa688b6a010df4905a56b00181479e6d10534cecfecede2aa55add61"
+ url: "https://pub.dev"
+ source: hosted
+ version: "6.0.3"
sky_engine:
dependency: transitive
description: flutter
@@ -152,6 +272,70 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.10.1"
+ sqflite:
+ dependency: "direct main"
+ description:
+ name: sqflite
+ sha256: e2297b1da52f127bc7a3da11439985d9b536f75070f3325e62ada69a5c585d03
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.4.2"
+ sqflite_android:
+ dependency: transitive
+ description:
+ name: sqflite_android
+ sha256: "2b3070c5fa881839f8b402ee4a39c1b4d561704d4ebbbcfb808a119bc2a1701b"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.4.1"
+ sqflite_common:
+ dependency: transitive
+ description:
+ name: sqflite_common
+ sha256: "84731e8bfd8303a3389903e01fb2141b6e59b5973cacbb0929021df08dddbe8b"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.5.5"
+ sqflite_common_ffi:
+ dependency: "direct main"
+ description:
+ name: sqflite_common_ffi
+ sha256: "9faa2fedc5385ef238ce772589f7718c24cdddd27419b609bb9c6f703ea27988"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.3.6"
+ sqflite_darwin:
+ dependency: transitive
+ description:
+ name: sqflite_darwin
+ sha256: "279832e5cde3fe99e8571879498c9211f3ca6391b0d818df4e17d9fff5c6ccb3"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.4.2"
+ sqflite_platform_interface:
+ dependency: transitive
+ description:
+ name: sqflite_platform_interface
+ sha256: "8dd4515c7bdcae0a785b0062859336de775e8c65db81ae33dd5445f35be61920"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.4.0"
+ sqlite3:
+ dependency: transitive
+ description:
+ name: sqlite3
+ sha256: c0503c69b44d5714e6abbf4c1f51a3c3cc42b75ce785f44404765e4635481d38
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.7.6"
+ sqlite3_flutter_libs:
+ dependency: "direct main"
+ description:
+ name: sqlite3_flutter_libs
+ sha256: e07232b998755fe795655c56d1f5426e0190c9c435e1752d39e7b1cd33699c71
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.5.34"
stack_trace:
dependency: transitive
description:
@@ -176,6 +360,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.4.1"
+ synchronized:
+ dependency: transitive
+ description:
+ name: synchronized
+ sha256: c254ade258ec8282947a0acbbc90b9575b4f19673533ee46f2f6e9b3aeefd7c0
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.4.0"
term_glyph:
dependency: transitive
description:
@@ -192,6 +384,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "0.7.4"
+ typed_data:
+ dependency: transitive
+ description:
+ name: typed_data
+ sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.4.0"
vector_math:
dependency: transitive
description:
@@ -208,6 +408,30 @@ packages:
url: "https://pub.dev"
source: hosted
version: "15.0.0"
+ web:
+ dependency: transitive
+ description:
+ name: web
+ sha256: "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.1"
+ xdg_directories:
+ dependency: transitive
+ description:
+ name: xdg_directories
+ sha256: "7a3f37b05d989967cdddcbb571f1ea834867ae2faa29725fd085180e0883aa15"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.0"
+ xml:
+ dependency: transitive
+ description:
+ name: xml
+ sha256: b015a8ad1c488f66851d762d3090a21c600e479dc75e68328c52774040cf9226
+ url: "https://pub.dev"
+ source: hosted
+ version: "6.5.0"
sdks:
dart: ">=3.8.1 <4.0.0"
- flutter: ">=3.18.0-18.0.pre.54"
+ flutter: ">=3.27.0"
diff --git a/pubspec.yaml b/pubspec.yaml
index 00c53e2..3b29f13 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -34,6 +34,13 @@ dependencies:
# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^1.0.8
+ sqflite: ^2.4.2
+ path_provider: ^2.1.5
+ path: ^1.9.1
+ logging: ^1.3.0
+ sqlite3_flutter_libs: ^0.5.34
+ sqflite_common_ffi: ^2.3.6
+ image: ^4.5.4
dev_dependencies:
flutter_test:
diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc
index 8b6d468..988f3c8 100644
--- a/windows/flutter/generated_plugin_registrant.cc
+++ b/windows/flutter/generated_plugin_registrant.cc
@@ -6,6 +6,9 @@
#include "generated_plugin_registrant.h"
+#include
void RegisterPlugins(flutter::PluginRegistry* registry) {
+ Sqlite3FlutterLibsPluginRegisterWithRegistrar(
+ registry->GetRegistrarForPlugin("Sqlite3FlutterLibsPlugin"));
}
diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake
index b93c4c3..8abff95 100644
--- a/windows/flutter/generated_plugins.cmake
+++ b/windows/flutter/generated_plugins.cmake
@@ -3,6 +3,7 @@
#
list(APPEND FLUTTER_PLUGIN_LIST
+ sqlite3_flutter_libs
)
list(APPEND FLUTTER_FFI_PLUGIN_LIST