• 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
Name
Last commit
Last update
..
animation Loading commit data...
assets Loading commit data...
base Loading commit data...
editing Loading commit data...
mojo Loading commit data...
painting Loading commit data...
rendering Loading commit data...
theme Loading commit data...
widgets Loading commit data...
README.md Loading commit data...
download_material_design_icons Loading commit data...
sky_tool Loading commit data...