- 17 Nov, 2015 1 commit
-
-
Hixie authored
Turns out we were assuming that once the global key is gone, our listener is unregistered. It isn't. I'm planning on adding a test as part of my nested navigator work.
-
- 27 Oct, 2015 1 commit
-
-
Ian Hickson authored
- Change RouteArguments to pass the route's BuildContext rather than the Navigator. This caused the bulk of the examples/ and .../test/ changes (those are mostly mechanical changes). It also meant I could simplify Navigator.of(). - Make initState() actually get called when the State's Element is in the tree, so you can use Foo.of() functions there. Added a test for this also. - Provide a RouteWidget so that routes have a position in the Widget tree. The bulk of the route logic is still in a longer-lived Route object for now. - Make Route.setState() only rebuild the actual route, not the whole navigator. - Provided a Route.of(). - Provided a Route.writeState / Route.readState API that tries to identify the clients by their runtimeType, their key, and their ancestors keys, up to the nearest ancestor with a GlobalKey. - Made scrollables hook into this API to track state. Added a test to make sure this works. - Fix the debug output of GestureDetector and the hashCode of MixedViewport. - Fixed ScrollableWidgetListState<T> to handle infinite lists.
-
- 18 Oct, 2015 1 commit
-
-
Hixie authored
- truncate pixel values to 1dp since there's really no point being told the Size is 302.98732587287 by 648.28498579187. - describe more Widgets so that debugDumpApp() is more useful. - remove bufferValue from ProgressIndicator (cc @hansmuller) since it's not yet implemented. - half-hearted toString() for ThemeData. There's no point making a complete one, since it would cause line-wrap even on big monitors in debugDumpApp dumps, and you can easily get the actual values from a debugging if that's the issue. - flesh out BoxConstraints.toString() so that fully unconstrained and fully infinite constraints are called out explicitly. I experimented with adding even more special cases, e.g. calling out unconstrained widths with fixed heights, etc, but it made the output less readable. - remove a redundant _updateVariable() in AnimatedContainer (cc @abarth). - add more information to RenderView.toString().
-
- 09 Oct, 2015 1 commit
-
-
Adam Barth authored
These are now part of material.dart.
-
- 05 Oct, 2015 1 commit
-
-
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().
-
- 01 Oct, 2015 1 commit
-
-
Adam Barth authored
-
- 17 Sep, 2015 1 commit
-
-
Hixie authored
We need a short name more often than a tree dump, so toString() should be the short name. Make debugDumpRenderTree() a global like debugDumpApp(), for consistency. It's hard to remember the SkyBinding.instance.dumpRenderTree() incantation. Fixes #1179.
-
- 02 Sep, 2015 1 commit
-
-
Adam Barth authored
Code outside of package:sky should import this code using package:sky/rendering.dart package:sky/widgets.dart Moving this code into the "src" directory is a convention that signifies that and it cleans up the generated dartdoc because the libraries in the src directory aren't included in the generated documentation. Instead, the classes are documented in the widgets.dart and rendering.dart libraries.
-
- 24 Aug, 2015 1 commit
-
-
Adam Barth authored
This lets clients listen for when a widget with a given global key goes through a sync operation. We'll need this for mimic to track its mimicable when it moves around the tree.
-
- 22 Aug, 2015 1 commit
-
-
Adam Barth authored
-
- 04 Aug, 2015 1 commit
-
-
Adam Barth authored
It was confusing to have both widget.dart and widgets.dart
-
- 28 Jul, 2015 2 commits
-
-
Chinmay Garde authored
-
Chinmay Garde authored
-
- 25 Jul, 2015 1 commit
-
-
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?).
-
- 23 Jul, 2015 3 commits
-
-
Hixie authored
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.
-
Hixie authored
-
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
-