Commit Graph

54 Commits

Author SHA1 Message Date
Adam Barth
fd51093146 Rename SliverPadding.child to SliverPadding.sliver (#8757)
The new name follows the pattern of the name suggesting which layout
protocol the parent expects the child to speak.

Fixes #8664
2017-03-14 14:07:13 -07:00
Chris Bracken
96eea437b2 Declare locals final where not reassigned (gallery) (#8571) 2017-03-03 17:51:21 -08:00
Alexandre Ardhuin
e9a775bf38 prefer const constructors (#8316) 2017-02-21 14:54:29 -08:00
Ian Hickson
6303a32d63 Pesto crash (#8238) 2017-02-16 20:44:33 -08:00
Adam Barth
464a8e7cde Formally deprecate Block and ScrollableViewport (#8166)
The replacements are ListView and SingleChildScrollView, respectively.
2017-02-14 21:03:55 -08:00
Ian Hickson
83a4cf269f Port AppBar to Scrollable2 (#7996)
Move the back button and drawer opening logic into the app bar.

Move the tap-status-bar-to-scroll-to-top logic to using
ScrollControllers. Provide a PrimaryScrollController and a `primary`
flag on scroll views.

Make it possible to track when a route becomes or stops being poppable.
2017-02-08 18:16:19 -08:00
Adam Barth
652e9c7aa3 Make kPestoRecipes a constant (#7886)
Someone on stack overflow was mutating the list of recipes and getting
confused about why the UI didn't redraw. Making kPestoRecipes a constant
might help avoid that confusion.
2017-02-04 09:33:56 -08:00
Hans Muller
ab0fdd7227 removed debugPrintFoo debris (#7067) 2016-11-29 09:26:34 -08:00
Hans Muller
1e90810566 Pesto favorite Recipe FAB should respond to taps within the app bar (#7059) 2016-11-29 09:02:20 -08:00
Adam Barth
8ca4caa440 Rename Flexible to Expanded and improve docs (#6978)
This patch replaces uses of Flexible with Expanded where we're using
FlexFit.tight. We still need to think of a better name for the
FlexFit.loose variant.

Also, improve the docs for Row, Column, Flex, and RenderFlex to be more
problem-oriented and to give a complete account of the layout algorithn.

Fixes #6960
Fixes #5169
2016-11-21 23:16:43 -08:00
Matt Perry
76844e25da Fix Bruschetta typo. (#6568) 2016-10-27 17:18:12 -04:00
Eric Seidel
cf3452fbac Revert "Fix Bruschetta typo" (#6565) 2016-10-27 22:46:53 +02:00
Eric Seidel
bf3d478f25 Fix Bruschetta typo (#6563)
Fixes https://github.com/flutter/flutter/issues/6561
2016-10-27 22:27:22 +02:00
Ian Hickson
729efa2501 Propagate platform through the subsidiary themes. (#6396)
Since we can change the theme's platform, we need to make sure we
propagate that throughout rather than having half the app use the native
platform and half the app use the selected platform.
2016-10-20 23:28:30 -04:00
Chris Bracken
b371788df1 Remove Pesto recipe card scaffold leading override (#6172)
The current implementation matches the default behaviour of the material
scaffold.
2016-10-03 10:21:42 -07:00
Matt Perry
f0d2f5c58a Micro tweak to Pesto logo. Text fades out a bit sooner. (#5983) 2016-09-21 15:28:13 -04:00
Dragoș Tiselice
7ad5ec40aa Changed Pesto logotype's position. (#5970)
* Changed Pesto logotype's position.

This commit changes Pesto's logotype position so that its curve
aligns with the curve of the image size.

* Added clamping to Pesto logo animation.
2016-09-21 10:58:49 -07:00
Matt Perry
278711d5b1 Add an appbar shadow to Pesto's recipe page. (#5954)
Fixes https://github.com/flutter/flutter/issues/5711
2016-09-20 17:57:09 -04:00
Dragoș Tiselice
f3813202a1 Removed Pesto logo's animation. (#5957)
Removed Pesto logo's triggered animation in order to remove the
observable 'hop' when scrolling. The whole curve is now entirely
scroll dependent. Fixes #5907.
2016-09-20 13:13:30 -07:00
Dragoș Tiselice
84a879e66d Renamed constant. (#5910)
Due to a synchronization issue, a PR was merged with a green build
that was supposed to be rebuilt and to fail. This commit fixes the
issue by renaming the usage of a constant.
2016-09-16 12:24:37 -07:00
Matt Perry
f0f99a45d9 Pesto logo now smoothly animates between image and image+text states. (#5890)
Fixes https://github.com/flutter/flutter/issues/5684
2016-09-16 13:31:54 -04:00
Hans Muller
f4904b1459 Refresh indicator overscroll (#5836)
* Added OverscrollIndicatorEdge et al

* RefreshIndicator only clamps its scrollable edge

* added a test

* Updated the test

* fixed lint-os

* fixed a typo

* Scrollable should restore its viewport dimensions when it reappears

* removed an accidental commit

* updated per review feedback
2016-09-14 10:44:51 -07:00
Dragoș Tiselice
cc3df14268 Removed Pesto's drawer. (#5722)
The drawer was confusing without adding much value. It was
especially confusing when wanting to go back to the Gallery on iOS.
Fixes #5713.
2016-09-09 13:19:03 -07:00
Matt Perry
b71d7694ab Prevent Hero transition for AppBar on Pesto recipe page. (#5760)
BUG=https://github.com/flutter/flutter/issues/5351
2016-09-08 16:40:11 -04:00
Dragoș Tiselice
3964aaad55 Added action to Pesto FAB. (#5687)
The floating action button inside of the Pesto demo now opens up
a snackbar. Fixes #5685.
2016-08-31 14:50:14 -07:00
Eric Seidel
2701c014de Add icons to pesto drawer (#5476)
Fixes https://github.com/flutter/flutter/issues/5462

@mpcomplete
2016-08-18 07:03:22 -07:00
Hans Muller
a010d6eb08 Rearrange the Pesto internals (#5466) 2016-08-17 15:30:57 -07:00
Hans Muller
96ec30b8af Fix Pesto appbar heroics (#5447) 2016-08-17 10:38:38 -07:00
Hans Muller
082730e94b Tapping status bar scrolls to top on IOS (#5425) 2016-08-16 12:30:39 -07:00
Hans Muller
eebe09d402 Set the ScrollConfiguration for dropdown menus (#5255) 2016-08-05 12:57:29 -07:00
Matt Perry
260cfcdb7b Pesto: Prevent overscrolling on recipe page. (#5237)
BUG=https://github.com/flutter/flutter/issues/5098
2016-08-05 13:37:27 -04:00
Adam Barth
628884a8a8 Make AppBar a Hero (#5214)
This patch improves the Post and Shrine transitions by making the AppBar
into a Hero and changing the default MaterialPageTransition. Now the
AppBar transitions smoothly between screens and the
MaterialPageTransition doesn't involve a fade effect.

Also, rejigger the bounds of the image header in Pesto to avoid the
"pop" at the end of the animation by laying out the image header at its
final visual size instead of relying on occlusion to size the image
header.

Fixes #5202
Fixes #5204
2016-08-04 13:05:18 -07:00
Jason Simmons
5c2623d977 Fix overflow of text on Pesto recipe cards (#5192) 2016-08-02 16:31:46 -07:00
Adam Barth
4086e7a3c3 Improve performance of Pesto hero animation (#5182)
Previously we were resizing a paragraph of text during the animation. Now we
animate the text and the image separately. Also, add a default hero tag for
FloatingActionButton so that it animates as part of the hero transition as
well.
2016-08-02 11:35:15 -07:00
Hans Muller
56a2d2262c Pesto home stack (#5168) 2016-08-01 15:09:50 -07:00
Adam Barth
c674b4a803 Rename Image.fromNetwork and Image.fromAssetBundle (#5149)
These now have sorter names to make the callers less verbose.
2016-07-29 13:28:08 -07:00
Adam Barth
79364f0a06 Add Container.align and Container.position (#5128)
These let you add Align widget to the inside or outside of a container.
Several customers have asked for these properties.

Fixes #4950
2016-07-29 10:27:11 -07:00
Adam Barth
534097ffb6 Use named Image constructors (#5129)
Some folks didn't realize these existed and asked us to add them. By
using them in examples, hopefully folks will discover them more easily.
2016-07-29 08:27:28 -07:00
Hans Muller
578d98ea46 Gallery demo tweaks (#5116) 2016-07-28 12:35:26 -07:00
Jason Simmons
3fe3e9a14f Make PestoDemoState.scaffoldKey non-static so Favorites can instantiate a second PestoDemo (#5005)
Fixes https://github.com/flutter/flutter/issues/4996
2016-07-22 12:41:41 -07:00
Dragoș Tiselice
6f0635d6e8 Merge pull request #4953 from flutter/drawer-header-update
Updated DrawerHeader to new spec.
2016-07-21 11:17:18 -07:00
Dragos Tiselice
65e77142e9 Updated DrawerHeader and added UserAccountDrawer.
Removed old Stack layout and added a simple-to-extend interface for the
new drawer header. Also added a specialized UserAccountsDrawerHeader
consistent with Material Design guidelines.
2016-07-20 16:16:08 -07:00
Matt Perry
0dacc5e150 Use a Scaffold for the Pesto recipe page for better appbar behavior. (#4951)
The appbar now scrolls off screen when you scroll the page far enough.

BUG=https://github.com/flutter/flutter/issues/4410
2016-07-19 15:36:24 -04:00
Adam Barth
2af668f832 Change how navigator prevents redundant operations (#4769)
* Change how navigator prevents redundant operations

Instead of requiring transactions, we now cancel all active pointers that are
interacting with the navigator and absorb future pointers until we get a chance
to build. This approach isn't perfect (e.g., events that trigger off the
cancelled pointers could still interact with the navigator), but it should be
better than the current transaction-based approach.

Fixes #4716

* Remove openTransaction

* test

* fixup
2016-06-27 13:07:47 -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
Matt Perry
02a4483914 Pesto: Fix app bar height when returning from recipe page. (#4579)
The problem was that the Scaffold was getting a new key each time we
navigated to the main page. The key influences where page state is
stored, including the scroll offset. So for a single frame, the Scaffold
incorrectly thinks the scroll offset is 0 and the app bar should be
expanded.

BUG=https://github.com/flutter/flutter/issues/4400
2016-06-16 17:24:06 -04: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
Hans Muller
5766cdacd3 Define LayoutWidgetBuilder in terms of BoxConstraints instead of Size (#4578) 2016-06-15 14:11:58 -07:00
Matt Perry
2315432d2f Pesto polish fixes. (#4514)
- Fix the background color and AppBar transparency on the Recipe page.
- Use a Hero animation for the recipe card.
- Draw the background image under the status bar on the recipe page.
- Added instructional text on favorites page when there are no favorites.

BUG=https://github.com/flutter/flutter/issues/4403
BUG=https://github.com/flutter/flutter/issues/4405
BUG=https://github.com/flutter/flutter/issues/4436
BUG=https://github.com/flutter/flutter/issues/4399
2016-06-10 16:33:50 -04:00
Matt Perry
479c7da9f1 Add a 'Return to Gallery' drawer option to Pesto. (#4472)
* Add a 'Return to Gallery' drawer option to Pesto.

BUG=https://github.com/flutter/flutter/issues/4402

* oops
2016-06-08 17:04:40 -04:00