anchor.diff:              if (isSelected) MaterialState.selected,
               if (isDisabled) MaterialState.disabled,
             };
  -          final Color? resolvedDataRowColor =
  -              (rows[rowStartIndex + actualIndex].color ?? effectiveDataRowColor)
  -                  ?.resolve(states);
  +          final Color? resolvedDataRowColor = (forceEffectiveDataRowColor
  +                  ? effectiveDataRowColor
  +                  : (rows[rowStartIndex + actualIndex].color ??
  +                      effectiveDataRowColor))
  +              ?.resolve(states);
             final Color? rowColor = resolvedDataRowColor;
             final BorderSide borderSide = Divider.createBorderSide(
               context,
  
positive.code:                       : null,
                    sorted: dataColumnIndex == sortColumnIndex,
                    ascending: sortAscending,
                    overlayColor: effectiveHeadingRowColor,
                    backgroundColor: displayColumnIndex < actualFixedColumns
                        ? (actualFixedRows < 1
                            ? fixedColumnsColor
                            : (actualFixedRows > 0 ? fixedCornerColor : null))
                        : null);
  
                headingRow.children![displayColumnIndex] =
                    h; // heading row alone is used to display table header should there be no data rows
  
negative.code:       required ValueChanged<bool?>? onCheckboxChanged,
        required MaterialStateProperty<Color?>? overlayColor,
        required bool tristate,
        required double rowHeight}) {
      final ThemeData themeData = Theme.of(context);
      final double effectiveHorizontalMargin = horizontalMargin ??
          themeData.dataTableTheme.horizontalMargin ??
  