updateItem method

  1. @override
Future<Result<int, String, T?>> updateItem(
  1. T item, {
  2. Future<Result<int, String, T?>> alternativeFunc(
    1. T item
    )?,
  3. String channel = 'main',
  4. CrudStrategy strategy = const DefaultCrudStrategy(),
})
override

Implementation

@override
Future<Result<int, String, T?>> updateItem(
    T item, {
      Future<Result<int, String, T?>> Function(T item)? alternativeFunc,
      String channel = 'main',
      CrudStrategy strategy = const DefaultCrudStrategy(),
    }) async {
  final res = await (alternativeFunc != null
      ? alternativeFunc(item)
      : _crud.updateItem(item));
  if (res.code == 0) {
    final updatedItem = res.data!;
    _getItemStream(channel).add(updatedItem);
    var items = _currentList(channel);
    final index = items.indexWhere((e) => e.id == updatedItem.id);
    if (index != -1) {
      items.replaceRange(index, index + 1, [updatedItem]);
    }
    _getItemsStream(channel).add(items);
  }
  return res;
}