reconcileDataRows method
void
reconcileDataRows(
- List<
TreeRowNode> dataNodes, - List<
HeaderRow> headerRowList, { - int pageStartIndex = 0,
Rebuilds data rows while reusing existing TreeRow instances for unchanged row keys.
Implementation
void reconcileDataRows(
List<TreeRowNode> dataNodes,
List<hr.HeaderRow> headerRowList, {
int pageStartIndex = 0,
}) {
final oldRows = Set<TreeRow>.identity();
_collectRows(buildedDataRows, oldRows);
final newRows = <TreeRow>[];
final existingRowsByKey = <Object, TreeRow>{};
_indexRowsByKey(buildedDataRows, existingRowsByKey);
_indexRowsByKey(_detachedRowsByKey.values, existingRowsByKey);
for (int rowIndex = 0; rowIndex < dataNodes.length; rowIndex++) {
newRows.add(
_buildOrReuseDataColumns(
dataNodes,
rowIndex,
headerRowList,
parentIndexes: [pageStartIndex],
existingRowsByKey: existingRowsByKey,
),
);
}
_detachRowsMissingFromTree(oldRows, newRows);
buildedDataRows
..clear()
..addAll(newRows);
}