1. 27 Feb, 2020 1 commit
    • Greg Spencer's avatar
      Change Focus.unfocus to take a disposition for where the focus… (#50831) · d4226566
      Greg Spencer authored
      When Focus.unfocus is called, the caller usually just thinks about wanting to remove focus from the node, but really, unfocus is a request to automatically pass the focus to another (hopefully useful) node.
      
      This PR removes the focusPrevious flag from unfocus, and replaces it with a disposition enum that indicates where the focus should go from here.
      
      The other value of the UnfocusDisposition enum is UnfocusDisposition.scope.
      
      UnfocusDisposition.previouslyFocusedChild is closest to what focusPrevious used to do: focus the nearest enclosing scope and use its focusedChild field to walk down the tree, finding the leaf focusedChild. This PR modifies it slightly so that it walks up to the nearest focusable enclosing scope before trying to focus the children. This change addresses #48903
      
      A new mode: UnfocusDisposition.scope will focus the nearest focusable enclosing scope of this node without trying to use the FocusScopeNode.focusedChild value to descend to the leaf focused child. This is useful as a default for both text field finalization and for what happens when canRequestFocus is set to false. It allows the scope to stay focused so that nextFocus/previousFocus still work as expected, but removes the focus from primary focus.
      
      In addition to those changes, unfocus called on a FocuScope that wasn't the primary focus used to unfocus the primary focus instead. I removed that behavior, since it was buggy: if the primary focus was inside of a child scope, and you called unfocus on the parent scope, then the child scope could have focused another of its children instead, leaving the scope that you called unfocus on with hasFocus returning true still. If you want to remove the focus from the primary focus instead of the scope, that's easy enough to do: just call primaryFocus.unfocus().
      
      Fixes #48903
      d4226566
  2. 05 Feb, 2020 1 commit
  3. 30 Jan, 2020 1 commit
    • chunhtai's avatar
      Fix focus when popping pages (#49714) · 406d8f7f
      chunhtai authored
      Fixes the focus handling when popping pages so that when multiple pages are popped, the focus doesn't try to focus the interstitial pages.
      406d8f7f
  4. 29 Jan, 2020 1 commit
  5. 27 Jan, 2020 1 commit
  6. 17 Jan, 2020 1 commit
  7. 16 Jan, 2020 2 commits
  8. 10 Jan, 2020 1 commit
  9. 09 Jan, 2020 1 commit
  10. 07 Jan, 2020 1 commit
  11. 16 Dec, 2019 1 commit
  12. 27 Nov, 2019 1 commit
    • Ian Hickson's avatar
      License update (#45373) · 449f4a66
      Ian Hickson authored
      * Update project.pbxproj files to say Flutter rather than Chromium
      
      Also, the templates now have an empty organization so that we don't cause people to give their apps a Flutter copyright.
      
      * Update the copyright notice checker to require a standard notice on all files
      
      * Update copyrights on Dart files. (This was a mechanical commit.)
      
      * Fix weird license headers on Dart files that deviate from our conventions; relicense Shrine.
      
      Some were already marked "The Flutter Authors", not clear why. Their
      dates have been normalized. Some were missing the blank line after the
      license. Some were randomly different in trivial ways for no apparent
      reason (e.g. missing the trailing period).
      
      * Clean up the copyrights in non-Dart files. (Manual edits.)
      
      Also, make sure templates don't have copyrights.
      
      * Fix some more ORGANIZATIONNAMEs
      449f4a66
  13. 01 Nov, 2019 1 commit
  14. 17 Oct, 2019 1 commit
  15. 14 Oct, 2019 1 commit
    • Greg Spencer's avatar
      Fix route focusing and autofocus when reparenting focus nodes. (#42554) · e2c5fd6c
      Greg Spencer authored
      This fixes a problem with reparenting of focus nodes where it would remove the node from the scope's focused children when reparented, even if it was being reparented to another place under the same scope. This only occurred if the scope in question didn't have focus.
      
      This caused nodes to not get autofocused when they were a child of another node within the scope, and were reparented, and then the scope was given focus (as when a route is pushed).
      
      This keeps the node in the scope's child list where it was if the node is reparented under a parent within the same scope.
      
      - Added a test that tries to autofocus a TextField when the route is pushed and there is another 
        FocusNode above the text field. This was how this was first noticed: the autofocus got ignored in 
        this configuration.
      
      - Added a test to focus_manager_test that tests for the specific case of reparenting a node when 
        it's in the focused children of the scope.
      e2c5fd6c
  16. 04 Jun, 2019 1 commit
  17. 31 May, 2019 1 commit
  18. 01 Mar, 2019 1 commit
    • Alexandre Ardhuin's avatar
      Add missing trailing commas (#28673) · 387f8854
      Alexandre Ardhuin authored
      * add trailing commas on list/map/parameters
      
      * add trailing commas on Invocation with nb of arg>1
      
      * add commas for widget containing widgets
      
      * add trailing commas if instantiation contains trailing comma
      
      * revert bad change
      387f8854
  19. 30 Jan, 2019 1 commit
  20. 25 Oct, 2018 1 commit
  21. 23 Oct, 2018 2 commits
  22. 16 Oct, 2018 1 commit
  23. 12 Sep, 2018 1 commit
  24. 02 Aug, 2018 1 commit
  25. 27 Jul, 2018 1 commit
  26. 23 Jul, 2018 1 commit
  27. 16 Jul, 2018 2 commits
  28. 20 Jun, 2018 1 commit
  29. 19 Jun, 2018 1 commit
  30. 22 Mar, 2018 1 commit
    • Ian Hickson's avatar
      Clean up the existing Navigator API. (#15718) · aba0379d
      Ian Hickson authored
      This is not a grand refactor yet, it's just cleaning up what we have
      already, so that people who keep using this API (e.g. dialogs) have
      something coherent to deal with.
      
      The major changes are that Navigator and NavigatorState have the same
      API now, that most of the examples use `<void>` instead of `<Null>`,
      that the navigator observer can see replaces, and that the `settings`
      is moved from ModalRoute to Route. I also cleaned up some of the API
      documentation.
      aba0379d
  31. 01 Feb, 2018 1 commit
  32. 05 Jan, 2018 1 commit
  33. 19 Oct, 2017 1 commit
  34. 08 Sep, 2017 1 commit
  35. 15 Jul, 2017 1 commit
  36. 23 Jun, 2017 1 commit
    • Ian Hickson's avatar
      Deep linking: automatically push the route hiearchy on load. (#10894) · 9adb4a78
      Ian Hickson authored
      The main purpose of this PR is to make it so that when you set the
      initial route and it's a hierarchical route (e.g. `/a/b/c`), it
      implies multiple pushes, one for each step of the route (so in that
      case, `/`, `/a`, `/a/b`, and `/a/b/c`, in that order). If any of those
      routes don't exist, it falls back to '/'.
      
      As part of doing that, I:
      
       * Changed the default for MaterialApp.initialRoute to honor the
         actual initial route.
      
       * Added a MaterialApp.onUnknownRoute for handling bad routes.
      
       * Added a feature to flutter_driver that allows the host test script
         and the device test app to communicate.
      
       * Added a test to make sure `flutter drive --route` works.
         (Hopefully that will also prove `flutter run --route` works, though
         this isn't testing the `flutter` tool's side of that. My main
         concern is over whether the engine side works.)
      
       * Fixed `flutter drive` to output the right target file name.
      
       * Changed how the stocks app represents its data, so that we can
         show a page for a stock before we know if it exists.
      
       * Made it possible to show a stock page that doesn't exist. It shows
         a progress indicator if we're loading the data, or else shows a
         message saying it doesn't exist.
      
       * Changed the pathing structure of routes in stocks to work more
         sanely.
      
       * Made search in the stocks app actually work (before it only worked
         if we happened to accidentally trigger a rebuild). Added a test.
      
       * Replaced some custom code in the stocks app with a BackButton.
      
       * Added a "color" feature to BackButton to support the stocks use case.
      
       * Spaced out the ErrorWidget text a bit more.
      
       * Added `RouteSettings.copyWith`, which I ended up not using.
      
       * Improved the error messages around routing.
      
      While I was in some files I made a few formatting fixes, fixed some
      code health issues, and also removed `flaky: true` from some devicelab
      tests that have been stable for a while. Also added some documentation
      here and there.
      9adb4a78
  37. 12 May, 2017 1 commit