2592 Commits

Author SHA1 Message Date
Hans Muller
c12c179a72 Make DataTable readable with the dark theme (#4717) 2016-06-23 10:59:07 -07:00
Ian Hickson
e5fb2fb0d3 An API for tracking software licenses. (#4711) 2016-06-23 10:34:11 -07:00
Phil Quitslund
55b51ee549 Merge pull request #4697 from pq/analyzer_0.27.4-alpha.14
Update to latest analyzer (0.27.4-alpha.14) and misc. analysis fixes.
2016-06-23 10:03:49 -07:00
Adam Barth
73cd70f776 Add test coverage for lastElapsedDuration (#4705)
Also, fix the bug where apps would assert when you change the time dilation.
Use that mechanism to fix the animation controller tests.
2016-06-22 17:14:55 -07:00
pq
b2fed16454 _BuildFunction => WidgetBuilder 2016-06-22 15:39:27 -07:00
pq
dcc7b144af Updated closure trampolines. 2016-06-22 15:25:25 -07:00
Hans Muller
bb2e7b5250 Add AppBar iconTheme parameter (#4693) 2016-06-22 15:19:31 -07:00
pq
352e2f573b Update to latest analyzer (0.27.4-alpha.14) and misc. analysis fixes.
* brings in analyzer version (`0.27.4-alpha.14`) corresponding to current Dart SDK (`1.18.0-dev.2.0`).
* updates analysis to use prefered API for embedder URI resolution
* adds trampolines to `State` and `StatelessWidget` to allow for warning-free within-library @protected access (needed since we closed off access to @protected closures from outside subclasses).
* turns off cache dependency tracking for analysis (in DDC this amounted to a 10% speed improvement).
2016-06-22 14:34:30 -07:00
Ian Hickson
cd89e867ef About box API (#4677)
This API is the front-end part of the work on showing licenses.

Future patches will:

* Provide an API for registering what licenses should be shown here,
  which will be used by this feature to shown licenses but could also be
  used by custom code for showing licenses (e.g. for people not using
  the Material widgets).

* Actually populate this license API from all the licenses we currently
  use in the engine, in the framework, and from any pub packages that
  are used (directly or indirectly) by the application.
2016-06-22 10:42:02 -07:00
Adam Barth
bf740cf46b Restore SystemChrome.setEnabledSystemUIOverlays (#4680)
I erroneously removed this function in an earlier patch. Also, export
SystemUiOverlayStyle because we expose that enum in the SystemChrome
API.
2016-06-22 16:45:47 +02:00
Adam Barth
a8f6f44a55 Update engine to include new version of Mojo (#4668)
This required switching from the Future-based bindings to the callback-based
bindings.
2016-06-21 15:53:47 -07:00
Hans Muller
b81229b5f1 DropdownButton layout (#4582) 2016-06-21 15:20:35 -07:00
Hans Muller
0e38cba95f Make the limit that defines Row/Column free space configurable (#4646) 2016-06-21 14:29:22 -07:00
Adam Barth
97c1f0b7b2 Route.didMount should throw a useful error message (#4665)
The error code path wasn't actually getting the point where it would throw the
useful error message. Also, fix error recovery when runApp fails.

Fixes #4655
2016-06-21 14:10:13 -07:00
Todd Volkert
2e48c1a1bb Simplify SystemChrome.setSystemUIOverlayStyle() (#4653)
* Only schedule overlay style update microtask if needed

* Simplify API
2016-06-21 08:28:29 -07:00
Ian Hickson
e502e9c8f8 ImageIcon (#4649)
Anywhere that accepted IconData now accepts either an Icon or an
ImageIcon.

Places that used to take an IconData in an `icon` argument, notably
IconButton and DrawerItem, now take a Widget in that slot. You can wrap
the value that used to be passed in in an Icon constructor to get the
same result.

Icon itself now takes the icon as a positional argument, for brevity.

ThemeData now has an iconTheme as well as a primaryIconTheme, the same
way it has had a textTheme and primaryTextTheme for a while.

IconTheme.of() always returns a value now (though that value itself may
have nulls in it). It defaults to the ThemeData.iconTheme.

IconThemeData.fallback() is a new method that returns an icon theme data
structure with all fields filled in.

IconTheme.merge() is a new constructor that takes a context and creates
a widget that mixes in the new values with the inherited values.

Most places that introduced an IconTheme widget now use IconTheme.merge.

IconThemeData.merge and IconThemeData.copyWith act in a way analogous to
the similarly-named members of TextStyle.

ImageIcon is introduced. It acts like Icon but takes an ImageProvider
instead of an IconData.

Also: Fix the analyzer to actually check the stocks app.
2016-06-20 21:04:45 -07:00
Adam Barth
e071f0bafd Nesting MaterialApps should not assert (#4636)
Turns out we weren't managing focus correct between navigator routes because we
were missing a Focus widget above the routes. However, adding this widget
caused us to explode at startup because the initial route was trying to move
focus during the build phase.

This patch teaches Focus to have an initiallyFocusedScope, which can be use to
initialize the child focus scope.

Fixes #4065
2016-06-20 17:01:34 -07:00
Adam Barth
b3780ebc16 Fix asserts in Draggable dismounting (#4644)
In writing a test for #1927, I found a number of bugs in how Draggable shuts
down. Previously it would leak its recongizer. Now it disposes its recognizer
and the recognizer knows how to be disposed cleanly.

Fixes #1927
2016-06-20 15:58:20 -07:00
Ian Hickson
cff31a3f6d IconThemeData.size (#4633) 2016-06-20 14:21:28 -07:00
Todd Volkert
5809a0cb71 Move Brightness back to the material library (#4635) 2016-06-20 13:16:03 -07:00
Hans Muller
c707b53f01 AppBar bottom widget, not necessarily a TabBar (#4631) 2016-06-20 12:45:20 -07:00
Todd Volkert
ef6a4faa8d System chrome overlay style fixes (#4627)
* System chrome overlay style fixes

1) Add a cache to avoid superfluous calls to the embedder
2) Coalesce calls to the embedder that are made in the same event loop
3) Move call site to material's AppBar from Title widget

#4461
2016-06-20 11:53:19 -07:00
Ian Hickson
833b121664 Fix Switch (#4622)
I broke them when refactoring images. Oops.
2016-06-17 15:36:53 -07:00
Ali Ghassemi
94c4222f2b Few overscroll glow fixes. (#4610)
Fixes #4169 and also now overscroll indicator is dismissed the moment
user scrolls in the opposite direction (#4603) but the bounce overscroll
that happens behind the scene and is clamped in the indicator is still
problematic and needs to be fixed. However these fixes are orthogonal to that.

Also closes #4127 as I verified the timeout feature (reduced the duration
to 500ms to be closer to Android behaviour)
2016-06-17 14:44:00 -07:00
Ian Hickson
3a88a973a3 Trivial but confusing typo in SynchronousFuture docs (#4599) 2016-06-17 10:42:57 -07:00
Ali Ghassemi
6befb6308a Updating Reference: FlutterBinding -> RendererBinding (#4602) 2016-06-16 16:12:58 -07:00
Hans Muller
6ba5674d12 AppBar size can be lost after a Navigator.pop() (#4594) 2016-06-16 15:33:23 -07:00
Ian Hickson
e9edf7a0af Update LayoutBuilder docs a bit (#4593) 2016-06-16 10:47:48 -07:00
Phil Quitslund
9fe7617184 Merge pull request #4588 from pq/1.18.0-dev.1.0_prep
Dead code, switch cleanup and `crypto` bump.
2016-06-16 10:01:34 -07:00
Ian Hickson
2dfdc840b1 Refactor everything to do with images (#4583)
Overview
========

This patch refactors images to achieve the following goals:

* it allows references to unresolved assets to be passed
  around (previously, almost every layer of the system had to know about
  whether an image came from an asset bundle or the network or
  elsewhere, and had to manually interact with the image cache).

* it allows decorations to use the same API for declaring images as the
  widget tree.

It requires some minor changes to call sites that use images, as
discussed below.

Widgets
-------

Change this:

```dart
      child: new AssetImage(
        name: 'my_asset.png',
        ...
      )
```

...to this:

```dart
      child: new Image(
        image: new AssetImage('my_asset.png'),
        ...
      )
```

Decorations
-----------

Change this:

```dart
      child: new DecoratedBox(
        decoration: new BoxDecoration(
          backgroundImage: new BackgroundImage(
            image: DefaultAssetBundle.of(context).loadImage('my_asset.png'),
            ...
          ),
          ...
        ),
        child: ...
      )
```

...to this:

```dart
      child: new DecoratedBox(
        decoration: new BoxDecoration(
          backgroundImage: new BackgroundImage(
            image: new AssetImage('my_asset.png'),
            ...
          ),
          ...
        ),
        child: ...
      )
```

DETAILED CHANGE LOG
===================

The following APIs have been replaced in this patch:

* The `AssetImage` and `NetworkImage` widgets have been split in two,
  with identically-named `ImageProvider` subclasses providing the
  image-loading logic, and a single `Image` widget providing all the
  widget tree logic.

* `ImageResource` is now `ImageStream`. Rather than configuring it with
  a `Future<ImageInfo>`, you complete it with an `ImageStreamCompleter`.

* `ImageCache.load` and `ImageCache.loadProvider` are replaced by
  `ImageCache.putIfAbsent`.

The following APIs have changed in this patch:

* `ImageCache` works in terms of arbitrary keys and caches
  `ImageStreamCompleter` objects using those keys. With the new model,
  you should never need to interact with the cache directly.

* `Decoration` can now be `const`. The state has moved to the
  `BoxPainter` class. Instead of a list of listeners, there's now just a
  single callback and a `dispose()` method on the painter. The callback
  is passed in to the `createBoxPainter()` method. When invoked, you
  should repaint the painter.

The following new APIs are introduced:

* `AssetBundle.loadStructuredData`.

* `SynchronousFuture`, a variant of `Future` that calls the `then`
  callback synchronously. This enables the asynchronous and
  synchronous (in-the-cache) code paths to look identical yet for the
  latter to avoid returning to the event loop mid-paint.

* `ExactAssetImage`, a variant of `AssetImage` that doesn't do anything clever.

* `ImageConfiguration`, a class that describes parameters that configure
  the `AssetImage` resolver.

The following APIs are entirely removed by this patch:

* `AssetBundle.loadImage` is gone. Use an `AssetImage` instead.

* `AssetVendor` is gone. `AssetImage` handles everything `AssetVendor`
  used to handle.

* `RawImageResource` and `AsyncImage` are gone.

The following code-level changes are performed:

* `Image`, which replaces `AsyncImage`, `NetworkImage`, `AssetImage`,
  and `RawResourceImage`, lives in `image.dart`.

* `DecoratedBox` and `Container` live in their own file now,
  `container.dart` (they reference `image.dart`).

DIRECTIONS FOR FUTURE RESEARCH
==============================

* The `ImageConfiguration` fields are mostly aspirational. Right now
  only `devicePixelRatio` and `bundle` are implemented. `locale` isn't
  even plumbed through, it will require work on the localisation logic.

* We should go through and make `BoxDecoration`, `AssetImage`, and
  `NetworkImage` objects `const` where possible.

* This patch makes supporting animated GIFs much easier.

* This patch makes it possible to create an abstract concept of an
  "Icon" that could be either an image or a font-based glyph (using
  `IconData` or similar). (see
  https://github.com/flutter/flutter/issues/4494)

RELATED ISSUES
==============

Fixes https://github.com/flutter/flutter/issues/4500
Fixes https://github.com/flutter/flutter/issues/4495
Obsoletes https://github.com/flutter/flutter/issues/4496
2016-06-16 09:49:48 -07:00
pq
3e9067a4ec Dead code and switch cleanup (continued).
Prep to get us ready to pull in a new dev SDK and bump our analyzer DEP.

* updates `crypto` (required by fresh analyzer)
* fixes newly flagged dead code warnings
* fixes switches that fall through and don't return
2016-06-16 09:45:37 -07:00
Hans Muller
5766cdacd3 Define LayoutWidgetBuilder in terms of BoxConstraints instead of Size (#4578) 2016-06-15 14:11:58 -07:00
Ali Ghassemi
fc2dbdeeb7 Remove unused consts in floating action button code (#4574) 2016-06-15 10:22:25 -07:00
Ali Ghassemi
e2299fdbc4 Remove unused consts in floating action button code.
FAB segue animation is done in scaffold and the consts are there.
2016-06-15 09:40:06 -07:00
Eric Seidel
3ee2f6f727 Fix the switch to match the Material Design spec.
Our track and head were slightly off in size.
These now exactly match the sizes in
https://material.google.com/components/selection-controls.html#selection-controls-switch
We took the liberty of assuming the head overlaps the edge
of the track by 2 pixels (instead of the head and the track ending at the same point)
which the provided designs were conflicted about.

Huge thanks to @DaveShuckerow for noticing this issue!

@abarth
2016-06-15 09:11:27 -07:00
pq
d3b4186744 Review nits. 2016-06-14 15:32:42 -07:00
pq
f5a4e63237 Added asserts. 2016-06-14 15:19:14 -07:00
pq
7a95548746 Add missing returns.
As of `1.18.0-dev-0`, these cases will get flagged.  In the meantime, the
2016-06-14 12:13:56 -07:00
Adam Barth
d8c52527cc Two minor improvements (#4554)
Add `@required` for some required parameters in `RRect`. Use elvis
operator to simplify a function.
2016-06-14 09:33:41 -07:00
Adam Barth
d2e3493a6c Add an example to MediaQuery docs. (#4532)
Fixes #4511
2016-06-13 11:36:52 -07:00
Adam Barth
053df166c4 AnimationController.fling should respect upper and lower bounds (#4533)
Instead of flinging to between 0.0 and 1.0, we should adapt the default
spring to the controller's upper and lower bounds.

Fixes #3545
2016-06-13 11:32:13 -07:00
Adam Barth
1a3adae101 Use @required for onPressed and onChanged (#4534)
We now use the `@required` annotation to encourage developers to
explicitly set onPressed and onChanged callbacks to null when that would
disable the widget.

Fixes #287
2016-06-12 13:25:06 -07:00
Adam Barth
0b6df634af Polish HostMessages (#4515)
Cleans up a few style nits in hello_services and adds support for automatic
JSON encoding and decoding to the HostMessages interface.
2016-06-10 15:04:01 -07:00
Adam Barth
696f4710f1 Improve hitTestSelf and hitTestChildren docs (#4484)
Fixes #4427
2016-06-09 10:10:13 -07:00
Adam Barth
2be1eb480f DropDownMenu should animation away when interrupted (#4485)
If you tap outside the drop down menu while its animating in, we should
animate it away smoothly. Previously, we jumped to the reverseCurve,
which made the menu disappear immediately. Now we hold the animations as
state, which means we keep their _curveDirection property and don't
switch curves unless the animation actually finishes.

Also, fix a subtle bug in CurvedAnimation whereby we'd never set the
_curveDirection if we didn't see a status change in the parent
animation. Now we initialize _curveDirection based on the current value
of the parent's status.

Fixes #4379
2016-06-09 10:09:07 -07:00
Adam Barth
4e3e40a174 Rename relayoutSubtreeRoot -> relayoutBoundary (#4483)
Fixes #4425
2016-06-09 08:44:48 -07:00
Adam Barth
e190327fdc HitTestResult.path should be unmodifiable (#4482)
Fixes #4428
2016-06-09 00:11:46 -07:00
Ian Hickson
f75fd5c389 Header for PaginatedDataTable (#4468)
Also renames ButtonTheme.footer to ButtonTheme.bar.
2016-06-08 17:29:26 -07:00
Ian Hickson
007d0a2f39 Cache intrinsic dimensions (#4446)
Also, make sure that the parent is notified when they change.

Fixes #2298
2016-06-07 22:07:12 -07:00
Todd Volkert
6c896dcc70 Remove TODO (#4448)
It's TODONE
2016-06-07 21:34:50 -07:00