Use moor as a ORM for the settings page

This commit is contained in:
Brandon Presley 2023-04-09 14:39:41 +12:00
parent 35787cc208
commit d558a8f5ad
13 changed files with 1494 additions and 3 deletions

View File

@ -22,6 +22,7 @@ linter:
# `// ignore_for_file: name_of_lint` syntax on the line or in the file
# producing the lint.
rules:
curly_braces_in_flow_control_structures: false
# avoid_print: false # Uncomment to disable the `avoid_print` rule
# prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule

35
lib/database.dart Normal file
View File

@ -0,0 +1,35 @@
import 'dart:io';
import 'package:moor/ffi.dart';
import 'package:moor/moor.dart';
import 'package:path/path.dart';
import 'package:path_provider/path_provider.dart';
import 'settings.dart';
part 'database.g.dart';
@UseMoor(tables: [Settings])
class MyDatabase extends _$MyDatabase {
MyDatabase() : super(_openConnection());
@override
int get schemaVersion => 1;
@override
MigrationStrategy get migration => MigrationStrategy(
onCreate: (Migrator m) async {
await m.createAll();
},
onUpgrade: (Migrator m, int from, int to) async {
// no migrations yet
},
);
}
LazyDatabase _openConnection() {
return LazyDatabase(() async {
final dbFolder = await getApplicationDocumentsDirectory();
final file = File(join(dbFolder.path, 'massive.db'));
return VmDatabase(file, logStatements: true);
});
}

709
lib/database.g.dart Normal file
View File

@ -0,0 +1,709 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'database.dart';
// **************************************************************************
// MoorGenerator
// **************************************************************************
// ignore_for_file: type=lint
class Setting extends DataClass implements Insertable<Setting> {
final bool alarm;
final bool vibrate;
final String sound;
final bool notify;
final bool images;
final bool showUnit;
final String? lightColor;
final String? darkColor;
final bool steps;
final String date;
final bool showDate;
final String theme;
final bool showSets;
final bool noSound;
final bool backup;
Setting(
{required this.alarm,
required this.vibrate,
required this.sound,
required this.notify,
required this.images,
required this.showUnit,
this.lightColor,
this.darkColor,
required this.steps,
required this.date,
required this.showDate,
required this.theme,
required this.showSets,
required this.noSound,
required this.backup});
factory Setting.fromData(Map<String, dynamic> data, GeneratedDatabase db,
{String? prefix}) {
final effectivePrefix = prefix ?? '';
return Setting(
alarm: const BoolType()
.mapFromDatabaseResponse(data['${effectivePrefix}alarm'])!,
vibrate: const BoolType()
.mapFromDatabaseResponse(data['${effectivePrefix}vibrate'])!,
sound: const StringType()
.mapFromDatabaseResponse(data['${effectivePrefix}sound'])!,
notify: const BoolType()
.mapFromDatabaseResponse(data['${effectivePrefix}notify'])!,
images: const BoolType()
.mapFromDatabaseResponse(data['${effectivePrefix}images'])!,
showUnit: const BoolType()
.mapFromDatabaseResponse(data['${effectivePrefix}show_unit'])!,
lightColor: const StringType()
.mapFromDatabaseResponse(data['${effectivePrefix}light_color']),
darkColor: const StringType()
.mapFromDatabaseResponse(data['${effectivePrefix}dark_color']),
steps: const BoolType()
.mapFromDatabaseResponse(data['${effectivePrefix}steps'])!,
date: const StringType()
.mapFromDatabaseResponse(data['${effectivePrefix}date'])!,
showDate: const BoolType()
.mapFromDatabaseResponse(data['${effectivePrefix}show_date'])!,
theme: const StringType()
.mapFromDatabaseResponse(data['${effectivePrefix}theme'])!,
showSets: const BoolType()
.mapFromDatabaseResponse(data['${effectivePrefix}show_sets'])!,
noSound: const BoolType()
.mapFromDatabaseResponse(data['${effectivePrefix}no_sound'])!,
backup: const BoolType()
.mapFromDatabaseResponse(data['${effectivePrefix}backup'])!,
);
}
@override
Map<String, Expression> toColumns(bool nullToAbsent) {
final map = <String, Expression>{};
map['alarm'] = Variable<bool>(alarm);
map['vibrate'] = Variable<bool>(vibrate);
map['sound'] = Variable<String>(sound);
map['notify'] = Variable<bool>(notify);
map['images'] = Variable<bool>(images);
map['show_unit'] = Variable<bool>(showUnit);
if (!nullToAbsent || lightColor != null) {
map['light_color'] = Variable<String?>(lightColor);
}
if (!nullToAbsent || darkColor != null) {
map['dark_color'] = Variable<String?>(darkColor);
}
map['steps'] = Variable<bool>(steps);
map['date'] = Variable<String>(date);
map['show_date'] = Variable<bool>(showDate);
map['theme'] = Variable<String>(theme);
map['show_sets'] = Variable<bool>(showSets);
map['no_sound'] = Variable<bool>(noSound);
map['backup'] = Variable<bool>(backup);
return map;
}
SettingsCompanion toCompanion(bool nullToAbsent) {
return SettingsCompanion(
alarm: Value(alarm),
vibrate: Value(vibrate),
sound: Value(sound),
notify: Value(notify),
images: Value(images),
showUnit: Value(showUnit),
lightColor: lightColor == null && nullToAbsent
? const Value.absent()
: Value(lightColor),
darkColor: darkColor == null && nullToAbsent
? const Value.absent()
: Value(darkColor),
steps: Value(steps),
date: Value(date),
showDate: Value(showDate),
theme: Value(theme),
showSets: Value(showSets),
noSound: Value(noSound),
backup: Value(backup),
);
}
factory Setting.fromJson(Map<String, dynamic> json,
{ValueSerializer? serializer}) {
serializer ??= moorRuntimeOptions.defaultSerializer;
return Setting(
alarm: serializer.fromJson<bool>(json['alarm']),
vibrate: serializer.fromJson<bool>(json['vibrate']),
sound: serializer.fromJson<String>(json['sound']),
notify: serializer.fromJson<bool>(json['notify']),
images: serializer.fromJson<bool>(json['images']),
showUnit: serializer.fromJson<bool>(json['showUnit']),
lightColor: serializer.fromJson<String?>(json['lightColor']),
darkColor: serializer.fromJson<String?>(json['darkColor']),
steps: serializer.fromJson<bool>(json['steps']),
date: serializer.fromJson<String>(json['date']),
showDate: serializer.fromJson<bool>(json['showDate']),
theme: serializer.fromJson<String>(json['theme']),
showSets: serializer.fromJson<bool>(json['showSets']),
noSound: serializer.fromJson<bool>(json['noSound']),
backup: serializer.fromJson<bool>(json['backup']),
);
}
@override
Map<String, dynamic> toJson({ValueSerializer? serializer}) {
serializer ??= moorRuntimeOptions.defaultSerializer;
return <String, dynamic>{
'alarm': serializer.toJson<bool>(alarm),
'vibrate': serializer.toJson<bool>(vibrate),
'sound': serializer.toJson<String>(sound),
'notify': serializer.toJson<bool>(notify),
'images': serializer.toJson<bool>(images),
'showUnit': serializer.toJson<bool>(showUnit),
'lightColor': serializer.toJson<String?>(lightColor),
'darkColor': serializer.toJson<String?>(darkColor),
'steps': serializer.toJson<bool>(steps),
'date': serializer.toJson<String>(date),
'showDate': serializer.toJson<bool>(showDate),
'theme': serializer.toJson<String>(theme),
'showSets': serializer.toJson<bool>(showSets),
'noSound': serializer.toJson<bool>(noSound),
'backup': serializer.toJson<bool>(backup),
};
}
Setting copyWith(
{bool? alarm,
bool? vibrate,
String? sound,
bool? notify,
bool? images,
bool? showUnit,
String? lightColor,
String? darkColor,
bool? steps,
String? date,
bool? showDate,
String? theme,
bool? showSets,
bool? noSound,
bool? backup}) =>
Setting(
alarm: alarm ?? this.alarm,
vibrate: vibrate ?? this.vibrate,
sound: sound ?? this.sound,
notify: notify ?? this.notify,
images: images ?? this.images,
showUnit: showUnit ?? this.showUnit,
lightColor: lightColor ?? this.lightColor,
darkColor: darkColor ?? this.darkColor,
steps: steps ?? this.steps,
date: date ?? this.date,
showDate: showDate ?? this.showDate,
theme: theme ?? this.theme,
showSets: showSets ?? this.showSets,
noSound: noSound ?? this.noSound,
backup: backup ?? this.backup,
);
@override
String toString() {
return (StringBuffer('Setting(')
..write('alarm: $alarm, ')
..write('vibrate: $vibrate, ')
..write('sound: $sound, ')
..write('notify: $notify, ')
..write('images: $images, ')
..write('showUnit: $showUnit, ')
..write('lightColor: $lightColor, ')
..write('darkColor: $darkColor, ')
..write('steps: $steps, ')
..write('date: $date, ')
..write('showDate: $showDate, ')
..write('theme: $theme, ')
..write('showSets: $showSets, ')
..write('noSound: $noSound, ')
..write('backup: $backup')
..write(')'))
.toString();
}
@override
int get hashCode => Object.hash(
alarm,
vibrate,
sound,
notify,
images,
showUnit,
lightColor,
darkColor,
steps,
date,
showDate,
theme,
showSets,
noSound,
backup);
@override
bool operator ==(Object other) =>
identical(this, other) ||
(other is Setting &&
other.alarm == this.alarm &&
other.vibrate == this.vibrate &&
other.sound == this.sound &&
other.notify == this.notify &&
other.images == this.images &&
other.showUnit == this.showUnit &&
other.lightColor == this.lightColor &&
other.darkColor == this.darkColor &&
other.steps == this.steps &&
other.date == this.date &&
other.showDate == this.showDate &&
other.theme == this.theme &&
other.showSets == this.showSets &&
other.noSound == this.noSound &&
other.backup == this.backup);
}
class SettingsCompanion extends UpdateCompanion<Setting> {
final Value<bool> alarm;
final Value<bool> vibrate;
final Value<String> sound;
final Value<bool> notify;
final Value<bool> images;
final Value<bool> showUnit;
final Value<String?> lightColor;
final Value<String?> darkColor;
final Value<bool> steps;
final Value<String> date;
final Value<bool> showDate;
final Value<String> theme;
final Value<bool> showSets;
final Value<bool> noSound;
final Value<bool> backup;
const SettingsCompanion({
this.alarm = const Value.absent(),
this.vibrate = const Value.absent(),
this.sound = const Value.absent(),
this.notify = const Value.absent(),
this.images = const Value.absent(),
this.showUnit = const Value.absent(),
this.lightColor = const Value.absent(),
this.darkColor = const Value.absent(),
this.steps = const Value.absent(),
this.date = const Value.absent(),
this.showDate = const Value.absent(),
this.theme = const Value.absent(),
this.showSets = const Value.absent(),
this.noSound = const Value.absent(),
this.backup = const Value.absent(),
});
SettingsCompanion.insert({
required bool alarm,
required bool vibrate,
required String sound,
required bool notify,
required bool images,
required bool showUnit,
this.lightColor = const Value.absent(),
this.darkColor = const Value.absent(),
required bool steps,
required String date,
required bool showDate,
required String theme,
required bool showSets,
required bool noSound,
required bool backup,
}) : alarm = Value(alarm),
vibrate = Value(vibrate),
sound = Value(sound),
notify = Value(notify),
images = Value(images),
showUnit = Value(showUnit),
steps = Value(steps),
date = Value(date),
showDate = Value(showDate),
theme = Value(theme),
showSets = Value(showSets),
noSound = Value(noSound),
backup = Value(backup);
static Insertable<Setting> custom({
Expression<bool>? alarm,
Expression<bool>? vibrate,
Expression<String>? sound,
Expression<bool>? notify,
Expression<bool>? images,
Expression<bool>? showUnit,
Expression<String?>? lightColor,
Expression<String?>? darkColor,
Expression<bool>? steps,
Expression<String>? date,
Expression<bool>? showDate,
Expression<String>? theme,
Expression<bool>? showSets,
Expression<bool>? noSound,
Expression<bool>? backup,
}) {
return RawValuesInsertable({
if (alarm != null) 'alarm': alarm,
if (vibrate != null) 'vibrate': vibrate,
if (sound != null) 'sound': sound,
if (notify != null) 'notify': notify,
if (images != null) 'images': images,
if (showUnit != null) 'show_unit': showUnit,
if (lightColor != null) 'light_color': lightColor,
if (darkColor != null) 'dark_color': darkColor,
if (steps != null) 'steps': steps,
if (date != null) 'date': date,
if (showDate != null) 'show_date': showDate,
if (theme != null) 'theme': theme,
if (showSets != null) 'show_sets': showSets,
if (noSound != null) 'no_sound': noSound,
if (backup != null) 'backup': backup,
});
}
SettingsCompanion copyWith(
{Value<bool>? alarm,
Value<bool>? vibrate,
Value<String>? sound,
Value<bool>? notify,
Value<bool>? images,
Value<bool>? showUnit,
Value<String?>? lightColor,
Value<String?>? darkColor,
Value<bool>? steps,
Value<String>? date,
Value<bool>? showDate,
Value<String>? theme,
Value<bool>? showSets,
Value<bool>? noSound,
Value<bool>? backup}) {
return SettingsCompanion(
alarm: alarm ?? this.alarm,
vibrate: vibrate ?? this.vibrate,
sound: sound ?? this.sound,
notify: notify ?? this.notify,
images: images ?? this.images,
showUnit: showUnit ?? this.showUnit,
lightColor: lightColor ?? this.lightColor,
darkColor: darkColor ?? this.darkColor,
steps: steps ?? this.steps,
date: date ?? this.date,
showDate: showDate ?? this.showDate,
theme: theme ?? this.theme,
showSets: showSets ?? this.showSets,
noSound: noSound ?? this.noSound,
backup: backup ?? this.backup,
);
}
@override
Map<String, Expression> toColumns(bool nullToAbsent) {
final map = <String, Expression>{};
if (alarm.present) {
map['alarm'] = Variable<bool>(alarm.value);
}
if (vibrate.present) {
map['vibrate'] = Variable<bool>(vibrate.value);
}
if (sound.present) {
map['sound'] = Variable<String>(sound.value);
}
if (notify.present) {
map['notify'] = Variable<bool>(notify.value);
}
if (images.present) {
map['images'] = Variable<bool>(images.value);
}
if (showUnit.present) {
map['show_unit'] = Variable<bool>(showUnit.value);
}
if (lightColor.present) {
map['light_color'] = Variable<String?>(lightColor.value);
}
if (darkColor.present) {
map['dark_color'] = Variable<String?>(darkColor.value);
}
if (steps.present) {
map['steps'] = Variable<bool>(steps.value);
}
if (date.present) {
map['date'] = Variable<String>(date.value);
}
if (showDate.present) {
map['show_date'] = Variable<bool>(showDate.value);
}
if (theme.present) {
map['theme'] = Variable<String>(theme.value);
}
if (showSets.present) {
map['show_sets'] = Variable<bool>(showSets.value);
}
if (noSound.present) {
map['no_sound'] = Variable<bool>(noSound.value);
}
if (backup.present) {
map['backup'] = Variable<bool>(backup.value);
}
return map;
}
@override
String toString() {
return (StringBuffer('SettingsCompanion(')
..write('alarm: $alarm, ')
..write('vibrate: $vibrate, ')
..write('sound: $sound, ')
..write('notify: $notify, ')
..write('images: $images, ')
..write('showUnit: $showUnit, ')
..write('lightColor: $lightColor, ')
..write('darkColor: $darkColor, ')
..write('steps: $steps, ')
..write('date: $date, ')
..write('showDate: $showDate, ')
..write('theme: $theme, ')
..write('showSets: $showSets, ')
..write('noSound: $noSound, ')
..write('backup: $backup')
..write(')'))
.toString();
}
}
class $SettingsTable extends Settings with TableInfo<$SettingsTable, Setting> {
@override
final GeneratedDatabase attachedDatabase;
final String? _alias;
$SettingsTable(this.attachedDatabase, [this._alias]);
final VerificationMeta _alarmMeta = const VerificationMeta('alarm');
@override
late final GeneratedColumn<bool?> alarm = GeneratedColumn<bool?>(
'alarm', aliasedName, false,
type: const BoolType(),
requiredDuringInsert: true,
defaultConstraints: 'CHECK (alarm IN (0, 1))');
final VerificationMeta _vibrateMeta = const VerificationMeta('vibrate');
@override
late final GeneratedColumn<bool?> vibrate = GeneratedColumn<bool?>(
'vibrate', aliasedName, false,
type: const BoolType(),
requiredDuringInsert: true,
defaultConstraints: 'CHECK (vibrate IN (0, 1))');
final VerificationMeta _soundMeta = const VerificationMeta('sound');
@override
late final GeneratedColumn<String?> sound = GeneratedColumn<String?>(
'sound', aliasedName, false,
type: const StringType(), requiredDuringInsert: true);
final VerificationMeta _notifyMeta = const VerificationMeta('notify');
@override
late final GeneratedColumn<bool?> notify = GeneratedColumn<bool?>(
'notify', aliasedName, false,
type: const BoolType(),
requiredDuringInsert: true,
defaultConstraints: 'CHECK (notify IN (0, 1))');
final VerificationMeta _imagesMeta = const VerificationMeta('images');
@override
late final GeneratedColumn<bool?> images = GeneratedColumn<bool?>(
'images', aliasedName, false,
type: const BoolType(),
requiredDuringInsert: true,
defaultConstraints: 'CHECK (images IN (0, 1))');
final VerificationMeta _showUnitMeta = const VerificationMeta('showUnit');
@override
late final GeneratedColumn<bool?> showUnit = GeneratedColumn<bool?>(
'show_unit', aliasedName, false,
type: const BoolType(),
requiredDuringInsert: true,
defaultConstraints: 'CHECK (show_unit IN (0, 1))');
final VerificationMeta _lightColorMeta = const VerificationMeta('lightColor');
@override
late final GeneratedColumn<String?> lightColor = GeneratedColumn<String?>(
'light_color', aliasedName, true,
type: const StringType(), requiredDuringInsert: false);
final VerificationMeta _darkColorMeta = const VerificationMeta('darkColor');
@override
late final GeneratedColumn<String?> darkColor = GeneratedColumn<String?>(
'dark_color', aliasedName, true,
type: const StringType(), requiredDuringInsert: false);
final VerificationMeta _stepsMeta = const VerificationMeta('steps');
@override
late final GeneratedColumn<bool?> steps = GeneratedColumn<bool?>(
'steps', aliasedName, false,
type: const BoolType(),
requiredDuringInsert: true,
defaultConstraints: 'CHECK (steps IN (0, 1))');
final VerificationMeta _dateMeta = const VerificationMeta('date');
@override
late final GeneratedColumn<String?> date = GeneratedColumn<String?>(
'date', aliasedName, false,
type: const StringType(), requiredDuringInsert: true);
final VerificationMeta _showDateMeta = const VerificationMeta('showDate');
@override
late final GeneratedColumn<bool?> showDate = GeneratedColumn<bool?>(
'show_date', aliasedName, false,
type: const BoolType(),
requiredDuringInsert: true,
defaultConstraints: 'CHECK (show_date IN (0, 1))');
final VerificationMeta _themeMeta = const VerificationMeta('theme');
@override
late final GeneratedColumn<String?> theme = GeneratedColumn<String?>(
'theme', aliasedName, false,
type: const StringType(), requiredDuringInsert: true);
final VerificationMeta _showSetsMeta = const VerificationMeta('showSets');
@override
late final GeneratedColumn<bool?> showSets = GeneratedColumn<bool?>(
'show_sets', aliasedName, false,
type: const BoolType(),
requiredDuringInsert: true,
defaultConstraints: 'CHECK (show_sets IN (0, 1))');
final VerificationMeta _noSoundMeta = const VerificationMeta('noSound');
@override
late final GeneratedColumn<bool?> noSound = GeneratedColumn<bool?>(
'no_sound', aliasedName, false,
type: const BoolType(),
requiredDuringInsert: true,
defaultConstraints: 'CHECK (no_sound IN (0, 1))');
final VerificationMeta _backupMeta = const VerificationMeta('backup');
@override
late final GeneratedColumn<bool?> backup = GeneratedColumn<bool?>(
'backup', aliasedName, false,
type: const BoolType(),
requiredDuringInsert: true,
defaultConstraints: 'CHECK (backup IN (0, 1))');
@override
List<GeneratedColumn> get $columns => [
alarm,
vibrate,
sound,
notify,
images,
showUnit,
lightColor,
darkColor,
steps,
date,
showDate,
theme,
showSets,
noSound,
backup
];
@override
String get aliasedName => _alias ?? 'settings';
@override
String get actualTableName => 'settings';
@override
VerificationContext validateIntegrity(Insertable<Setting> instance,
{bool isInserting = false}) {
final context = VerificationContext();
final data = instance.toColumns(true);
if (data.containsKey('alarm')) {
context.handle(
_alarmMeta, alarm.isAcceptableOrUnknown(data['alarm']!, _alarmMeta));
} else if (isInserting) {
context.missing(_alarmMeta);
}
if (data.containsKey('vibrate')) {
context.handle(_vibrateMeta,
vibrate.isAcceptableOrUnknown(data['vibrate']!, _vibrateMeta));
} else if (isInserting) {
context.missing(_vibrateMeta);
}
if (data.containsKey('sound')) {
context.handle(
_soundMeta, sound.isAcceptableOrUnknown(data['sound']!, _soundMeta));
} else if (isInserting) {
context.missing(_soundMeta);
}
if (data.containsKey('notify')) {
context.handle(_notifyMeta,
notify.isAcceptableOrUnknown(data['notify']!, _notifyMeta));
} else if (isInserting) {
context.missing(_notifyMeta);
}
if (data.containsKey('images')) {
context.handle(_imagesMeta,
images.isAcceptableOrUnknown(data['images']!, _imagesMeta));
} else if (isInserting) {
context.missing(_imagesMeta);
}
if (data.containsKey('show_unit')) {
context.handle(_showUnitMeta,
showUnit.isAcceptableOrUnknown(data['show_unit']!, _showUnitMeta));
} else if (isInserting) {
context.missing(_showUnitMeta);
}
if (data.containsKey('light_color')) {
context.handle(
_lightColorMeta,
lightColor.isAcceptableOrUnknown(
data['light_color']!, _lightColorMeta));
}
if (data.containsKey('dark_color')) {
context.handle(_darkColorMeta,
darkColor.isAcceptableOrUnknown(data['dark_color']!, _darkColorMeta));
}
if (data.containsKey('steps')) {
context.handle(
_stepsMeta, steps.isAcceptableOrUnknown(data['steps']!, _stepsMeta));
} else if (isInserting) {
context.missing(_stepsMeta);
}
if (data.containsKey('date')) {
context.handle(
_dateMeta, date.isAcceptableOrUnknown(data['date']!, _dateMeta));
} else if (isInserting) {
context.missing(_dateMeta);
}
if (data.containsKey('show_date')) {
context.handle(_showDateMeta,
showDate.isAcceptableOrUnknown(data['show_date']!, _showDateMeta));
} else if (isInserting) {
context.missing(_showDateMeta);
}
if (data.containsKey('theme')) {
context.handle(
_themeMeta, theme.isAcceptableOrUnknown(data['theme']!, _themeMeta));
} else if (isInserting) {
context.missing(_themeMeta);
}
if (data.containsKey('show_sets')) {
context.handle(_showSetsMeta,
showSets.isAcceptableOrUnknown(data['show_sets']!, _showSetsMeta));
} else if (isInserting) {
context.missing(_showSetsMeta);
}
if (data.containsKey('no_sound')) {
context.handle(_noSoundMeta,
noSound.isAcceptableOrUnknown(data['no_sound']!, _noSoundMeta));
} else if (isInserting) {
context.missing(_noSoundMeta);
}
if (data.containsKey('backup')) {
context.handle(_backupMeta,
backup.isAcceptableOrUnknown(data['backup']!, _backupMeta));
} else if (isInserting) {
context.missing(_backupMeta);
}
return context;
}
@override
Set<GeneratedColumn> get $primaryKey => <GeneratedColumn>{};
@override
Setting map(Map<String, dynamic> data, {String? tablePrefix}) {
return Setting.fromData(data, attachedDatabase,
prefix: tablePrefix != null ? '$tablePrefix.' : null);
}
@override
$SettingsTable createAlias(String alias) {
return $SettingsTable(attachedDatabase, alias);
}
}
abstract class _$MyDatabase extends GeneratedDatabase {
_$MyDatabase(QueryExecutor e) : super(SqlTypeSystem.defaultInstance, e);
late final $SettingsTable settings = $SettingsTable(this);
@override
Iterable<TableInfo> get allTables => allSchemaEntities.whereType<TableInfo>();
@override
List<DatabaseSchemaEntity> get allSchemaEntities => [settings];
}

View File

@ -1,5 +1,6 @@
import 'package:flutter/material.dart';
import 'package:fmassive/best_page.dart';
import 'package:fmassive/database.dart';
import 'package:fmassive/edit_set.dart';
import 'package:fmassive/gym_set.dart';
import 'package:fmassive/home_page.dart';
@ -8,6 +9,8 @@ import 'package:fmassive/settings_page.dart';
import 'package:fmassive/timer_page.dart';
import 'package:fmassive/workouts_page.dart';
MyDatabase db = MyDatabase();
void main() {
runApp(MyApp());
}
@ -28,7 +31,7 @@ class MyApp extends StatelessWidget {
'/best': (context) => const BestPage(),
'/workouts': (context) => const WorkoutsPage(),
'/timer': (context) => const TimerPage(),
'/settings': (context) => const SettingsPage(),
'/settings': (context) => SettingsPage(),
'/edit-set': (context) => edit,
};

38
lib/settings.dart Normal file
View File

@ -0,0 +1,38 @@
import 'package:fmassive/database.dart';
import 'package:moor/moor.dart';
Setting defaultSettings = Setting(
alarm: true,
vibrate: true,
sound: 'default.mp3',
notify: true,
images: true,
showUnit: true,
lightColor: null,
darkColor: null,
steps: true,
date: 'DD/MM/YYYY',
showDate: true,
theme: 'light',
showSets: true,
noSound: false,
backup: false,
);
class Settings extends Table {
BoolColumn get alarm => boolean()();
BoolColumn get vibrate => boolean()();
TextColumn get sound => text()();
BoolColumn get notify => boolean()();
BoolColumn get images => boolean()();
BoolColumn get showUnit => boolean()();
TextColumn get lightColor => text().nullable()();
TextColumn get darkColor => text().nullable()();
BoolColumn get steps => boolean()();
TextColumn get date => text()();
BoolColumn get showDate => boolean()();
TextColumn get theme => text()();
BoolColumn get showSets => boolean()();
BoolColumn get noSound => boolean()();
BoolColumn get backup => boolean()();
}

View File

@ -1,7 +1,21 @@
import 'package:flutter/material.dart';
import 'package:flutter/material.dart' as material;
import 'package:fmassive/database.dart';
import 'package:fmassive/main.dart';
import 'package:fmassive/settings.dart';
import 'package:moor/moor.dart';
class SettingsPage extends StatelessWidget {
const SettingsPage({super.key});
SettingsPage({super.key});
final List<Map<String, dynamic>> routes = [
{'title': 'Home', 'icon': Icons.home},
{'title': 'Plans', 'icon': Icons.calendar_today},
{'title': 'Best', 'icon': Icons.star},
{'title': 'Workouts', 'icon': Icons.fitness_center},
{'title': 'Timer', 'icon': Icons.timer},
{'title': 'Settings', 'icon': Icons.settings},
];
@override
Widget build(BuildContext context) {
@ -9,9 +23,169 @@ class SettingsPage extends StatelessWidget {
appBar: AppBar(
title: const Text('Settings'),
),
drawer: Drawer(
child: ListView.builder(
itemCount: routes.length,
itemBuilder: (context, index) {
return ListTile(
leading: Icon(routes[index]['icon']),
title: Text(routes[index]['title']),
onTap: () {
Navigator.pop(context);
Navigator.pushNamed(
context, '/${routes[index]['title'].toLowerCase()}');
},
);
},
),
),
body: const Center(
child: Text('Welcome to the Settings Page!'),
child: _SettingsPage(),
),
);
}
}
class _SettingsPage extends StatefulWidget {
const _SettingsPage({Key? key}) : super(key: key);
@override
createState() => _SettingsPageState();
}
class _SettingsPageState extends State<_SettingsPage> {
late Stream<Setting> stream;
final TextEditingController searchController = TextEditingController();
void reset() async {
var data = await db.select(db.settings).get();
if (data.isEmpty) await db.into(db.settings).insert(defaultSettings);
setState(() {
if (data.isEmpty) return;
});
}
@override
void initState() {
super.initState();
stream = db.select(db.settings).watchSingle();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: StreamBuilder<Setting>(
stream: stream,
builder: (context, snapshot) {
final settings = snapshot.data;
if (settings == null)
return const Center(child: CircularProgressIndicator());
return SingleChildScrollView(
padding: const EdgeInsets.all(8.0),
child: material.Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
SwitchListTile(
title: Text('Alarm'),
value: settings.alarm,
onChanged: (value) {
db
.update(db.settings)
.write(SettingsCompanion(alarm: Value(value)));
},
),
SwitchListTile(
title: Text('Vibrate'),
value: settings.vibrate,
onChanged: (value) {
db
.update(db.settings)
.write(SettingsCompanion(vibrate: Value(value)));
},
),
SwitchListTile(
title: Text('Notify'),
value: settings.notify,
onChanged: (value) {
db
.update(db.settings)
.write(SettingsCompanion(notify: Value(value)));
},
),
SwitchListTile(
title: Text('Images'),
value: settings.images,
onChanged: (value) {
db
.update(db.settings)
.write(SettingsCompanion(images: Value(value)));
},
),
SwitchListTile(
title: Text('Show Unit'),
value: settings.showUnit,
onChanged: (value) {
db
.update(db.settings)
.write(SettingsCompanion(showUnit: Value(value)));
},
),
SwitchListTile(
title: Text('Steps'),
value: settings.steps,
onChanged: (value) {
db
.update(db.settings)
.write(SettingsCompanion(steps: Value(value)));
},
),
TextField(
decoration: InputDecoration(
labelText: 'Sound',
),
onChanged: (value) {
db
.update(db.settings)
.write(SettingsCompanion(sound: Value(value)));
},
),
TextField(
decoration: InputDecoration(
labelText: 'Light Color',
),
onChanged: (value) {
db
.update(db.settings)
.write(SettingsCompanion(lightColor: Value(value)));
},
),
TextField(
decoration: InputDecoration(
labelText: 'Dark Color',
),
onChanged: (value) {
db
.update(db.settings)
.write(SettingsCompanion(darkColor: Value(value)));
},
),
TextField(
decoration: InputDecoration(
labelText: 'Date',
),
onChanged: (value) {
db
.update(db.settings)
.write(SettingsCompanion(date: Value(value)));
},
),
],
),
);
}),
);
}
}

View File

@ -6,6 +6,10 @@
#include "generated_plugin_registrant.h"
#include <sqlite3_flutter_libs/sqlite3_flutter_libs_plugin.h>
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);
}

View File

@ -3,6 +3,7 @@
#
list(APPEND FLUTTER_PLUGIN_LIST
sqlite3_flutter_libs
)
list(APPEND FLUTTER_FFI_PLUGIN_LIST

View File

@ -5,8 +5,12 @@
import FlutterMacOS
import Foundation
import path_provider_foundation
import sqflite
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"))
}

View File

@ -1,6 +1,38 @@
# Generated by pub
# See https://dart.dev/tools/pub/glossary#lockfile
packages:
_fe_analyzer_shared:
dependency: transitive
description:
name: _fe_analyzer_shared
sha256: "4897882604d919befd350648c7f91926a9d5de99e67b455bf0917cc2362f4bb8"
url: "https://pub.dev"
source: hosted
version: "47.0.0"
analyzer:
dependency: transitive
description:
name: analyzer
sha256: "690e335554a8385bc9d787117d9eb52c0c03ee207a607e593de3c9d71b1cfe80"
url: "https://pub.dev"
source: hosted
version: "4.7.0"
analyzer_plugin:
dependency: transitive
description:
name: analyzer_plugin
sha256: "02b0046b8b9a4c97a238c66f70acd22eec4263dfc8d9205f9dab5cc8630c5a6f"
url: "https://pub.dev"
source: hosted
version: "0.11.1"
args:
dependency: transitive
description:
name: args
sha256: "4cab82a83ffef80b262ddedf47a0a8e56ee6fbf7fe21e6e768b02792034dd440"
url: "https://pub.dev"
source: hosted
version: "2.4.0"
async:
dependency: transitive
description:
@ -17,6 +49,70 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.1.1"
build:
dependency: transitive
description:
name: build
sha256: "3fbda25365741f8251b39f3917fb3c8e286a96fd068a5a242e11c2012d495777"
url: "https://pub.dev"
source: hosted
version: "2.3.1"
build_config:
dependency: transitive
description:
name: build_config
sha256: bf80fcfb46a29945b423bd9aad884590fb1dc69b330a4d4700cac476af1708d1
url: "https://pub.dev"
source: hosted
version: "1.1.1"
build_daemon:
dependency: transitive
description:
name: build_daemon
sha256: "757153e5d9cd88253cb13f28c2fb55a537dc31fefd98137549895b5beb7c6169"
url: "https://pub.dev"
source: hosted
version: "3.1.1"
build_resolvers:
dependency: transitive
description:
name: build_resolvers
sha256: "687cf90a3951affac1bd5f9ecb5e3e90b60487f3d9cdc359bb310f8876bb02a6"
url: "https://pub.dev"
source: hosted
version: "2.0.10"
build_runner:
dependency: "direct main"
description:
name: build_runner
sha256: b0a8a7b8a76c493e85f1b84bffa0588859a06197863dba8c9036b15581fd9727
url: "https://pub.dev"
source: hosted
version: "2.3.3"
build_runner_core:
dependency: transitive
description:
name: build_runner_core
sha256: "14febe0f5bac5ae474117a36099b4de6f1dbc52df6c5e55534b3da9591bf4292"
url: "https://pub.dev"
source: hosted
version: "7.2.7"
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: "31b7c748fd4b9adf8d25d72a4c4a59ef119f12876cf414f94f8af5131d5fa2b0"
url: "https://pub.dev"
source: hosted
version: "8.4.4"
characters:
dependency: transitive
description:
@ -25,6 +121,30 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.2.1"
charcode:
dependency: transitive
description:
name: charcode
sha256: fb98c0f6d12c920a02ee2d998da788bca066ca5f148492b7085ee23372b12306
url: "https://pub.dev"
source: hosted
version: "1.3.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:
dependency: transitive
description:
@ -33,6 +153,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.1.1"
code_builder:
dependency: transitive
description:
name: code_builder
sha256: "0d43dd1288fd145de1ecc9a3948ad4a6d5a82f0a14c4fdd0892260787d975cbe"
url: "https://pub.dev"
source: hosted
version: "4.4.0"
collection:
dependency: transitive
description:
@ -41,6 +169,22 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.17.0"
convert:
dependency: transitive
description:
name: convert
sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592"
url: "https://pub.dev"
source: hosted
version: "3.1.1"
crypto:
dependency: transitive
description:
name: crypto
sha256: aa274aa7774f8964e4f4f38cc994db7b6158dd36e9187aaceaddc994b35c6c67
url: "https://pub.dev"
source: hosted
version: "3.0.2"
cupertino_icons:
dependency: "direct main"
description:
@ -49,6 +193,30 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.0.5"
dart_style:
dependency: transitive
description:
name: dart_style
sha256: "7a03456c3490394c8e7665890333e91ae8a49be43542b616e414449ac358acd4"
url: "https://pub.dev"
source: hosted
version: "2.2.4"
drift:
dependency: transitive
description:
name: drift
sha256: "43ae515270f38ffe47702dc920c04d415894bcc6ebdf3e2b6a292cb207ed8cb7"
url: "https://pub.dev"
source: hosted
version: "1.7.1"
drift_dev:
dependency: transitive
description:
name: drift_dev
sha256: "7d51538da971823a158236823cfb299731f720cd55078c6a478bfa4effb69275"
url: "https://pub.dev"
source: hosted
version: "1.7.1"
fake_async:
dependency: transitive
description:
@ -57,6 +225,30 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.3.1"
ffi:
dependency: transitive
description:
name: ffi
sha256: a38574032c5f1dd06c4aee541789906c12ccaab8ba01446e800d9c5b79c4a978
url: "https://pub.dev"
source: hosted
version: "2.0.1"
file:
dependency: transitive
description:
name: file
sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d"
url: "https://pub.dev"
source: hosted
version: "6.1.4"
fixnum:
dependency: transitive
description:
name: fixnum
sha256: "25517a4deb0c03aa0f32fd12db525856438902d9c16536311e76cdc57b31d7d1"
url: "https://pub.dev"
source: hosted
version: "1.1.0"
flutter:
dependency: "direct main"
description: flutter
@ -75,6 +267,54 @@ packages:
description: flutter
source: sdk
version: "0.0.0"
frontend_server_client:
dependency: transitive
description:
name: frontend_server_client
sha256: "408e3ca148b31c20282ad6f37ebfa6f4bdc8fede5b74bc2f08d9d92b55db3612"
url: "https://pub.dev"
source: hosted
version: "3.2.0"
glob:
dependency: transitive
description:
name: glob
sha256: "4515b5b6ddb505ebdd242a5f2cc5d22d3d6a80013789debfbda7777f47ea308c"
url: "https://pub.dev"
source: hosted
version: "2.1.1"
graphs:
dependency: transitive
description:
name: graphs
sha256: f9e130f3259f52d26f0cfc0e964513796dafed572fa52e45d2f8d6ca14db39b2
url: "https://pub.dev"
source: hosted
version: "2.2.0"
http_multi_server:
dependency: transitive
description:
name: http_multi_server
sha256: "97486f20f9c2f7be8f514851703d0119c3596d14ea63227af6f7a481ef2b2f8b"
url: "https://pub.dev"
source: hosted
version: "3.2.1"
http_parser:
dependency: transitive
description:
name: http_parser
sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b"
url: "https://pub.dev"
source: hosted
version: "4.0.2"
io:
dependency: transitive
description:
name: io
sha256: "2ec25704aba361659e10e3e5f5d672068d332fc8ac516421d483a11e5cbd061e"
url: "https://pub.dev"
source: hosted
version: "1.0.4"
js:
dependency: transitive
description:
@ -83,6 +323,14 @@ packages:
url: "https://pub.dev"
source: hosted
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:
dependency: transitive
description:
@ -91,6 +339,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.0.1"
logging:
dependency: transitive
description:
name: logging
sha256: "04094f2eb032cbb06c6f6e8d3607edcfcb0455e2bb6cbc010cb01171dcb64e6d"
url: "https://pub.dev"
source: hosted
version: "1.1.1"
matcher:
dependency: transitive
description:
@ -115,6 +371,46 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.8.0"
mime:
dependency: transitive
description:
name: mime
sha256: e4ff8e8564c03f255408decd16e7899da1733852a9110a58fe6d1b817684a63e
url: "https://pub.dev"
source: hosted
version: "1.0.4"
moor:
dependency: "direct main"
description:
name: moor
sha256: "3c9500ebb0996592480728a5480e020c881110597416b9f3c6f72e57212bd78c"
url: "https://pub.dev"
source: hosted
version: "4.6.1+1"
moor_flutter:
dependency: "direct main"
description:
name: moor_flutter
sha256: "337babe6977103a765d01a838b5d166483eff0a6a83ad5f997761c247f428cdf"
url: "https://pub.dev"
source: hosted
version: "4.1.0"
moor_generator:
dependency: "direct main"
description:
name: moor_generator
sha256: "511df4d32bc6150456024592e4839fb868eda96b49d8c3515e30781eec6bc31d"
url: "https://pub.dev"
source: hosted
version: "4.6.0+1"
package_config:
dependency: transitive
description:
name: package_config
sha256: "1c5b77ccc91e4823a5af61ee74e6b972db1ef98c2ff5a18d3161c982a55448bd"
url: "https://pub.dev"
source: hosted
version: "2.1.0"
path:
dependency: "direct main"
description:
@ -123,11 +419,139 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.8.2"
path_provider:
dependency: "direct main"
description:
name: path_provider
sha256: c7edf82217d4b2952b2129a61d3ad60f1075b9299e629e149a8d2e39c2e6aad4
url: "https://pub.dev"
source: hosted
version: "2.0.14"
path_provider_android:
dependency: transitive
description:
name: path_provider_android
sha256: "019f18c9c10ae370b08dce1f3e3b73bc9f58e7f087bb5e921f06529438ac0ae7"
url: "https://pub.dev"
source: hosted
version: "2.0.24"
path_provider_foundation:
dependency: transitive
description:
name: path_provider_foundation
sha256: "818b2dc38b0f178e0ea3f7cf3b28146faab11375985d815942a68eee11c2d0f7"
url: "https://pub.dev"
source: hosted
version: "2.2.1"
path_provider_linux:
dependency: transitive
description:
name: path_provider_linux
sha256: "2ae08f2216225427e64ad224a24354221c2c7907e448e6e0e8b57b1eb9f10ad1"
url: "https://pub.dev"
source: hosted
version: "2.1.10"
path_provider_platform_interface:
dependency: transitive
description:
name: path_provider_platform_interface
sha256: "57585299a729335f1298b43245842678cb9f43a6310351b18fb577d6e33165ec"
url: "https://pub.dev"
source: hosted
version: "2.0.6"
path_provider_windows:
dependency: transitive
description:
name: path_provider_windows
sha256: f53720498d5a543f9607db4b0e997c4b5438884de25b0f73098cc2671a51b130
url: "https://pub.dev"
source: hosted
version: "2.1.5"
platform:
dependency: transitive
description:
name: platform
sha256: "4a451831508d7d6ca779f7ac6e212b4023dd5a7d08a27a63da33756410e32b76"
url: "https://pub.dev"
source: hosted
version: "3.1.0"
plugin_platform_interface:
dependency: transitive
description:
name: plugin_platform_interface
sha256: "6a2128648c854906c53fa8e33986fc0247a1116122f9534dd20e3ab9e16a32bc"
url: "https://pub.dev"
source: hosted
version: "2.1.4"
pool:
dependency: transitive
description:
name: pool
sha256: "20fe868b6314b322ea036ba325e6fc0711a22948856475e2c2b6306e8ab39c2a"
url: "https://pub.dev"
source: hosted
version: "1.5.1"
process:
dependency: transitive
description:
name: process
sha256: "53fd8db9cec1d37b0574e12f07520d582019cb6c44abf5479a01505099a34a09"
url: "https://pub.dev"
source: hosted
version: "4.2.4"
pub_semver:
dependency: transitive
description:
name: pub_semver
sha256: "307de764d305289ff24ad257ad5c5793ce56d04947599ad68b3baa124105fc17"
url: "https://pub.dev"
source: hosted
version: "2.1.3"
pubspec_parse:
dependency: transitive
description:
name: pubspec_parse
sha256: ec85d7d55339d85f44ec2b682a82fea340071e8978257e5a43e69f79e98ef50c
url: "https://pub.dev"
source: hosted
version: "1.2.2"
recase:
dependency: transitive
description:
name: recase
sha256: e4eb4ec2dcdee52dcf99cb4ceabaffc631d7424ee55e56f280bc039737f89213
url: "https://pub.dev"
source: hosted
version: "4.1.0"
shelf:
dependency: transitive
description:
name: shelf
sha256: c24a96135a2ccd62c64b69315a14adc5c3419df63b4d7c05832a346fdb73682c
url: "https://pub.dev"
source: hosted
version: "1.4.0"
shelf_web_socket:
dependency: transitive
description:
name: shelf_web_socket
sha256: a988c0e8d8ffbdb8a28aa7ec8e449c260f3deb808781fe1284d22c5bba7156e8
url: "https://pub.dev"
source: hosted
version: "1.0.3"
sky_engine:
dependency: transitive
description: flutter
source: sdk
version: "0.0.99"
source_gen:
dependency: transitive
description:
name: source_gen
sha256: "2d79738b6bbf38a43920e2b8d189e9a3ce6cc201f4b8fc76be5e4fe377b1c38d"
url: "https://pub.dev"
source: hosted
version: "1.2.6"
source_span:
dependency: transitive
description:
@ -152,6 +576,30 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.4.3"
sqlite3:
dependency: transitive
description:
name: sqlite3
sha256: "822d321a008e194d7929357e5b58d2e4a04ab670d137182f9759152aa33180ff"
url: "https://pub.dev"
source: hosted
version: "1.10.1"
sqlite3_flutter_libs:
dependency: "direct main"
description:
name: sqlite3_flutter_libs
sha256: "02f80aea54a19a36b347dedf6d4181ecd9107f5831ea6139cfd0376a3de197ba"
url: "https://pub.dev"
source: hosted
version: "0.5.13"
sqlparser:
dependency: transitive
description:
name: sqlparser
sha256: "9ed8f4a24a2a243e23ad267bb50378cb75c7de0b200b5336229b2d6096e6a5df"
url: "https://pub.dev"
source: hosted
version: "0.22.0"
stack_trace:
dependency: transitive
description:
@ -168,6 +616,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.1.1"
stream_transform:
dependency: transitive
description:
name: stream_transform
sha256: "14a00e794c7c11aa145a170587321aedce29769c08d7f58b1d141da75e3b1c6f"
url: "https://pub.dev"
source: hosted
version: "2.1.0"
string_scanner:
dependency: transitive
description:
@ -200,6 +656,22 @@ packages:
url: "https://pub.dev"
source: hosted
version: "0.4.16"
timing:
dependency: transitive
description:
name: timing
sha256: "70a3b636575d4163c477e6de42f247a23b315ae20e86442bebe32d3cabf61c32"
url: "https://pub.dev"
source: hosted
version: "1.0.1"
typed_data:
dependency: transitive
description:
name: typed_data
sha256: "26f87ade979c47a150c9eaab93ccd2bebe70a27dc0b4b29517f2904f04eb11a5"
url: "https://pub.dev"
source: hosted
version: "1.3.1"
vector_math:
dependency: transitive
description:
@ -208,6 +680,46 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.1.4"
watcher:
dependency: transitive
description:
name: watcher
sha256: "6a7f46926b01ce81bfc339da6a7f20afbe7733eff9846f6d6a5466aa4c6667c0"
url: "https://pub.dev"
source: hosted
version: "1.0.2"
web_socket_channel:
dependency: transitive
description:
name: web_socket_channel
sha256: ca49c0bc209c687b887f30527fb6a9d80040b072cc2990f34b9bec3e7663101b
url: "https://pub.dev"
source: hosted
version: "2.3.0"
win32:
dependency: transitive
description:
name: win32
sha256: a6f0236dbda0f63aa9a25ad1ff9a9d8a4eaaa5012da0dc59d21afdb1dc361ca4
url: "https://pub.dev"
source: hosted
version: "3.1.4"
xdg_directories:
dependency: transitive
description:
name: xdg_directories
sha256: ee1505df1426458f7f60aac270645098d318a8b4766d85fde75f76f2e21807d1
url: "https://pub.dev"
source: hosted
version: "1.0.0"
yaml:
dependency: transitive
description:
name: yaml
sha256: "23812a9b125b48d4007117254bca50abb6c712352927eece9e155207b1db2370"
url: "https://pub.dev"
source: hosted
version: "3.1.1"
sdks:
dart: ">=2.19.5 <3.0.0"
flutter: ">=3.3.0"

View File

@ -36,6 +36,12 @@ dependencies:
cupertino_icons: ^1.0.2
path: ^1.8.2
sqflite: ^2.2.6
moor_flutter: ^4.1.0
build_runner: ^2.3.3
moor_generator: ^4.6.0+1
path_provider: ^2.0.14
sqlite3_flutter_libs: ^0.5.13
moor: ^4.6.1+1
dev_dependencies:
flutter_test:

View File

@ -6,6 +6,9 @@
#include "generated_plugin_registrant.h"
#include <sqlite3_flutter_libs/sqlite3_flutter_libs_plugin.h>
void RegisterPlugins(flutter::PluginRegistry* registry) {
Sqlite3FlutterLibsPluginRegisterWithRegistrar(
registry->GetRegistrarForPlugin("Sqlite3FlutterLibsPlugin"));
}

View File

@ -3,6 +3,7 @@
#
list(APPEND FLUTTER_PLUGIN_LIST
sqlite3_flutter_libs
)
list(APPEND FLUTTER_FFI_PLUGIN_LIST