Flutter 中的 dlete frome hive 本地資料庫無法正常作業。delete(key)不作業,但deleteAt(index)作業正常
這是我的資料庫操作所在的代碼
我想洗掉具有資料ID的資料。我沒有收到任何錯誤,它不起作用,如果我單擊洗掉按鈕,它會正確列印 id,但沒有使用該 id 洗掉,我是飛鏢和顫振的初學者
import 'package:money_manager/functions/lists.dart';
import 'package:money_manager/models/transactions.dart';
import 'package:path_provider/path_provider.dart';
Future<void> addData(Transactions data) async {
var dir = await getApplicationDocumentsDirectory();
Hive.init(dir.path);
final db = await Hive.openBox<Transactions>('transaction_db');
await db.add(data);
print(data);
transactions.value.add(data);
transactions.notifyListeners();
}
Future<void> getAllTransactions() async {
var dir = await getApplicationDocumentsDirectory();
Hive.init(dir.path);
final db = await Hive.openBox<Transactions>('transaction_db');
//await db.clear();
transactions.value.clear();
transactions.value.addAll(db.values);
transactions.notifyListeners();
}
Future<void> deleteData(int index) async {
var dir = await getApplicationDocumentsDirectory();
Hive.init(dir.path);
final db = await Hive.openBox<Transactions>('transaction_db');
await db.delete(index);
print(index);
getAllTransactions();
}
我的資料庫模型是
import 'package:hive_flutter/hive_flutter.dart';
part 'transactions.g.dart';
@HiveType(typeId: 1)
class Transactions {
@HiveField(0)
final int id;
@HiveField(1)
final String title;
@HiveField(2)
final int amount;
@HiveField(4)
final DateTime dateTime;
@HiveField(5)
bool isIncome;
Transactions(
{required this.id,
required this.title,
required this.amount,
required this.dateTime,
required this.isIncome });
}
我想洗掉 @HiveField(0) final int id;
uj5u.com熱心網友回復:
await db.add(data);
這將為您自動生成密鑰。如果你想使用你的密鑰,你實際上必須這樣做:
await db.put(data.id, data);
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/411615.html
標籤:
