Удаление Flutter HiveDB из базы данных

В документации Hive у нас есть delete метод для удаления чего-либо из базы данных, но этот метод не удаляет из базы данных, а только индексирует найденные данные, и это вызывает некоторые проблемы, когда мы хотим прослушивать изменения базы данных или делать с данными,

другая проблема .values это возвращение non-nullable данные и когда мы пытаемся сделать ListView мы получаем null ошибка

      late Box<Sal> _sal;
useEffect((){
  _sal = Hive.box<Sal>('sal') ;
});

// ...
ValueListenableBuilder(
  valueListenable: _sal.listenable(),
  builder: (_, Box<Sal> sal, __) => ListView.builder(
    physics: const NeverScrollableScrollPhysics(),
    shrinkWrap: true,
    padding: EdgeInsets.zero,
    itemBuilder: (context, index) {
      return Container(
        height: 50.0,
        margin: EdgeInsets.symmetric(vertical: 0.0),
        child: Card(
          color: DefaultColors.$lightBrown,
          child: Row(
            children: [
              CText(
                text: _sal.get(index)!.salName,
                color: Colors.white,
                style: AppTheme.of(context).thinCaption(),
              ).pOnly(right: 16.0),
              const Spacer(),
              IconButton(
                icon: Icon(
                  Icons.edit,
                  color: Colors.yellow,
                ),
                onPressed: () => showGeneralDialog(
                  //...
                ),
              ),
              IconButton(
                icon: Icon(
                  Icons.delete,
                  color: Colors.white,
                ),
                onPressed: () => showGeneralDialog(
                  //...
                ),
              ),
            ],
          ),
        ),
      );
    },
    itemCount: _sal.values.length,
  ),
).pSymmetric(
  h: 16,
),

//...
}

1 ответ

Я нашел решение этой проблемы

      late Box<Sal> _sal;
late List<Sal> _data;
useEffect(() {
  _sal = Hive.box<Sal>('sal');
  _data = _sal.values.toList();
});

//...

ValueListenableBuilder(
  valueListenable: Hive.box<Sal>('sal').listenable(),
  builder: (_, Box<Sal> sal, __) {
    _data = _sal.values.toList();
    return ListView.builder(
    physics: const NeverScrollableScrollPhysics(),
    shrinkWrap: true,
    padding: EdgeInsets.zero,
    itemBuilder: (context, index) {
      return Container(
        height: 50.0,
        margin: EdgeInsets.symmetric(vertical: 0.0),
      );
    },
    itemCount: _data.length,
  );
  },
),
//...
Другие вопросы по тегам