木鱼配置记录-数据库

This commit is contained in:
toly
2023-05-16 20:28:08 +08:00
parent fe21bfcba3
commit f1b902ab58
8 changed files with 116 additions and 1 deletions

View File

@@ -5,8 +5,11 @@ import 'guess/guess_page.dart';
import 'muyu/muyu_page.dart';
import 'navigation/app_navigation.dart';
import 'paper/paper.dart';
import 'storage/db_storage/db_storage.dart';
void main() {
void main() async{
WidgetsFlutterBinding.ensureInitialized();
await DbStorage.instance.open();
runApp(const MyApp());
}

View File

@@ -6,4 +6,12 @@ class MeritRecord {
final String audio;
MeritRecord(this.id, this.timestamp, this.value, this.image, this.audio);
Map<String, dynamic> toJson() => {
"id":id,
"timestamp": timestamp,
"value": value,
"image": image,
"audio": audio,
};
}

View File

@@ -6,6 +6,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_first_station/muyu/animate_text.dart';
import 'package:flutter_first_station/muyu/options/select_audio.dart';
import 'package:uuid/uuid.dart';
import '../storage/db_storage/db_storage.dart';
import '../storage/sp_storage.dart';
import 'models/audio_option.dart';
import 'models/image_option.dart';
@@ -62,6 +63,7 @@ class _MuyuPageState extends State<MuyuPage>
_counter = config['counter']??0;
_activeImageIndex = config['activeImageIndex']??0;
_activeAudioIndex = config['activeAudioIndex']??0;
_records = await DbStorage.instance.meritRecordDao.query();
setState(() {
});
@@ -155,6 +157,7 @@ class _MuyuPageState extends State<MuyuPage>
);
_counter += _cruRecord!.value;
saveConfig();
DbStorage.instance.meritRecordDao.insert(_cruRecord!);
// 添加功德记录
_records.add(_cruRecord!);
});

View File

@@ -0,0 +1,47 @@
import 'package:sqflite/sqflite.dart';
import '../../../muyu/models/merit_record.dart';
class MeritRecordDao {
final Database database;
MeritRecordDao(this.database);
static String tableName = 'merit_record';
static String tableSql = """
CREATE TABLE $tableName (
id VARCHAR(64) PRIMARY KEY,
value INTEGER,
image TEXT,
audio TEXT,
timestamp INTEGER
)""";
static Future<void> createTable(Database db) async{
return db.execute(tableSql);
}
Future<int> insert(MeritRecord record) {
return database.insert(
tableName,
record.toJson(),
conflictAlgorithm: ConflictAlgorithm.replace,
);
}
Future<List<MeritRecord>> query() async {
List<Map<String, Object?>> data = await database.query(
tableName,
);
return data
.map((e) => MeritRecord(
e['id'].toString(),
e['timestamp'] as int,
e['value'] as int,
e['image'].toString(),
e['audio'].toString(),
))
.toList();
}
}

View File

@@ -0,0 +1,35 @@
import 'dart:async';
import 'package:sqflite/sqflite.dart';
import 'package:path/path.dart' as path;
import 'dao/merit_record_dao.dart';
class DbStorage {
DbStorage._();
static DbStorage? _storage;
static DbStorage get instance {
_storage = _storage ?? DbStorage._();
return _storage!;
}
late Database _db;
late MeritRecordDao _meritRecordDao;
MeritRecordDao get meritRecordDao => _meritRecordDao;
Future<void> open() async {
String databasesPath = await getDatabasesPath();
String dbPath = path.join(databasesPath, 'first_station.db');
_db = await openDatabase(dbPath, version: 1, onCreate: _onCreate);
_meritRecordDao = MeritRecordDao(_db);
}
void _onCreate(Database db, int version) async {
await MeritRecordDao.createTable(db);
}
}