)]}'
{
  "commit": "945a9dbe55ba0b22137cd7daa93d94f26189c4a2",
  "tree": "92a87c9b9944127c5bfc9b9b8b849885468c8aca",
  "parents": [
    "b51f2c671f04d5b081a77f524bf9f6390a294d00"
  ],
  "author": {
    "name": "Brandon DeRosier",
    "email": "bdero@google.com",
    "time": "Mon Jun 08 09:58:58 2026 -0700"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Mon Jun 08 16:58:58 2026 +0000"
  },
  "message": "[flutter_tools] Fix `flutter create` crash with SDK packages in bin/cache/pkg (#187653)\n\nFixes flutter/flutter#187652\n\n`flutter create` crashes with a `PathNotFoundException` when the project\ndepended on an SDK package vendored in `bin/cache/pkg` (such as\n`flutter_gpu`), because `gatherSdkPackageDependencies` only looked for\nSDK package pubspecs under `\u003cflutter_root\u003e/packages`. It now resolves\nthe directory the same way pub\u0027s `FlutterSdk.packagePath` does,\nsearching both `packages/` and `bin/cache/pkg/`, and skips a package\ninstead of crashing when its pubspec is missing.\n\n## Pre-launch Checklist\n\n- [x] I read the [Contributor Guide] and followed the process outlined\nthere for submitting PRs.\n- [x] I read the [AI contribution guidelines] and understand my\nresponsibilities, or I am not using AI tools.\n- [x] I read the [Tree Hygiene] wiki page, which explains my\nresponsibilities.\n- [x] I read and followed the [Flutter Style Guide], including [Features\nwe expect every widget to implement].\n- [x] I signed the [CLA].\n- [x] I listed at least one issue that this PR fixes in the description\nabove.\n- [x] I updated/added relevant documentation (doc comments with `///`).\n- [x] I added new tests to check the change I am making, or this PR is\n[test-exempt].\n- [x] I followed the [breaking change policy] and added [Data Driven\nFixes] where supported.\n- [x] All existing and new tests are passing.\n\n\u003c!-- Links --\u003e\n[Contributor Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview\n[AI contribution guidelines]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines\n[Tree Hygiene]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md\n[test-exempt]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests\n[Flutter Style Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md\n[Features we expect every widget to implement]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement\n[CLA]: https://cla.developers.google.com/\n[flutter/tests]: https://github.com/flutter/tests\n[breaking change policy]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes\n[Discord]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md\n[Data Driven Fixes]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "8b394629cec21e4d4595b41d27fc0a25d4658ff2",
      "old_mode": 33188,
      "old_path": "packages/flutter_tools/lib/src/commands/create.dart",
      "new_id": "5ba3975c94793db8a3d334bfb3d82aefa29af1ae",
      "new_mode": 33188,
      "new_path": "packages/flutter_tools/lib/src/commands/create.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a1a18707265a509e44a8859e8bba2f2a1a961da1",
      "new_mode": 33188,
      "new_path": "packages/flutter_tools/test/commands.shard/hermetic/create_pubspec_lock_test.dart"
    }
  ]
}
