)]}'
{
  "commit": "a336f293406c04cf39113d4ec4511e2bbf9cfeea",
  "tree": "75e9639db6727662d267003ff4daf570a2aa6319",
  "parents": [
    "54e094baa31e1da5f9cd73ceaf67ae11211a67c5"
  ],
  "author": {
    "name": "Md. Murad Hossin",
    "email": "48625061+muradhossin@users.noreply.github.com",
    "time": "Mon Mar 23 01:31:24 2026 +0600"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Sun Mar 22 19:31:24 2026 +0000"
  },
  "message": "Add assert for mutually exclusive errorBuilder and errorText (#183901)\n\nThis PR fixes a framework crash that occurs when `errorBuilder` is used\nalongside an `InputDecoration` that contains an `errorText`.\n\nBecause `InputDecoration.copyWith` ignores `null` values, attempting to\nclear the `errorText` dynamically during the build phase leaves the\ndecoration with both properties defined, triggering a late assertion in\n`InputDecorator`.\n\nFollowing the architectural guidance provided by @Hari-07 in PR #183384,\nthis fix enforces mutual exclusivity at the constructor level. It adds\nan `assert` to both `TextFormField` and `DropdownButtonFormField` to\nensure developers fail fast if both properties are provided.\n\nFixes #183378\n\nI added the following tests to verify the assertions:\n- `TextFormField` asserts when both `errorBuilder` and\n`decoration.errorText` are provided.\n- `DropdownButtonFormField` asserts when both `errorBuilder` and\n`decoration.errorText` are provided.\n\n---------\n\nCo-authored-by: Hari07 \u003c22373191+Hari-07@users.noreply.github.com\u003e",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "a1624ed050a85c90a12035a86c2f745a2452ef62",
      "old_mode": 33188,
      "old_path": "packages/flutter/lib/src/material/dropdown.dart",
      "new_id": "46acc04934db1aae862c0ed9ba5aaa4a5ccb0959",
      "new_mode": 33188,
      "new_path": "packages/flutter/lib/src/material/dropdown.dart"
    },
    {
      "type": "modify",
      "old_id": "09a5b727f4d30424ed319587add22e584c233a32",
      "old_mode": 33188,
      "old_path": "packages/flutter/lib/src/material/text_form_field.dart",
      "new_id": "d1ca42c51f81e818c11fe895167775f737cfe141",
      "new_mode": 33188,
      "new_path": "packages/flutter/lib/src/material/text_form_field.dart"
    },
    {
      "type": "modify",
      "old_id": "3643b76f6b6ba85d693e215c8ba5aa349fbe4973",
      "old_mode": 33188,
      "old_path": "packages/flutter/test/material/dropdown_test.dart",
      "new_id": "c27096abe153fd66ba3977247af9776fd456e904",
      "new_mode": 33188,
      "new_path": "packages/flutter/test/material/dropdown_test.dart"
    },
    {
      "type": "modify",
      "old_id": "03be96cc19e6bd89975f1211f9ad038261ab60bd",
      "old_mode": 33188,
      "old_path": "packages/flutter/test/material/text_form_field_test.dart",
      "new_id": "7f98c2e418237e779c6be34b10299da0775fbeeb",
      "new_mode": 33188,
      "new_path": "packages/flutter/test/material/text_form_field_test.dart"
    }
  ]
}
