Skip to content

DataTableThemeData.copyWith is broken with the 3.10.0 #126676

@eduboysem

Description

@eduboysem

Is there an existing issue for this?

Steps to reproduce

  1. Create a new Flutter project.
  2. Define a local variable of type DataTableThemeData in the build method of the MyApp class and set a value to dataRowMinHeight and dataRowMaxHeight (or set a value to dataRowHeight, the result is the same).
  3. Call dataTableThemeData.copyWith in the ThemeData of the MaterialApp.
  4. Run the app with flutter run -d chrome

Expected results

No exception should be thrown.

Actual results

An exception is thrown.

Code sample

import 'package:flutter/material.dart';

void main() {
  runApp(
    const MyApp(),
  );
}

class MyApp extends StatelessWidget {
  const MyApp({
    super.key,
  });

  @override
  Widget build(BuildContext context) {
    const themeData = DataTableThemeData(
      dataRowMaxHeight: 52,
      dataRowMinHeight: 52,
    );
    return MaterialApp(
      theme: ThemeData(
        dataTableTheme: themeData.copyWith(),
      ),
    );
  }
}

Logs

[        ] The following assertion was thrown building MyApp(dirty):
[        ] Assertion failed:
[        ] file:///home/duboysem/flutter/packages/flutter/lib/src/material/data_table_theme.dart:61:15
[        ] dataRowHeight == null || (dataRowMinHeight == null && dataRowMaxHeight == null)
[        ] "dataRowHeight (52) must not be set if dataRowMinHeight (52) or dataRowMaxHeight (52) are set."
[        ] The relevant error-causing widget was:
[        ]   MyApp
[        ]   MyApp:file:///media/duboysem/4%20000%20GB%20Drive/flutter/data_row_height_bug/lib/main.dart:5:11
[        ] When the exception was thrown, this was the stack:
[        ] dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 288:49  throw_
[        ] dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 29:3    assertFailed
[        ] packages/flutter/src/material/data_table_theme.dart 61:85                     new
[        ] packages/flutter/src/material/data_table_theme.dart 140:12                    copyWith
[        ] packages/data_row_height_bug/main.dart 22:34                                  build
[        ] packages/flutter/src/widgets/framework.dart 5156:22                           build
[        ] packages/flutter/src/widgets/framework.dart 5086:15                           performRebuild
[        ] packages/flutter/src/widgets/framework.dart 4805:7                            rebuild
[        ] packages/flutter/src/widgets/framework.dart 5068:5                            [_firstBuild]
[        ] packages/flutter/src/widgets/framework.dart 5062:5                            mount
[        ] packages/flutter/src/widgets/framework.dart 3971:15                           inflateWidget
[        ] packages/flutter/src/widgets/framework.dart 3708:18                           updateChild
[        ] packages/flutter/src/widgets/framework.dart 5111:16                           performRebuild
[        ] packages/flutter/src/widgets/framework.dart 4805:7                            rebuild
[        ] packages/flutter/src/widgets/framework.dart 5068:5                            [_firstBuild]
[        ] packages/flutter/src/widgets/framework.dart 5062:5                            mount
[        ] packages/flutter/src/widgets/framework.dart 3971:15                           inflateWidget
[        ] packages/flutter/src/widgets/framework.dart 3708:18                           updateChild
[        ] packages/flutter/src/widgets/framework.dart 5111:16                           performRebuild
[        ] packages/flutter/src/widgets/framework.dart 5251:11                           performRebuild
[        ] packages/flutter/src/widgets/framework.dart 4805:7                            rebuild
[        ] packages/flutter/src/widgets/framework.dart 5068:5                            [_firstBuild]
[        ] packages/flutter/src/widgets/framework.dart 5242:11                           [_firstBuild]
[        ] packages/flutter/src/widgets/framework.dart 5062:5                            mount
[        ] packages/flutter/src/widgets/framework.dart 3971:15                           inflateWidget
[        ] packages/flutter/src/widgets/framework.dart 3708:18                           updateChild
[        ] packages/flutter/src/widgets/framework.dart 5111:16                           performRebuild
[        ] packages/flutter/src/widgets/framework.dart 4805:7                            rebuild
[        ] packages/flutter/src/widgets/framework.dart 5068:5                            [_firstBuild]
[        ] packages/flutter/src/widgets/framework.dart 5062:5                            mount
[        ] packages/flutter/src/widgets/framework.dart 3971:15                           inflateWidget
[        ] packages/flutter/src/widgets/framework.dart 3708:18                           updateChild
[        ] packages/flutter/src/widgets/framework.dart 5111:16                           performRebuild
[        ] packages/flutter/src/widgets/framework.dart 4805:7                            rebuild
[        ] packages/flutter/src/widgets/framework.dart 5068:5                            [_firstBuild]
[        ] packages/flutter/src/widgets/framework.dart 5062:5                            mount
[        ] packages/flutter/src/widgets/framework.dart 3971:15                           inflateWidget
[        ] packages/flutter/src/widgets/framework.dart 3708:18                           updateChild
[        ] packages/flutter/src/widgets/binding.dart 1240:16                             [_rebuild]
[        ] packages/flutter/src/widgets/binding.dart 1209:5                              mount
[        ] packages/flutter/src/widgets/binding.dart 1156:16                             <fn>
[        ] packages/flutter/src/widgets/framework.dart 2720:19                           buildScope
[        ] packages/flutter/src/widgets/binding.dart 1155:12                             attachToRenderTree
[        ] packages/flutter/src/widgets/binding.dart 987:24                              attachRootWidget
[        ] packages/flutter/src/widgets/binding.dart 968:7                               <fn>
[        ] dart-sdk/lib/_internal/js_dev_runtime/private/isolate_helper.dart 48:19       internalCallback

Flutter Doctor output

[✓] Flutter (Channel stable, 3.10.0, on Ubuntu 22.04.2 LTS 5.19.0-41-generic, locale en_CA.UTF-8)
    • Flutter version 3.10.0 on channel stable at /home/duboysem/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 84a1e904f4 (3 days ago), 2023-05-09 07:41:44 -0700
    • Engine revision d44b5a94c9
    • Dart version 3.0.0
    • DevTools version 2.23.1

[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.0)
    • Android SDK at /home/duboysem/Android/Sdk
    • Platform android-33, build-tools 33.0.0
    • Java binary at: /home/duboysem/android/android-studio/jre/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.13+0-b1751.21-8125866)
    • All Android licenses accepted.

[✓] Chrome - develop for the web
    • Chrome at google-chrome

[✓] Linux toolchain - develop for Linux desktop
    • Ubuntu clang version 14.0.0-1ubuntu1
    • cmake version 3.22.1
    • ninja version 1.10.1
    • pkg-config version 0.29.2

[✓] Android Studio (version 2021.3)
    • Android Studio at /home/duboysem/android/android-studio
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.13+0-b1751.21-8125866)

[✓] VS Code (version 1.78.2)
    • VS Code at /usr/share/code
    • Flutter extension version 3.64.0

[✓] Connected device (2 available)
    • Linux (desktop) • linux  • linux-x64      • Ubuntu 22.04.2 LTS 5.19.0-41-generic
    • Chrome (web)    • chrome • web-javascript • Google Chrome 113.0.5672.92

[✓] Network resources
    • All expected network resources are available.

• No issues found!

Metadata

Metadata

Assignees

No one assigned

    Labels

    c: crashStack traces logged to the consolef: material designflutter/packages/flutter/material repository.found in release: 3.10Found to occur in 3.10found in release: 3.11Found to occur in 3.11frameworkflutter/packages/flutter repository. See also f: labels.has reproducible stepsThe issue has been confirmed reproducible and is ready to work onr: fixedIssue is closed as already fixed in a newer version

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions