Home > Software engineering >  Flutter and hive db how to update data using flutter?
Flutter and hive db how to update data using flutter?

Time:11-27

 void deleteTask(int index) {
    setState(() {
      db.toDoList.removeAt(index);
    });
    db.updateDataBase();
  }

this is what the delete function looks like how can i make the edit function for hive using flutter in that manner as above stated? please help

CodePudding user response:

Using the Hive database, there is a get(), getAt() put(), putAt(), delete(), deleteAt() methods that are well-documented from it's official documentation.

Hive is a key-value based database, there is no update() method by default, but you can achieve the same as only with the provided methods (getAt() and putAt()).

Considering that I have a "stringText" value stored on the 5 index, as we know to get it from a box, we can do the:

String valueFromTheBox = box.getAt(5); // "stringText"

And, in order to achieve and update this value, we simply need to assign a new value to that valueFromTheBox variable and put it again on the same key using putAt() like this:

valueFromTheBox = "newValueTHatWillBePut";
box.putAt(5);

This will literally make an update method, so in order to make a full function that achieves, and based on your case we can do:

void updateTask(int index) {
 SetState(() {
  
  dynamic task = db.toDoList.getAt(index); // get previous task
  task = changeSomethingAndReturn(previousTask); // change/edit the task
  db.toDoList.putAt(index, task); // assign the task on same index 
 
  });
  
  db.updateDataBase();

}

And you need to replace changeSomethingAndReturn() method with your method that takes the task and makes changes over it then returns the new changed one.

Note: I don't recommend letting the dynamic type, since it's not mentioned in your question, I'm using it, but you should specify its type so you prevent getting into errors.

  • Related