anchor.diff:        builder: (BuildContext context, BoxConstraints constraints) {
           bool isHeaderPresent = widget.header != null || widget.actions != null;
           if (widget.autoRowsToHeight) {
  -          effectiveRowsPerPage = math.max(
  +          _effectiveRowsPerPage = math.max(
                 ((constraints.maxHeight -
                             widget.headingRowHeight -
                             8 * (widget.wrapInCard ? 1 : 0) // card paddings
  
positive.code:     if (widget.onRowsPerPageChanged != null) {
        final List<Widget> availableRowsPerPage = widget.availableRowsPerPage
            .where((int value) =>
                value <= _rowCount || value == effectiveRowsPerPage)
            .map<DropdownMenuItem<int>>((int value) {
          return DropdownMenuItem<int>(
            value: value,
  
negative.code: import 'package:flutter/widgets.dart';
  
  import 'data_table_2.dart';
  
  /// Use instances of the class to externally control [PaginatedDataTable2] state
  /// and trigger actions such as changing page number or size. Instatiate object,
  /// keep it somewhere (e.g. parent widgets state or statis field/top level variable),
  /// pass it to [PaginatedDataTable2.controller] via constructor
  class PaginatorController {
    PaginatedDataTable2State? _state;
  
    void _attach(PaginatedDataTable2State state) {
      _state = state;
    }
  
    void _detach() {
      _state = null;
    }
  
    void _checkAttachedAndThrow() {
      if (_state == null)
        throw 'PaginatorController is not attached to any PaginatedDataTable2 and can\'t be used';
    }
  
    int getRowCount() {
      _checkAttachedAndThrow();
      return _state!._rowCount;
    }
  
    int getPageSize() {
      _checkAttachedAndThrow();
      return _state!._effectiveRowsPerPage;
    }
  }
  
  /// In-place replacement of standard [PaginatedDataTable] widget, mimics it API.
  /// Has the header row and paginatior always fixed to top and bottom (correspondingly).
  