hive flutter 中的 delete(key) 函数不起作用
delete(key) function in hive flutter not working
flutter 中的 dlete frome hive 本地数据库无法正常工作。 delete(key)
不工作
但是 deleteAt(index)
工作正常
这是我的数据库操作所在的代码
并且我想删除带有数据 ID 的数据。我没有收到任何错误,它不起作用,如果我单击删除按钮,它会正确打印 id 但不会使用该 id 删除我是 dart 和 flutter 的初学者
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;
删除
await db.add(data);
这将为您自动生成一个密钥。如果你想使用你的密钥,你实际上必须这样做:
await db.put(data.id, data);
flutter 中的 dlete frome hive 本地数据库无法正常工作。 delete(key)
不工作
但是 deleteAt(index)
工作正常
这是我的数据库操作所在的代码
并且我想删除带有数据 ID 的数据。我没有收到任何错误,它不起作用,如果我单击删除按钮,它会正确打印 id 但不会使用该 id 删除我是 dart 和 flutter 的初学者
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;
await db.add(data);
这将为您自动生成一个密钥。如果你想使用你的密钥,你实际上必须这样做:
await db.put(data.id, data);