)]}'
{
  "commit": "592f81e7c4eb31327b3cbf1e73d547587d6f7dea",
  "tree": "a2927dc6ed9c6ccd30f4024f7a5b67f213565076",
  "parents": [
    "d31ce31a274ee721f4e9b54c6dcc2de0b3fd71e4"
  ],
  "author": {
    "name": "Todd Volkert",
    "email": "tvolkert@users.noreply.github.com",
    "time": "Mon May 20 17:40:03 2019 -0700"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Mon May 20 17:40:03 2019 -0700"
  },
  "message": "Add some sanity to the ImageStream listener API (#32936)\n\nThe current API was broken in that you registered multiple\r\ncallbacks at once, but when you removed listeners, only the\r\nprimary listener was used to determine what was removed.\r\nThis led to unintuitive cases where the caller could get\r\nunexpected behavior.\r\n\r\nThis updates the API to add and remove listeners using\r\na newly introduced [ImageStreamListener] object, a value\r\nobject that has references to the individual callbacks\r\nthat may fire.\r\n\r\nflutter/flutter#24722\r\nflutter/flutter#32374\r\nflutter/flutter#32935",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "ac4cb5d3736e0a720d31cc5849c9c83aff2ec363",
      "old_mode": 33188,
      "old_path": "dev/integration_tests/image_loading/lib/main.dart",
      "new_id": "982c89c5f7e8cc2e3071dce53450818ff067b219",
      "new_mode": 33188,
      "new_path": "dev/integration_tests/image_loading/lib/main.dart"
    },
    {
      "type": "modify",
      "old_id": "96a8b829ec2131c978db7fcd5e7b2fc2b7c59166",
      "old_mode": 33188,
      "old_path": "packages/flutter/lib/src/painting/decoration_image.dart",
      "new_id": "a4ba07269a1e7663d115e45e47cbd502d54422b1",
      "new_mode": 33188,
      "new_path": "packages/flutter/lib/src/painting/decoration_image.dart"
    },
    {
      "type": "modify",
      "old_id": "8beb77b7bd1b6dd874ba3a1b62123133ef55fb7a",
      "old_mode": 33188,
      "old_path": "packages/flutter/lib/src/painting/image_cache.dart",
      "new_id": "0a0b1a71800d2aad7ca24f9fee34b6b80c182809",
      "new_mode": 33188,
      "new_path": "packages/flutter/lib/src/painting/image_cache.dart"
    },
    {
      "type": "modify",
      "old_id": "984f19bd80ffcaed2b45c0260955bbfd00c36805",
      "old_mode": 33188,
      "old_path": "packages/flutter/lib/src/painting/image_provider.dart",
      "new_id": "b94df14d86ba891e257eb6025321dfab4346d155",
      "new_mode": 33188,
      "new_path": "packages/flutter/lib/src/painting/image_provider.dart"
    },
    {
      "type": "modify",
      "old_id": "af16e10d364436f49cc2a788ef1f614a008182f2",
      "old_mode": 33188,
      "old_path": "packages/flutter/lib/src/painting/image_stream.dart",
      "new_id": "d7c7d638a459b46de87dabc20aaa92178ad74670",
      "new_mode": 33188,
      "new_path": "packages/flutter/lib/src/painting/image_stream.dart"
    },
    {
      "type": "modify",
      "old_id": "dded9e44247ae6196af9cdb6a3d2631b32e8a5bf",
      "old_mode": 33188,
      "old_path": "packages/flutter/lib/src/widgets/fade_in_image.dart",
      "new_id": "336222f6259e3b049d68a3d8ef063314f93b151d",
      "new_mode": 33188,
      "new_path": "packages/flutter/lib/src/widgets/fade_in_image.dart"
    },
    {
      "type": "modify",
      "old_id": "c272aff3cea27e1126f0da850d99fcba580d6ba9",
      "old_mode": 33188,
      "old_path": "packages/flutter/lib/src/widgets/image.dart",
      "new_id": "cabef87f02ea66f5ff4cba36ba0a166e401a53b5",
      "new_mode": 33188,
      "new_path": "packages/flutter/lib/src/widgets/image.dart"
    },
    {
      "type": "modify",
      "old_id": "a3ec625a3635511ea5b7537ee6c7c786d7db668f",
      "old_mode": 33188,
      "old_path": "packages/flutter/test/painting/image_cache_test.dart",
      "new_id": "0b5b33cb7612205530d6b2a338ac221ee15ee39d",
      "new_mode": 33188,
      "new_path": "packages/flutter/test/painting/image_cache_test.dart"
    },
    {
      "type": "modify",
      "old_id": "1ba866e36a96aebbe6bd3286b4d33afec8df6ac9",
      "old_mode": 33188,
      "old_path": "packages/flutter/test/painting/image_provider_test.dart",
      "new_id": "dd5449cc429b21e4a9c11ad5c87d652f99a5717a",
      "new_mode": 33188,
      "new_path": "packages/flutter/test/painting/image_provider_test.dart"
    },
    {
      "type": "modify",
      "old_id": "d6c0341f149630e10932fe15590c29c06e925315",
      "old_mode": 33188,
      "old_path": "packages/flutter/test/painting/image_stream_test.dart",
      "new_id": "a6985f1b08baba5f30639288ab96415c1c9c6b6f",
      "new_mode": 33188,
      "new_path": "packages/flutter/test/painting/image_stream_test.dart"
    },
    {
      "type": "modify",
      "old_id": "dfc7e994655c3d81ce2c63b3068beaed0f65ce23",
      "old_mode": 33188,
      "old_path": "packages/flutter/test/painting/mocks_for_image_cache.dart",
      "new_id": "0c4814910833d4c555ec14851626b94ab61d7281",
      "new_mode": 33188,
      "new_path": "packages/flutter/test/painting/mocks_for_image_cache.dart"
    },
    {
      "type": "modify",
      "old_id": "91251192952290dea1d7f2e7713b901ca6290624",
      "old_mode": 33188,
      "old_path": "packages/flutter/test/widgets/image_test.dart",
      "new_id": "7bfb14c0d0ac6db900c04ce25c1799c6f742bd6e",
      "new_mode": 33188,
      "new_path": "packages/flutter/test/widgets/image_test.dart"
    }
  ]
}
