delete(key) function in hive flutter not working

399
await db.add(data);

This will auto-generate a key for you. If you want to use your key, you actually have to do so:

await db.put(data.id, data);
Share:
399
Irshad KP
Author by

Irshad KP

Updated on January 03, 2023

Comments

  • Irshad KP
    Irshad KP over 1 year

    dlete frome hive local database in flutter is not working. delete(key) is not working but deleteAt(index) is working fine

    this is my code where database operations located

    and i want to delete a data with the id of the data. i dont get any error its not working and if i click delete button its correctly printing id but not deleting with that id im a beginner in dart and 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();
    
    
    }
    
    
    

    My database model is

    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 });
    }
    

    i want to delete with @HiveField(0) final int id;