mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
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?).
Sky Examples
This directory contains several examples of using Sky. Each of these is an
individual Dart application package. If you wish to run them with sky_tool
then you will want to run pub get inside their directory before running
./packages/sky/sky_tool start.
-
Hello, world. The hello world app is a basic app that shows the text "hello, world."
-
Stocks. The stocks app is an example of a typical mobile app built using Sky. The app shows a list of all the stocks in the NASDAQ.
-
Widgets. The widgets app contains a number of Sky widgets so you can experiment with them in a simple container.