1. 20 Nov, 2015 1 commit
  2. 01 Nov, 2015 1 commit
  3. 28 Oct, 2015 1 commit
    • Adam Barth's avatar
      Icon should use an enum rather than an int for size · eeea4ab7
      Adam Barth authored
      Material design icons are defined to work at specific sizes: 18, 24, 36, 48.
      The current API doesn't reflect that and just takes a size int. If an invalid
      size is chosen an error is printed to the console and no icon shows up.
      
      Fixes #1816
      eeea4ab7
  4. 24 Oct, 2015 1 commit
    • Hixie's avatar
      Strong modeify the examples · a6c473ea
      Hixie authored
      This makes skyanalyzer also check the examples, and fixes everything it
      found there.
      a6c473ea
  5. 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
  6. 19 Oct, 2015 1 commit
  7. 10 Oct, 2015 1 commit
  8. 09 Oct, 2015 2 commits
  9. 06 Oct, 2015 1 commit
    • Adam Barth's avatar
      Simplify Scaffold · 89a09822
      Adam Barth authored
      Rather than using a custom render object, we can just use a Stack.
      89a09822
  10. 05 Oct, 2015 2 commits
    • Hixie's avatar
      Fix Focus · fbf8174c
      Hixie authored
      Focus.at() and company should be on Focus, not FocusState.
      
      _notifyDescendants() was using the wrong runtimeType.
      
      Let InheritedWidget update the descendants during build.
      
      When you setState() during build, assert that you're not
      markNeedsBuild()ing someone who isn't a descendant.
      
      Typo in Widget.toString().
      fbf8174c
    • 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
  11. 03 Oct, 2015 1 commit
  12. 01 Oct, 2015 1 commit
  13. 26 Sep, 2015 1 commit
  14. 18 Sep, 2015 1 commit
    • Adam Barth's avatar
      Move theme into material.dart · 4467a268
      Adam Barth authored
      Also, introduce Colors and Typography to hold the material colors and the
      typography declarations. Previously we expected clients of these libraries to
      import them into a namespace, but that doesn't play nice with re-exporting them
      from material.dart.
      4467a268
  15. 07 Sep, 2015 1 commit
  16. 31 Aug, 2015 1 commit
  17. 26 Aug, 2015 1 commit
    • Hixie's avatar
      Replace Flex to Row and Column in tests and examples. · ce28a717
      Hixie authored
      This still leaves Flex and FlexDirection available. At some point once
      people have transitioned to Row/Column we should rename Flex to _Flex
      and stop reexporting FlexDirection from basic.dart.
      ce28a717
  18. 21 Aug, 2015 2 commits
  19. 08 Aug, 2015 1 commit
  20. 03 Aug, 2015 1 commit
  21. 30 Jul, 2015 1 commit
  22. 28 Jul, 2015 2 commits
  23. 25 Jul, 2015 2 commits
    • Hixie's avatar
      Scoped focus, so you can have a dialog with input controls and not lose your... · 60177a71
      Hixie authored
      Scoped focus, so you can have a dialog with input controls and not lose your focus in the background.
      
      This introduces a GlobalKey registry so that you can tell when a key
      has gone away (so you can unfocus dead dialogs).
      
      Also I added an assert that you're not calling setState() during a
      build. It turns out that doing so means you have a bug, because since
      you're dirty already (you're building), you won't get rebuilt.
      
      The focus code itself is gnarly. It uses a Component and an internal
      Inherited TagNode to manage the focus state, and does crazy things
      like updating its state during build to pretend retroactively that it
      was built with some other state, once someone asks for focus the first
      time (i.e. the first time it's examined, so you can't tell that it was
      in a different state before). It does this so that it can autofocus
      controls which otherwise wouldn't be focused.
      
      This moves all the focus management into Navigator and showDialog(),
      so the complexity is all buried deep and not visible to apps,
      hopefully.
      
      To do something like two tabs that each have an Input widget that
      needs to be focused when you switch panes, you'd need to have two
      Focus objects, one in each tab, and you need to set their autofocus to
      true (maybe that should be the default?).
      60177a71
    • Hixie's avatar
  24. 24 Jul, 2015 2 commits
    • Hixie's avatar
      Use the navigator to stack dialogs. · ac6342ab
      Hixie authored
      This removes the need to manually include the dialog builder in the main window's build() function.
      It also removes the need to track if a dialog is visible.
      
      Other changes:
      - I made dialog.dart a bit more readable.
      - I renamed transitionFinished to fullyOpaque since that's what actually matters.
      - I made Routes track if they're opaque. Eventually this should probably be more configurable when creating the route.
      
      Directions for Future Research:
      - Use this for focus management somehow.
      - The popup menu should use something like this.
      - We should factor the following out into a showDialog() function that returns a future for the dialog's exit result:
          navigator.push(new DialogRoute(builder: (navigator, route) { ... }));
      - Maybe navigator.pop() should take a value to return to that Future.
      ac6342ab
    • Jim Simon's avatar
      Converted examples to libraries · 3089686e
      Jim Simon authored
      Converted demo launcher example to library
      
      Converted fitness example to library
      
      Converted hello world example to library
      
      Converted mine digger example to library
      
      Converted stocks example to library
      3089686e
  25. 23 Jul, 2015 3 commits
    • Hixie's avatar
      2694d675
    • Hixie's avatar
      Rename defaultFocus to initialFocus. · 3aa0437f
      Hixie authored
      3aa0437f
    • Eric Seidel's avatar
      Focus support. · 4da27671
      Eric Seidel authored
      This patch provides a class to manage focus, Focus, and a class to
      manage ownership of the keyboard, KeyboardHandle.
      
      Inherited (in widgets.dart) is adjusted to support subclasses that
      need to copy state from instance to instance.
      
      A GlobalKey key type is introduced that is basically the same as
      UniqueKey. Component classes that need a globally-unique key can
      specify that their 'key' constructor argument is a GlobalKey.
      
      Focus
      -----
      
      You can use `Focus.at(this)` to determine if you, a Component, are
      currently focused.
      
      You can use `Focus.moveTo(this)` to take the focus or give it to a
      particular component.
      
      For this to work, there has to be a Focus class in the widget
      hierarchy.
      
      Currently, there can only be one Focus class, because nested scopes
      aren't supported. We should add support for that in a future patch.
      See issue #229.
      
      KeyboardHandle
      --------------
      
      Instead of directly interacting with the keyboard service, you now ask
      for a KeyboardHandle using `_keyboard.show(client)`. This returns a
      KeyboardHandle class. On that class, you can call `handle.release()`
      when you want to hide the keyboard. If `handle.attached` is still
      true, and you need to reshow the keyboard after the user hid it, then
      you can can `handle.showByRequest()`.
      
      The point of this is that the `keyboard.show()` method maintains the
      invariant that only one KeyboardHandle is live at a time.
      
      There are some issues with the keyboard service that I filed as a
      result of doing this patch: #226 #227
      4da27671
  26. 16 Jul, 2015 1 commit