setItem method

  1. @override
Future<Result<int, String, T?>> setItem(
  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?>> setItem(
    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.setItem(item));
  if (res.code == 0) {
    final setItem = res.data!;
    _getItemStream(channel).add(setItem);
    var items = _currentList(channel);
    final index = items.indexWhere((e) => e.id == setItem.id);
    if (index > -1) {
      items.replaceRange(index, index + 1, [setItem]);
    } else {
      items.add(setItem);
    }
    _getItemsStream(channel).add(items);
  }
  return res;
}