1. 22 Nov, 2015 1 commit
    • Hixie's avatar
      Clean up the term "modal" in the navigator · c51260ac
      Hixie authored
      Now we only use it for things related to ModalRoute and ModalBarrier.
      
      (This is easy now that ephemeral routes are gone, so there's no other
      kind of route to distinguish against.)
      c51260ac
  2. 20 Nov, 2015 3 commits
    • Hixie's avatar
      Route refactor · 6e371875
      Hixie authored
      - Removed the concept of ephemeral routes.
      - Renamed the two _MenuRoutes to _PopupMenuRoute and _DropDownRoute.
      - Added type arguments in various places:
        - DropDownMenu
        - _DropDownRoute
        - _ModalBottomSheetRoute
        - PopupMenuItem
        - _PopupMenu
        - _PopupMenuRoute
      - Made _ModalBottomSheetRoute, the two ex _MenuRoutes, and _DialogRoute
        all inherit from ModalRoute, via PopupRoute.
      - Change "Dropdown" and "DropDown" to "DropDown" consistently.
      - Made MaterialPageRoute inherit from PageRoute.
      - Made ModalBarrier not create a box if it's always transparent.
      - Exposed the Futures on TransitionRoutes.
      - Fixed that menus were no longer dismissable by tapping the modal
        barrier.
      6e371875
    • Hixie's avatar
      Give type arguments to routes. · 13f3a9be
      Hixie authored
      These end up not actually being used, currently, because we don't have
      generic methods, which you'd need for showDialog() and friends, and we
      don't have any way to parameterise a class type at runtime, which you'd
      need for MaterialApp routes, but it's a step in the right direction.
      13f3a9be
    • Hixie's avatar
      Convert Persistent Bottom Sheets to a Scaffold API · 03e094aa
      Hixie authored
      - `Scaffold.of(context).showBottomSheet(widget);`
      - Returns an object with .closed Future and .close() method.
      - Uses a StateRoute to handle back button.
      - Take the Navigator logic out of the BottomSheet widget.
      - Support showing a sheet while an old one is going away.
      - Add Navigator.remove().
      03e094aa
  3. 19 Nov, 2015 1 commit
    • Hixie's avatar
      Snackbar Refactor · 954713ab
      Hixie authored
      "showSnackBar()" is now a feature of a Scaffold. To get to a Scaffold
      you either use a global key (`scaffoldKey.currentState.showSnackBar(...)`),
      or you use `Scaffold.of(context)`.
      
      Snack bars no longer have a route. They are entirely managed by the
      Scaffold. Fixes #432.
      
      Snack bars now queue up when you have several of them. Fixes #374.
      
      Snack bars now auto-size themselves around their contents. This is step
      one towards implementing multiline snack bars.
      
      Snack bars now self-dismiss after some per-snackbar configurable period.
      
      The self-dismissing pauses while a dialog is up above the snackbar (or
      anything that uses ModalRoute). To enable this, there's now a
      `ModalRoute.of(context)` API that returns the current ModalRoute, and
      you will be rebuilt if you asked for this and the route's "current"
      status changes. To implement this, the Navigator now rebuilds
      unconditionally any time it pushes or pops a route.
      
      Snack bars now use the curves that Android uses for snack bars.
      
      Snack bar contents now fade in.
      954713ab
  4. 18 Nov, 2015 1 commit
    • Hixie's avatar
      Pave the Foo.of() cowpath. · 65d81451
      Hixie authored
      I'm planning on adding more .of() functions and so to avoid further
      copypasta I'm providing some general utility functions here.
      65d81451
  5. 17 Nov, 2015 1 commit
  6. 16 Nov, 2015 1 commit
    • Hixie's avatar
      Move Material page animations to Material layer. · 309d25d4
      Hixie authored
      PageRoute is now MaterialPageRoute.
      
      This also changes the following:
      
      - Now the HeroController is a Navigator observer, rather than a feature
        of HeroPageRoutes, which are gone. This means heroes can work between
        any kind of ModalRoute now.
      
      - ModalPageRoute is moved from modal_barrier.dart to routes.dart.
      
      - It allows routes to opt-out of their modal barrier being a shortcut to
        popping the route.
      
      - Features of PageRoute that aren't Material-specific get promoted to
        ModalRoute features: storage, the subtree key, offstageness...
      
      The AnimatedModalBarrier is still a ModalRoute feature.
      309d25d4
  7. 06 Nov, 2015 2 commits
  8. 05 Nov, 2015 1 commit
    • Hixie's avatar
      Better asserts for MaterialApp and Navigator · 88314077
      Hixie authored
      - runApp(new MaterialApp()) was crashing long after the constructor. Now
        it asserts in a more useful location.
      - remove the default name for NamedRouteSettings. It was unused anyway.
      88314077
  9. 30 Oct, 2015 1 commit
  10. 27 Oct, 2015 1 commit
    • Ian Hickson's avatar
      Track scroll position · 8a900f90
      Ian Hickson authored
      - Change RouteArguments to pass the route's BuildContext rather than
        the Navigator. This caused the bulk of the examples/ and .../test/
        changes (those are mostly mechanical changes). It also meant I could
        simplify Navigator.of().
      
      - Make initState() actually get called when the State's Element is in
        the tree, so you can use Foo.of() functions there. Added a test for
        this also.
      
      - Provide a RouteWidget so that routes have a position in the Widget
        tree. The bulk of the route logic is still in a longer-lived Route
        object for now.
      
      - Make Route.setState() only rebuild the actual route, not the whole
        navigator.
      
      - Provided a Route.of().
      
      - Provided a Route.writeState / Route.readState API that tries to
        identify the clients by their runtimeType, their key, and their
        ancestors keys, up to the nearest ancestor with a GlobalKey.
      
      - Made scrollables hook into this API to track state. Added a test to
        make sure this works.
      
      - Fix the debug output of GestureDetector and the hashCode of
        MixedViewport.
      
      - Fixed ScrollableWidgetListState<T> to handle infinite lists.
      8a900f90
  11. 22 Oct, 2015 1 commit
    • Adam Barth's avatar
      Add Navigator.of · de395582
      Adam Barth authored
      Now you don't need to pass the navigator around everywhere.
      de395582
  12. 21 Oct, 2015 3 commits
    • Hixie's avatar
      Heroes · fa8c4515
      Hixie authored
      fa8c4515
    • Hixie's avatar
      Debug grid over the navigator stack · 4ab07201
      Hixie authored
      This grid makes it significantly easier to track down errors when you're
      looking at coordinates in a render tree dump and want to see if they're
      what you expect or if they're wildly away from the right location.
      4ab07201
    • Hixie's avatar
      Make Route.build() arguments match RouteBuilder() · babba2f0
      Hixie authored
      Assert at build time that PageRoute route builders do not return null
      widget trees.
      
      Also very minor new code comments and code reorg to help make the heroes
      patch easier to review.
      
      (These are changes that are unrelated to Heroes but that were part of
      the Heroes patch.)
      babba2f0
  13. 20 Oct, 2015 2 commits
  14. 10 Oct, 2015 1 commit
  15. 09 Oct, 2015 2 commits
  16. 08 Oct, 2015 2 commits
  17. 07 Oct, 2015 2 commits
    • Hixie's avatar
      HomogeneousViewport support for Theme.of() · d45bf145
      Hixie authored
      Previously, RenderObjectElements didn't support being marked dirty. This
      is fine, except for MixedViewport and HomogeneousViewport, which have
      builder functions to which they hand themselves as a BuildContext. If
      those builder functions call, e.g., Theme.of(), then when the theme
      changes, the Inherited logic tries to tell the RenderObjectElement
      object that its dependencies changed and that doesn't go down well.
      
      This patch fixes this by making RenderObjectElement a BuildableElement,
      and making MixedViewport and HomogeneousViewport hook into that to
      rebuild themselves appropriately.
      
      Also, this was only found at all because ThemeData didn't implement
      operator==, so we were aggressively marking the entire tree dirty all
      the time. That's fixed here too.
      
      Also, I changed card_collection.dart to have more features to make this
      easier to test. This found bugs #1524, #1522, #1528, #1529, #1530, #1531.
      d45bf145
    • Adam Barth's avatar
      Separate Route and PerformanceRoute · 30d16e24
      Adam Barth authored
      This patch prepares us to create routes that control their performances more
      closely.
      30d16e24
  18. 06 Oct, 2015 3 commits
  19. 05 Oct, 2015 3 commits
    • Hixie's avatar
      Simplify the usage of Navigator's routes argument · 90a0f630
      Hixie authored
      (These are changes cherry-picked from in-flight branches since they are
      more independent and could be helpful even without those changes.)
      
      - Change RouteBuilder's signature to take a single argument in which the
        other fields are placed, so that we can keep iterating on those
        arguments without having to break compatibility each time. Also, this
        makes defining route builders much simpler (only one argument to
        ignore rather than a variable number).
      
      - Expose the next performance to RouteBuilders, since sometimes the
        route itself might not be where it's used.
      
      - Allow BuildContext to be used to walk children, just like it can for
        ancestors
      
      - Allow BuildContext to be used to get the Widget of the current
        BuildContext
      
      - Allow StatefulComponentElement to be referenced with a type
        specialisation so that you don't have to cast when you know what the
        type you're dealing with actually is.
      90a0f630
    • Hixie's avatar
      Handle a route being dismissed before being popped · 290ed842
      Hixie authored
      Ensure that if a route's performance is dismissed before the route is
      popped, that we pop the route.
      290ed842
    • Adam Barth's avatar
      Improves names of animation classes · 3f82552d
      Adam Barth authored
      Fixes #1170
      3f82552d
  20. 01 Oct, 2015 3 commits
    • Hixie's avatar
      Heroes: Pass next Performance to route builders · 8cce992f
      Hixie authored
      This is step 1 in making it possible to have hero transitions between
      routes. To make it possible for a route to have an "exit" animation when
      a new route has been pushed on top of it, we provide the next route's
      AnimationPerformance to the build function. It's null if there is no
      next route or if the next route has no performance.
      8cce992f
    • Hixie's avatar
      Rename RouteState to StateRoute · 927edaac
      Hixie authored
      ...for consistency with the other Route subclasses:
      ```
        dialog.dart:      class DialogRoute extends Route
        drag_target.dart: class DragRoute extends Route
        navigator.dart:   class PageRoute extends Route
        navigator.dart:   class StateRoute extends Route
        popup_menu.dart:  class MenuRoute extends Route
      ```
      927edaac
    • Adam Barth's avatar
      Make fn3 the default widget framework · 45c906d2
      Adam Barth authored
      45c906d2
  21. 21 Sep, 2015 1 commit
    • Adam Barth's avatar
      Remove EventDisposition · 051354ae
      Adam Barth authored
      All the use cases for EventDisposition are now addressed by the gesture
      detection system.
      051354ae
  22. 18 Sep, 2015 3 commits
    • Hixie's avatar
      Introduce a showPopupMenu() function · a3ae46b9
      Hixie authored
      Instead of having to manage the popup menu from your app's build
      function, you now just call showPopupMenu() with the menu's position and
      it takes care of everything for you.
      
      This solves the problem that the popup menu was trying to mutate the
      state of the navigator from within its own initState() function.
      
      Also, remove the "route" argument to RouteBase.build() since it equals
      "this" by definition...
      
      Also, remove ModalOverlay, and instead put that logic in the navigator.
      a3ae46b9
    • Hixie's avatar
      Allow route transitions to be more flexible · d4dd786b
      Hixie authored
      - Fix AnimationTiming to have defaults for 'interval' and 'curve' since
        that seems to be how we use it.
      
      - Merge RouteBase.build and RouteBase.buildTransition
      
      - Get rid of HistoryEntry, since it added nothing
      
      - Broke out RouteBase.createPerformance() so subclasses can change what
        is created.
      
      - Build the routes backwards so that we more efficiently avoid building
        hidden routes.
      
      - Introduce an explicit way (!hasContent) for RouteState to avoid
        building, rather than the implicit "build returns null" we had before.
      d4dd786b
    • Hixie's avatar
      Require that you pass transitions a performance. · e73bbd94
      Hixie authored
      This fixes #1103.
      e73bbd94
  23. 08 Sep, 2015 1 commit
    • Adam Barth's avatar
      Introduce package:sky/animation.dart · b356d146
      Adam Barth authored
      Move the animation libraries into src/animation and change importers to use
      package:sky/animation.dart. Also, move scheduler.dart into the animation
      library so that the animation library can be self-contained.
      b356d146