)]}'
{
  "commit": "dd0acea1ec31630e1ca8624e593ff24703eb5307",
  "tree": "e312dbbc9d21939981a0d07c3507efce7304eb4d",
  "parents": [
    "600739d195d801ba7834cf9a1f82d5f891e36f97"
  ],
  "author": {
    "name": "David Shuckerow",
    "email": "DaveShuckerow@users.noreply.github.com",
    "time": "Thu Mar 15 17:04:24 2018 -0700"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Thu Mar 15 17:04:24 2018 -0700"
  },
  "message": "Add support for placing the FAB in different positions (#14368)\n\n* Add support to move the fab between positions.\r\n\r\n* Motion demo for the FAB works between center and end floating.\r\n\r\n* Add a Material curve to the offset animation.\r\n\r\n* Move the fab position into an object\r\n\r\n* Updates to docs\r\n\r\n* Updates to docs\r\n\r\n* Fix a lint on the bottom sheet type\r\n\r\n* Add a ScaffoldGeometry class\r\n\r\n* Improve the documentation\r\n\r\n* Improve the documentation\r\n\r\n* Add a fab motion animator\r\n\r\n* Add position and scale animations\r\n\r\n* FAB entrance and motion animations work\r\n\r\n* Get started on FAB motion\r\n\r\n* Make fab animation work properly.\r\n\r\n* Change the fab animator to be stored in the state of the scaffold.\r\n\r\n* Add a layout test\r\n\r\n* Fix spacing being off\r\n\r\n* Fix the entrance/exit animation test.\r\n\r\n* Add a textDirection to the layout delegate.\r\n\r\n* Fix const constructor lint checks\r\n\r\n* Add toStrings for the fab positioner/animator\r\n\r\n* Add a toString for CurveTween\r\n\r\n* Change the fab motion demo icon to a simple add icon.\r\n\r\n* Add tests and a custom fab positioner to the demo.\r\n\r\n* Do not start the fab\u0027s motion animation when the fab is null.\r\n\r\n* Adjust the code to pass the new tests.\r\n\r\n* Rename for in response to Hans\u0027 comment.\r\n\r\n* Revert the tabs fab demo\r\n\r\n* Use timeDilation, and clean up the animation code a little.\r\n\r\n* Clean up the prelayout geometry docs and ctr order\r\n\r\n* Cleanup fab transition widget code\r\n\r\n* Clean up comments on Scaffold, add cross-references between the two geometries\r\n\r\n* Explain the fab motion animation scheduling better\r\n\r\n* Add a const to the fab motion demo\r\n\r\n* Make the fab animation never jank by keeping track of where to move the fab to in the future.\r\n\r\n* Add a default fab positioner constant\r\n\r\n* Add space after comma in the demo\r\n\r\n* Add boilerplate dartdoc to all const constructors\r\n\r\n* Comment improvement\r\n\r\n* Rename \u0027fabSize\u0027 to \u0027floatingActionButtonSize\u0027\r\n\r\n* Rename \u0027fabSize\u0027 to \u0027floatingActionButtonSize\u0027\r\n\r\n* Rename \u0027fabSize\u0027 to \u0027floatingActionButtonSize\u0027\r\n\r\n* Clean up the prelayout geometry object\u0027s dartdoc\r\n\r\n* Clean up the prelayout geometry object\u0027s dartdoc\r\n\r\n* Remove extraneous comment\r\n\r\n* Change possessive uses of Scaffold\u0027s to use dartdoc-compatible [Scaffold]\u0027s\r\n\r\n* Rename the horizontalFabPadding to an expansion\r\n\r\n* Clean up controller cleanup and setState usage\r\n\r\n* Animate instead of lerp\r\n\r\n* Make the fab position animation use offsets instead of animations\r\n\r\n* Streamline the fab motion demo\r\n\r\n* Set up the animator to start from a reasonable place when interrupting animations.\r\n\r\n* Doc cleanup on the new animation interruption\r\n\r\n* Expand some uses of fab and clean up constants\r\n\r\n* Expand remaining public uses of fab to floating action button\r\n\r\n* Expand remaining public uses of fab to floating action button\r\n\r\n* Expand on the documentation for the fab positioner and animator\r\n\r\n* Refactor animations to broadcast the position properly.\r\n\r\n* Add the ability to turn on and off the fab to the motion demo.\r\n\r\n* Remove unused code\r\n\r\n* Change the fab animator to animate even when the fab is exitting.\r\n\r\n* Remove extra positioner.\r\n\r\n* Apps -\u003e Applications in docs\r\n\r\n* Explain the scale animation.\r\n\r\n* Name the child parameter in the animated builder\r\n\r\n* RTL before LTR\r\n\r\n* Wrap the AppBar in the example code\r\n\r\n* const the fab motion demo name\r\n\r\n* Start a test against animation jumps\r\n\r\n* Test for jumps in the fab motion animation\r\n\r\n* Dont initialize values to null\r\n\r\n* Use constants, fix spacing from some of Hans\u0027 comments\r\n\r\n* Clarify the relationship between fab positioners and prelayout geometries\r\n\r\n* Explain the fab animmator a bit better\r\n\r\n* Explain the animation progress in the fab animation\r\n\r\n* Explain the animation restart better\r\n\r\n* Explain the animation restart better\r\n\r\n* Explain the prelayout geometry better\r\n\r\n* Explain that height is a vertical distance.\r\n\r\n* Explain the horizontal fab padding\r\n\r\n* Update the scaffold size description to explain what happens when a wild keyboard appears\r\n\r\n* Remove print statements\r\n\r\n* Update the scaffold geometry with information about it being available at paint time.\r\n\r\n* In one step of a transition\r\n\r\n* Explain how the top-start fab positioner works\r\n\r\n* Explain how the top-start fab positioner works\r\n\r\n* Refactor the scaffold layout to just pass a padding instead of a bottom, top, start and end.\r\n\r\n* Refactor the scaffold layout to just pass a padding instead of a bottom, top, start and end.\r\n\r\n* Action buttons with with custom positioners.\r\n\r\n* Add a rotation animation example.\r\n\r\n* Use a swap animation to show swapping between two different animations.\r\n\r\n* Use a swap animation to show swapping between two different animations.\r\n\r\n* Add an example for the size animations.\r\n\r\n* 2018 copyright\r\n\r\n* Extra empty line\r\n\r\n* Return new Scaffold\r\n\r\n* Extra blank line fix\r\n\r\n* All its contents have been laid out\r\n\r\n* Position the fab\r\n\r\n* Explain what the scaffold geometry is for.\r\n\r\n* Move asserts to different lines\r\n\r\n* The scaffoldsize will not\r\n\r\n* Initial rename of FabPositioners to FloatingActionButtonLocation\r\n\r\n* Rename comments in example to refer to location instead of positioner.\r\n\r\n* Rename fabpositioner to location in tests and in the scaffold field\r\n\r\n* Finish removing references to positioner in scaffold code.\r\n\r\n* Split the fab location and animation out into a separate file.\r\n\r\n* Make things more private\r\n\r\n* Import foundation instead of meta\r\n\r\n* Const curve instead of final.\r\n",
  "tree_diff": [
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "5c92bc34e219b2fa0c2364cf09fca52bbe9fe8ff",
      "new_mode": 33188,
      "new_path": "examples/flutter_gallery/lib/demo/material/fab_motion_demo.dart"
    },
    {
      "type": "modify",
      "old_id": "975e5523ae8e950bc29bf0cfb0c04675d6e4e75d",
      "old_mode": 33188,
      "old_path": "examples/flutter_gallery/lib/demo/material/material.dart",
      "new_id": "ddf46e31a5a84d9f422daa1dc7fc6b7a72f790c1",
      "new_mode": 33188,
      "new_path": "examples/flutter_gallery/lib/demo/material/material.dart"
    },
    {
      "type": "modify",
      "old_id": "18bdea73c08ab482322bb6cea92e6504ec3fb476",
      "old_mode": 33188,
      "old_path": "examples/flutter_gallery/lib/gallery/item.dart",
      "new_id": "52373671fa9ae64ebdd6bf061406892b423fff9f",
      "new_mode": 33188,
      "new_path": "examples/flutter_gallery/lib/gallery/item.dart"
    },
    {
      "type": "modify",
      "old_id": "658e6941331cb04a3e1cfbe6c9555479f00558f6",
      "old_mode": 33188,
      "old_path": "packages/flutter/lib/material.dart",
      "new_id": "fe38f19ba39690820d59174f27f40b033a587ff5",
      "new_mode": 33188,
      "new_path": "packages/flutter/lib/material.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "7634f9fb50776d1341b8b841f95989b959490b53",
      "new_mode": 33188,
      "new_path": "packages/flutter/lib/src/material/floating_action_button_location.dart"
    },
    {
      "type": "modify",
      "old_id": "8aea5899bc70237b6acb12fa07194048d5ddb37d",
      "old_mode": 33188,
      "old_path": "packages/flutter/lib/src/material/scaffold.dart",
      "new_id": "c5036b3581132afcf6f7e42f63d2d4ba2a2d6019",
      "new_mode": 33188,
      "new_path": "packages/flutter/lib/src/material/scaffold.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a868a2c7cd2116a4d0ddbeedc648e0e4167b6744",
      "new_mode": 33188,
      "new_path": "packages/flutter/test/material/floating_action_button_location_test.dart"
    },
    {
      "type": "modify",
      "old_id": "72ea8f8ffba0edcc201bf5ac6eda2971cf29012c",
      "old_mode": 33188,
      "old_path": "packages/flutter/test/material/scaffold_test.dart",
      "new_id": "62af36b31ebda4b156f51e52c0cd4e61154b8f2b",
      "new_mode": 33188,
      "new_path": "packages/flutter/test/material/scaffold_test.dart"
    }
  ]
}
