Added ExpansionPanel and ExpansionPanelList. The implementation
is based on the Material design spec, without enforcing every
facet of it, leaving the developer using this the liberty to
enforced it lower down the widget tree. This decision was made
based on the argument that implementing more of the spec would
reduce flexibility to a point where some design would not be
implementable with this widget anymore.
Instead of a PNG, the Flutter gallery widget is now drawn in code.
There's now a FlutterLogoDecoration class that paints the flutter logo
anywhere you can use a Decoration (e.g. AnimatedContainer).
There's now a FlutterLogo class that honors the IconTheme.
The About dialog box API now takes a Widget for the applicationIcon,
instead of an ImageProvider. It uses IconTheme to make the icon the
right size instead of using an Image widget.
Add padding, duration, and curve properties to the DrawerHeader.
Make the child of a DrawerHeader optional.
Clean up UserAccuntsDrawerHeader a bit.
Add some useful properties and methods to EdgeInsets.
Add some debug logic to RenderDecoratedBox to catch unpaired
save/restore calls when possible.
Make GestureDetector fill its parent if it has no children. Fixes
https://github.com/flutter/flutter/issues/5380
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.
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.
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.
This introduces the key parts of a paginated data table, not including
the built-in pagination features.
* Provide more data for the data table demo, so there's data to page.
* Introduce a ChangeNotifier class which abstracts out
addListener/removeListener/notifyListeners. We might be able to use
this to simplify existing classes as well, though this patch doesn't
do that.
* Introduce DataTableSource, a delegate for getting data for data
tables. This will also be used by ScrollingDataTable in due course.
* Introduce PaginatedDataTable, a widget that wraps DataTable and only
shows N rows at a time, fed by a DataTableSource.
Instead of incorporating the margin into the button, introduce a ButtonBar
widget that supplies the proper spacing between the buttons. Also, make these
buttons more configurable via ButtonTheme so that dialogs can change the
minWidth and padding of the buttons as required by the spec.
Fixes#1843Fixes#3184
* add import guidance to library-level docs
* add import docs to other packages
* fix review comment
* clarify which libraries aren't meant to be directly imported
+ Add new demo to gallery to show data tables. (This currently doesn't
use a Card; I'll create a Card version in a subsequent patch.)
+ Fix checkbox alignment. It now centers in its box regardless.
+ Add Colors.black54.
+ Some minor fixes to dartdocs.
+ DataTable, DataColumn, DataRow, DataCell
+ RowInkWell
+ Augment dartdocs of materia/debug.dart.
+ DropDownButtonHideUnderline to hide the underline in a drop-down when
used in a DataTable.
+ Add new capabilities to InkResponse to support RowInkWell.
+ Augment dartdocs of materia/material.dart.
+ Add an assert to catch nested Blocks.
+ Fix a crash in RenderBox when you remove an object and an ancestor
used its baseline. (https://github.com/flutter/flutter/issues/2874)
+ Fix (and redocument) RenderBaseline/Baseline.
+ Add flex support to IntrinsicColumnWidth.
+ Document more stuff on the RenderTable side.
+ Fix a bug with parentData handling on RenderTable children.
+ Completely rewrite the column width computations. The old logic made
no sense at all.
+ Add dartdocs to widgets/debug.dart.
+ Add a toString for TableRow.
* Added Scrollbar, removed ScrollbarPainter
* removed a dead import
* updated per review feedback
* Only call dispatch if the widgets State is still mounted
* left -> leading (Removes an LTR bias)
* center -> title (Widget was actually centered)
* right -> actions (Removes an LTR bias, asymmetric with leading)
Fixes#2348
Rather than managing all the Material Design icons manually, we now
manage them using an icon font. The icon font contains glyphs for each
icon in an efficient vector format.
This patch updates the FLX tooling to include the MaterialIcons font and
updates the Icon widget to use the font instead of asset images.
Fixes#2313Fixes#2218Fixes#2009Fixes#994
Introduces a new Tooltip class.
Adds support for tooltips to IconButton and Scaffold.
Adds some tooltips to various demos.
Also some tweaks to stack.dart that I made before I decided not to go
down a "CustomPositioned" route.
http://www.google.com/design/spec/components/chips.html#chips-behavior
This patch adds support for deletable and non-deleteable chips, but doesn't yet
add support for contact chips. Also, demo the chips in a new Material Gallery
app that will let us demo our gallery of widgets in a single app.
PageRoute is now MaterialPageRoute.
This also changes the following:
- Now the HeroController is a Navigator observer, rather than a feature
of HeroPageRoutes, which are gone. This means heroes can work between
any kind of ModalRoute now.
- ModalPageRoute is moved from modal_barrier.dart to routes.dart.
- It allows routes to opt-out of their modal barrier being a shortcut to
popping the route.
- Features of PageRoute that aren't Material-specific get promoted to
ModalRoute features: storage, the subtree key, offstageness...
The AnimatedModalBarrier is still a ModalRoute feature.
A MaterialList understands the sizing, padding, and scrollbar features of
Material Design lists.
Also, add CircleAvatar for showing the circular avatars that are commonly used
in material lists.
Enabled displaying a scrollbar in ScrollingLists. The scrollbar is painted as an "overlay", i.e. it's painted on top of the scrolling list's visible children.
Added an abstract Painter base class that encapsulates a paint method and the renderer that it's attached to. RenderBlockViewport and HomogenousViewport now support an overlayPainter property. If specified, RenderBlockViewport attaches itself to the overlayPainter when it's attached to the rendering tree. RenderBlockViewport now calls overlayPainter.paint() after it has painted its children.
Added an abstract ScrollingListPainter class that exposes ScrollingList's state which might be needed for painting. Like its scroll direction and scrollOffset. The ScrollingListPainter is notified when a scroll starts and ends.
Defined a Material-specific ScrollingListPainter that renders a scrollbar. The scrollbar thumb is faded in/out when the scroll starts/ends.
Added onScrollStart and onScrollEnd listeners to Scrollable.