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
The workbench package exists to pull in pub packages from both pub.dartlang.org
and from the source tree (using dependency overrides). The idea is that
workbench will reflect a typical Sky developer's environment so that we can use
the same tools as a typical sky developer by running them with the workbench as
the cwd.
This CL introduces a SkyShell.apk that is separate from the SkyDemo.apk that we
upload to the store to show our demos. The SkyShell.apk is just an empty shell
that can run Sky applications on Android.
I've noticed an anti-pattern emerge where people call scheduleBuild()
when they think they've changed enough state that they should rebuild,
instead of just wrapping their changes in setState(). This leads to
them missing state changes, having extraneous scheduleBuild() calls,
and other similar bugs.
By removing scheduleBuild(), the only way to actually schedule a build
now is to call setState(), and hopefully that'll make it much clearer
that you're only supposed to do this when you change state.
Assert that there are no duplicates.
Export GlobalKey from basic.dart, so that people don't have to import widgets.dart just for that.
Fix the "initialFocus" feature which actually didn't work.
This is supposed to make Viktor's game faster, but it's not clear
to me that it actually does. I've left the code
using the dart version of drawAtlas for now until Viktor can
verify that it looks correct.
I also added a wrapper for SkFilterQuality in the process of
debugging SkCanvas.drawAtlas since all drawAtlas examples
in Skia use FilterQuality.low. The bug which blocked me for
so long turned out to be that SkCanvas.drawAtlas doesn't
draw anything if antialiasing is turned on.
Issue #138.
R=abarth@google.com
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