GiancarloCode/form_bloc

Inconsistency with `ListFieldBloc#updateFieldBlocs`

Zekfad opened this issue · 1 comments

Zekfad commented

I've tried to use ReorderableListView with ListFieldBloc and found following inconsistency:

final shapes = ListFieldBloc<ShapePropertiesBloc, void>();

This one produces incorrect results inconsistently

  void reorderShape(int oldIndex, int newIndex) {
    final blocs = shapes.state.fieldBlocs;
    final shapeBloc = blocs.removeAt(oldIndex);
    blocs.insert(
      oldIndex < newIndex
        ? newIndex - 1
        : newIndex,
      shapeBloc,
    );
    shapes.updateFieldBlocs(blocs);
  }

This method produces correct results, but creates a junk frames due to double emit.

  void reorderShape(int oldIndex, int newIndex) {
     shapes
      ..removeFieldBlocAt(oldIndex)
      ..insertFieldBloc(
        shapeBloc,
        oldIndex < newIndex
          ? newIndex - 1
          : newIndex,
      );
  }

I suspect issue is with order of FormBlocUtils calls, because they are different if I use patch method.