[storage] change schema a little
This commit is contained in:
parent
85cdd68ac1
commit
94042eb213
4 changed files with 100 additions and 1 deletions
56
lib/screens/settings.dart
Normal file
56
lib/screens/settings.dart
Normal file
|
@ -0,0 +1,56 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:fooder/screens/based.dart';
|
||||
import 'package:fooder/components/button.dart';
|
||||
|
||||
class SettingsScreen extends BasedScreen {
|
||||
const SettingsScreen({super.key, required super.ctx});
|
||||
|
||||
@override
|
||||
State<SettingsScreen> createState() => _SettingsScreen();
|
||||
}
|
||||
|
||||
class _SettingsScreen extends BasedState<SettingsScreen> {
|
||||
Future<void> resetStorage() async {
|
||||
try {
|
||||
ctx.storage.reset();
|
||||
showText("Storage reset");
|
||||
} catch (e) {
|
||||
showError(e.toString());
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
var theme = Theme.of(context);
|
||||
var colorScheme = theme.colorScheme;
|
||||
|
||||
return Scaffold(
|
||||
extendBodyBehindAppBar: false,
|
||||
extendBody: true,
|
||||
appBar: appBar(),
|
||||
bottomNavigationBar: navBar(),
|
||||
body: Center(
|
||||
child: Container(
|
||||
constraints: const BoxConstraints(maxWidth: 600),
|
||||
padding: const EdgeInsets.all(10),
|
||||
child: AutofillGroup(
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
children: <Widget>[
|
||||
Icon(
|
||||
Icons.verified_user_sharp,
|
||||
size: 100,
|
||||
color: colorScheme.primary.withOpacity(0.85),
|
||||
),
|
||||
FButton(
|
||||
labelText: 'Reset local storage',
|
||||
onPressed: resetStorage,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
43
lib/storage/diary.dart
Normal file
43
lib/storage/diary.dart
Normal file
|
@ -0,0 +1,43 @@
|
|||
import 'dart:async';
|
||||
import 'dart:convert';
|
||||
|
||||
import 'package:sqflite/sqflite.dart';
|
||||
import 'package:fooder/models/diary.dart';
|
||||
import 'package:fooder/storage/based.dart';
|
||||
|
||||
class DiaryStorage extends StorageBased {
|
||||
DiaryStorage({required super.db});
|
||||
|
||||
static Future<void> createTable(Batch batch) async {
|
||||
batch.execute('''
|
||||
CREATE TABLE diary(
|
||||
date TEXT PRIMARY KEY,
|
||||
content TEXT,
|
||||
needs_sync BOOLEAN,
|
||||
last_sync TEXT
|
||||
)
|
||||
''');
|
||||
}
|
||||
|
||||
Future<Diary?> get({required DateTime date}) async {
|
||||
var result = await db
|
||||
.query('diary', where: 'date = ?', whereArgs: [date.toIso8601String()]);
|
||||
if (result.isEmpty) {
|
||||
return null;
|
||||
}
|
||||
return Diary.fromJson(
|
||||
jsonDecode((result.first as Map<String, dynamic>)['content']));
|
||||
}
|
||||
|
||||
Future<void> insert(Diary diary, {bool needsSync = false}) async {
|
||||
var data = {
|
||||
'id': diary.id,
|
||||
'date': diary.date.toIso8601String(),
|
||||
'content': jsonEncode(diary.toMap()),
|
||||
'needs_sync': needsSync,
|
||||
'last_sync': needsSync ? DateTime.now().toIso8601String() : null,
|
||||
};
|
||||
await db.insert('diary', data,
|
||||
conflictAlgorithm: ConflictAlgorithm.replace);
|
||||
}
|
||||
}
|
0
lib/storage/preset.dart
Normal file
0
lib/storage/preset.dart
Normal file
|
@ -10,7 +10,7 @@ class ProductStorage extends StorageBased {
|
|||
static Future<void> createTable(Batch batch) async {
|
||||
batch.execute('''
|
||||
CREATE TABLE product(
|
||||
id INTEGER,
|
||||
id INTEGER PRIMARY KEY,
|
||||
name TEXT,
|
||||
barcode TEXT,
|
||||
calories REAL,
|
||||
|
|
Loading…
Reference in a new issue