Other changes in this patch:
- Make the 'flutter' tool say "Updating flutter tool..." when it calls
pub get, to avoid confusion about what the pub get output is about.
- Make the bash flutter tool call pub get when the revision has
changed. (This was already happening on Windows.)
- Fix a raft of bugs found by the analyzer.
- Fix some style nits in various bits of code that happened to be near
things the analyzer noticed.
- Remove the logic in "flutter test" that would run "pub get", since
upon further reflexion it was determined it didn't work anyway.
We'll probably have to add better diagnostics here and say to run the
updater script.
- Remove the native velocity tracker script, since it was testing code
that has since been removed.
Notes on ignored warnings:
- We ignore warnings in any packages that are not in the Flutter repo or
in the author's current directory.
- We ignore various irrelevant Strong Mode warnings. We still enable
strong mode because even though it's not really relevant to our needs,
it does (more or less accidentally) catch a few things that are
helpful to us.
- We allow CONSTANTS_LIKE_THIS, since we get some of those from other
platforms that we are copying for sanity and consistency.
- We allow one-member abstract classes since we have a number of them
where it's perfectly reasonable.
- We unfortunately still ignore warnings in mojom.dart autogenerated
files. We should really fix those but that's a separate patch.
- We verify the actual source file when we see the 'Name non-constant
identifiers using lowerCamelCase.' lint, to allow one-letter variables
that use capital letters (e.g. for physics expressions) and to allow
multiple-underscore variable names.
- We ignore all errors on lines that contain the following magic
incantation and a "#" character:
// analyzer doesn't like constructor tear-offs
- For all remaining errors, if the line contains a comment of the form
// analyzer says "..."
...then we ignore any errors that have that "..." string in them.
Draggable is now itself a gesture arena member. This means it won't
conflict with other gesture recognisers in the same path.
This also allows variants of Draggable that are triggered by other
gestures.
Also, some cleanup of DoubleTapGestureRecognizer, GestureDetector, and
PrimaryPointerGestureRecognizer.
Also, make MultiTapGestureRecognizer support a timeout for longpress.
Also, make Draggable data be typed.
Also, hide warnings about constructor warnings for now. Analyzer doesn't
support them yet. (Have to do this on a per-line basis)
Directions for future research:
- animating the avatar (enter/exit transitions)
- interaction with the navigator (canceling a drag on page navigation, etc)
- double-tap draggable
This patch combines embedder.dart and shell.dart into one thing. We should now
handle a bunch of error cases better.
* embedder.connectToApplication has moved to shell.connectToApplication,
matching the rest of the mojo universe.
* embedder.connecttoService has moved to shell.connnectToService (and merged
with shell.requestService).
* shell.requestService is now shell.connectToService, matching the rest of
the mojo universe.
* serviceRegistry has moved from embedder.serviceRegistry to a top-level
getter.
Fixes#1803
MixedViewport didn't use the building:true flag when locking itself, so
when it caused a rebuild of its children, we assumed that nobody was
allowed to mark things dirty below the list, and things crashed when
Inherited people did in fact rebuild.
Also:
- default offset for MixedViewport
- don't bother rebuilding if the underlying RenderObject is going to
rebuild anyway for some reason
- better docs for the "items must have keys" assert
- keep the FlipComponent stuff together in test_widgets.dart
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
- 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.
Instread of an explicit 'enabled' bool, this uses the presence of the
event handler to determine if a widget is enabled or not. This means
that if you've not passed a handler, your widget will be disabled, which
makes sense, since it wouldn't work anyway.
Adds this feature to checkbox, and ports raised button, flat button, and
radio buttons to this new model.
Adds a checkbox to card_collection that can be disabled.
Hide a (basically bogus) hint from the (soon to be disabled) strong hint
mode in the analyzer that this reveals.
Also:
- give card_collection an option to turn on or off the edit widgets
- give card_collection an option to control text alignment (when not editing)
- give card_collection a "dump" option to aid debugging
- make the gesture detector report which gestures it is listening to
Make Radio widgets take a type that describes the type of their value,
so that you can catch when you use the wrong value.
Standardise on ValueChanged<Foo> instead of having a FooValueChanged
for every value of Foo.