)]}'
{
  "commit": "1d268f4bf6922cec8e43a4b84ac6b6153431e545",
  "tree": "58b0f02dd98bb9afba8128ca71f0944e506ec578",
  "parents": [
    "e302730766243dcfb7078cc651e47d0ffadd32bd"
  ],
  "author": {
    "name": "Onnimanni Hannonen",
    "email": "51901607+O-Hannonen@users.noreply.github.com",
    "time": "Wed Nov 12 05:35:43 2025 +0100"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Wed Nov 12 04:35:43 2025 +0000"
  },
  "message": "Add focus support for CupertinoActionSheetAction #166398 (#167119)\n\n\u003c!--\nThanks for filing a pull request!\nReviewers are typically assigned within a week of filing a request.\nTo learn more about code review, see our documentation on Tree Hygiene:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md\n--\u003e\n\n### This PR fixes #166398\n- Adds focus support for `CupertinoActionSheetAction`. This makes it\nwork with keyboard shortcuts\n- Creates new widget, `CupertinoTraversalGroup` that applies a Cupertino\nstyle focus border around its child when any of its descendant has focus\n- Employs `CupertinoTraversalGroup` in `CupertinoActionSheet`\n\nHow the new implementation looks and behaves:\n\nhttps://github.com/user-attachments/assets/ea6789f1-921d-4598-bcca-489dc063ff73\n\nHow the native counterpart looks and behaves:\n\nhttps://github.com/user-attachments/assets/4c6ae2a0-7205-4de2-b981-ec7f4839da6e\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 [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[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\n\n---------\n\nCo-authored-by: Tong Mu \u003cdkwingsmt@users.noreply.github.com\u003e",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "0fc3e411e10d2b065a3e1f4587805156941c0ca1",
      "old_mode": 33188,
      "old_path": "packages/flutter/lib/cupertino.dart",
      "new_id": "a32909a0164f513b214d8f21e6af4384b1707692",
      "new_mode": 33188,
      "new_path": "packages/flutter/lib/cupertino.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "95fd9b87b9d3aa1756a494797fc9d3c4afec0f6e",
      "new_mode": 33188,
      "new_path": "packages/flutter/lib/src/cupertino/cupertino_focus_halo.dart"
    },
    {
      "type": "modify",
      "old_id": "bd6408025d1da5b1479c4e3f9d0dbb59ef21b218",
      "old_mode": 33188,
      "old_path": "packages/flutter/lib/src/cupertino/dialog.dart",
      "new_id": "b9e778a7bc2759fda0544de379daa8f9eccf7bb8",
      "new_mode": 33188,
      "new_path": "packages/flutter/lib/src/cupertino/dialog.dart"
    },
    {
      "type": "modify",
      "old_id": "1e7be5f1dfea4a562c5eab2affb3800443db25c6",
      "old_mode": 33188,
      "old_path": "packages/flutter/test/cupertino/action_sheet_test.dart",
      "new_id": "6db14446c80826e0bd82a185fc6b2e496ed6e491",
      "new_mode": 33188,
      "new_path": "packages/flutter/test/cupertino/action_sheet_test.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "21ce0398f100ecde9bc6b100687c4b9f28f6f2cb",
      "new_mode": 33188,
      "new_path": "packages/flutter/test/cupertino/cupertino_focus_halo_test.dart"
    }
  ]
}
