Removes bottom padding from the child AppBar in SliverAppBar. Scaffold
already does this for its own app bars, but sliver app bars in the body
should also apply the bottom padding removal.
Fixesflutter/flutter#13458
Also:
* Remove find.byIcon since it's identical to find.icon. (I sent mail to flutter-dev about this.)
* Fix IconData's operator== and hashCode, which had not been updated when we added fields.
* Add the byTooltip finder to the list of suggested finders.
* Make the suggested Key finder prettier.
* make time picker accessible
* use new CustomPaint a11y API
* flutter_localizations tests; use bigger distance delta
* fix am/pm control; selected values
* fix translations; remove @mustCallSuper in describeSemanticsConfiguration
* exclude AM/PM announcement from iOS as on iOS the label is read back automatically
* Let translucent Cupertino bars have its scaffold children automatically pad their heights (#13194)
* Let lists automatically add sliver padding from media query. Translucent nav and tab bars leave behind media query paddings in scaffolds.
* tests
* const lint
* Rename base abstract class to generalized ObstructingPreferredSizeWidget
* review
* More docs and comments from #13317
Updates scaffold to expose bottom padding to the associated
BottonNavigationBar (if present). BottomNavigationBar is now responsible
for adjusting itself to account for bottom padding.
This change is necessary to support the updated BottomNavigationBar
layout for the iPhone X.
* Remove MediaQuery padding for various PopupRoutes that don't extend to the edge of the screen
* bottom sheet doesn't actually need handling. Scaffold does it already. Add test for others.
Now that keyboard height is modelled as a (bottom) view inset, migrate
scaffold bottom resizing to use view insets instead of bottom padding,
which, after an engine roll, will only be used for safe areas.
Until the aforementioned engine roll, the keyboard height is still
included in both bottom padding and view insets. As such
resizeToAvoidBottomPadding still drives bottom padding removal until
that roll lands.
Renames _ScaffoldLayout.bottomPadding to bottomViewInset
This patch contains no framework changes.
This change adjusts a test bottom navigation bar height to be greater
than the media bottom padding.
This change is pre-factoring to clarify diffs in an upcoming change that
will expose bottom padding to the bottom navigation bar in order to
allow it to visually adapt its appearance in the presence of bottom
padding such as thatexposed for the iPhone X home screen indicator.
Since the bottom padding was previously greater than the height of the
bottom navigation bar, the height of insideBottomNavigation bar was
driven to 0 when padding is exposed.
This allows the scheduler library to depend on the services library
and the painting library to depend on the scheduler library without
the services library having to depend on the scheduler library.
While I was at it I also cleaned up some of the binding logic: the
licenses logic can now be overridden (and the test library does so),
and the image cache can now be overridden as well.
Scaffold bottom padding now applies the maximum of window
viewInsets.bottom (typically used for iOS safe areas) and padding.bottom
(typically used for keyboard height).
* Add a cylindrical projection helper matrix
* specify tangential
* more doc clarifications
* reshuffle arguments
* more code comments
* add some sanity tests
* review
* review 2
* added one more caveat for consideration in docs
This adjusts the CupertinoTabBar height in the presence of bottom
padding. On the iPhone X, this will increase the height to account for
the home indicator widget.
Summary:
- Add `key` field to `SemanticsNode`, while moving key into `foundation` library so it can be used by the render layer.
- Introduce `SemanticsProperties` and move many of the `Semantics` fields into it.
- Introduce `CustomPaintSemantics` - a `SemanticsNode` prototype created by `CustomPainter`.
- Introduce `semanticsBuilder` and `shouldRebuildSemantics` in `CustomerPainter`
**Breaking change**
The default `Semantics` constructor becomes non-const (due to https://github.com/dart-lang/sdk/issues/20962). However, a new `const Semantics.fromProperties` is added that still allowed creating constant `Semantics` widgets ([mailing list announcement](https://groups.google.com/forum/#!topic/flutter-dev/KQXBl2_1sws)).
Fixes https://github.com/flutter/flutter/issues/11791
Fixes https://github.com/flutter/flutter/issues/1666
Separate focus management by build owner
Currently the focus manager is held by the singleton WidgetBinding.
This change places a focus manager in each build owner object,
which allows clients to run offscreen pipelines without disturbing
focus management for the main UI.
1. Ensure that this value is defaulted to the value associated with the
context rather than re-defaulted to false.
2. Add this value to operator==, hashCode, toString methods.
* Let lists automatically add sliver padding from media query. Translucent nav and tab bars leave behind media query paddings in scaffolds.
* tests
* const lint
* Rename base abstract class to generalized ObstructingPreferredSizeWidget
* Add MediaQuery support for view insets
Also updates EdgeInsets documentation to reflect WindowPadding's use for
both padding and view insets.
See engine commits:
flutter/engine#4403flutter/engine#4406
* ensures that only semantics boundaries will be added to owner._nodesNeedingSemantics as expected by compiler.
* no longer throws assert if markNeedsSemanticsUpdate is called on non-semantic-boundary render object with a non-semantic-boundary parent.
* Fixes#13109.
* removes onlyLocalUpdates from markNeedsSemanticsUpdate as its no longer needed.
* add an assert to validate the RefreshIndicator.onRefresh result
* add a test for RefreshIndicator.onRefresh assert
* switch to using FlutterError.reportError, FlutterErrorDetails, and FlutterError
This is a bug in my previous CL: instead of cancelling the timer if
there are no more listeners, I canceled it if there were listeners (I
can claim I just missed a not :) ).
Not cancelling the timer when removing the last listener was not that bad, as
the timer callback is guarded by a check to see if there are listeners.
So the animation will not continue.
But in the case there were multiple listeners on the same stream, and
one of them is removed, this bug will stop the animation for all other
listeners.
I added a test case for this scenario.
Fix the dismissible demo in the gallery (make it actuall update when you pick something from its menu; give it a better affordance for resetting once you've dismissed everything).
Improve some docs.
Fix various flinging bugs with dismissible. Add tests for those cases.
Add a feature to flutter_test to support a drag-then-fling gesture (used by the flinging tests).
This fixes the popup menu code to do a better job of expanding
smoothly regardless of which side of the screen it's on. It still
results in a bidirection growth when positioned at the bottom of the
screen, so maybe we'll need to animate menus differently, but that's
a problem for another patch.
Also, improve some docs and provide RelativeRect.toSize which I needed
at one point while building this patch (though it didn't survive all
the way to the end).
* AnimationController reset() method
Just a simple convenience method to fix#13039
* Added `reset()` test
* More test expectations
Per feedback.
* Removed test print
* Improved documentation of reset()
* Add controller.reverse to test
This makes sure that we don't decode frames when we don't need to run
the animation.
For example, prior to this CL: an animated image in a page that is not
currently at the top of the page stack (it is covered by another page),
will keep the the image stream listener, and thus frames will still be
decoded.