Commit 9909e773 authored by Ian Hickson's avatar Ian Hickson Committed by GitHub

More documentation fixes (#12290)

parent dca164ab
...@@ -32,8 +32,8 @@ const Color _kDefaultTabBarBorderColor = const Color(0x4C000000); ...@@ -32,8 +32,8 @@ const Color _kDefaultTabBarBorderColor = const Color(0x4C000000);
/// ///
/// See also: /// See also:
/// ///
/// * [CupertinoTabScaffold] which hosts the [CupertinoTabBar] at the bottom. /// * [CupertinoTabScaffold], which hosts the [CupertinoTabBar] at the bottom.
/// * [BottomNavigationBarItem] typical item in a [CupertinoTabBar]. /// * [BottomNavigationBarItem], an item in a [CupertinoTabBar].
class CupertinoTabBar extends StatelessWidget implements PreferredSizeWidget { class CupertinoTabBar extends StatelessWidget implements PreferredSizeWidget {
/// Creates a tab bar in the iOS style. /// Creates a tab bar in the iOS style.
CupertinoTabBar({ CupertinoTabBar({
...@@ -143,7 +143,7 @@ class CupertinoTabBar extends StatelessWidget implements PreferredSizeWidget { ...@@ -143,7 +143,7 @@ class CupertinoTabBar extends StatelessWidget implements PreferredSizeWidget {
List<Widget> _buildTabItems() { List<Widget> _buildTabItems() {
final List<Widget> result = <Widget>[]; final List<Widget> result = <Widget>[];
for (int index = 0; index < items.length; ++index) { for (int index = 0; index < items.length; index += 1) {
result.add( result.add(
_wrapActiveItem( _wrapActiveItem(
new Expanded( new Expanded(
......
...@@ -187,7 +187,8 @@ class CupertinoAlertDialog extends StatelessWidget { ...@@ -187,7 +187,8 @@ class CupertinoAlertDialog extends StatelessWidget {
/// ///
/// See also: /// See also:
/// ///
/// * [CupertinoAlertDialog] /// * [CupertinoAlertDialog], a dialog that informs the user about situations
/// that require acknowledgement
class CupertinoDialogAction extends StatelessWidget { class CupertinoDialogAction extends StatelessWidget {
/// Creates an action for an iOS-style dialog. /// Creates an action for an iOS-style dialog.
const CupertinoDialogAction({ const CupertinoDialogAction({
......
...@@ -15,9 +15,11 @@ import 'nav_bar.dart'; ...@@ -15,9 +15,11 @@ import 'nav_bar.dart';
/// ///
/// See also: /// See also:
/// ///
/// * [CupertinoPageRoute] a modal page route that typically hosts a [CupertinoPageRoute] /// * [CupertinoTabScaffold], a similar widget for tabbed applications.
/// with support for iOS style page transitions. /// * [CupertinoPageRoute], a modal page route that typically hosts a
/// [CupertinoPageScaffold] with support for iOS-style page transitions.
class CupertinoPageScaffold extends StatelessWidget { class CupertinoPageScaffold extends StatelessWidget {
/// Creates a layout for pages with a navigation bar at the top.
const CupertinoPageScaffold({ const CupertinoPageScaffold({
Key key, Key key,
this.navigationBar, this.navigationBar,
......
...@@ -67,10 +67,12 @@ final DecorationTween _kGradientShadowTween = new DecorationTween( ...@@ -67,10 +67,12 @@ final DecorationTween _kGradientShadowTween = new DecorationTween(
/// ///
/// See also: /// See also:
/// ///
/// * [MaterialPageRoute] for an adaptive [PageRoute] that uses a platform /// * [MaterialPageRoute], for an adaptive [PageRoute] that uses a
/// appropriate transition. /// platform-appropriate transition.
/// * [CupertinoPageScaffold] typical content of a [CupertinoPageRoute] implementing /// * [CupertinoPageScaffold], for applications that have one page with a fixed
/// iOS style layout with navigation bar on top. /// navigation bar on top.
/// * [CupertinoTabScaffold], for applications that have a tab bar at the
/// bottom with multiple pages.
class CupertinoPageRoute<T> extends PageRoute<T> { class CupertinoPageRoute<T> extends PageRoute<T> {
/// Creates a page route for use in an iOS designed app. /// Creates a page route for use in an iOS designed app.
/// ///
...@@ -146,9 +148,9 @@ class CupertinoPageRoute<T> extends PageRoute<T> { ...@@ -146,9 +148,9 @@ class CupertinoPageRoute<T> extends PageRoute<T> {
/// Whether a pop gesture is currently underway. /// Whether a pop gesture is currently underway.
/// ///
/// This starts returning true when the [startPopGesture] method returns a new /// This starts returning true when pop gesture is started by the user. It
/// [NavigationGestureController]. It returns false if that has not yet /// returns false if that has not yet occurred or if the most recent such
/// occurred or if the most recent such gesture has completed. /// gesture has completed.
/// ///
/// See also: /// See also:
/// ///
...@@ -156,12 +158,14 @@ class CupertinoPageRoute<T> extends PageRoute<T> { ...@@ -156,12 +158,14 @@ class CupertinoPageRoute<T> extends PageRoute<T> {
/// in the first place. /// in the first place.
bool get popGestureInProgress => _backGestureController != null; bool get popGestureInProgress => _backGestureController != null;
/// Whether a pop gesture will be considered acceptable by [startPopGesture]. /// Whether a pop gesture can be started by the user.
/// ///
/// This returns true if the user can edge-swipe to a previous route, /// This returns true if the user can edge-swipe to a previous route,
/// otherwise false. /// otherwise false.
/// ///
/// This will return false if [popGestureInProgress] is true. /// This will return false once [popGestureInProgress] is true, but
/// [popGestureInProgress] can only become true if [popGestureEnabled] was
/// true first.
/// ///
/// This should only be used between frames, not during build. /// This should only be used between frames, not during build.
bool get popGestureEnabled { bool get popGestureEnabled {
......
...@@ -16,9 +16,9 @@ import 'bottom_tab_bar.dart'; ...@@ -16,9 +16,9 @@ import 'bottom_tab_bar.dart';
/// to change the active tab. /// to change the active tab.
/// ///
/// Tabs' contents are built with the provided [tabBuilder] at the active /// Tabs' contents are built with the provided [tabBuilder] at the active
/// tab index. [tabBuilder] must be able to build the same number of /// tab index. The [tabBuilder] must be able to build the same number of
/// pages as the [tabBar.items.length]. Inactive tabs will be moved [Offstage] /// pages as there are [tabBar.items]. Inactive tabs will be moved [Offstage]
/// and its animations disabled. /// and their animations disabled.
/// ///
/// Use [CupertinoTabView] as the content of each tab to support tabs with parallel /// Use [CupertinoTabView] as the content of each tab to support tabs with parallel
/// navigation state and history. /// navigation state and history.
...@@ -74,13 +74,16 @@ import 'bottom_tab_bar.dart'; ...@@ -74,13 +74,16 @@ import 'bottom_tab_bar.dart';
/// ///
/// See also: /// See also:
/// ///
/// * [CupertinoTabBar] bottom tab bars inserted in the scaffold. /// * [CupertinoTabBar], the bottom tab bar inserted in the scaffold.
/// * [CupertinoTabView] a typical root content of each tap that holds its own /// * [CupertinoTabView], the typical root content of each tab that holds its own
/// [Navigator] stack. /// [Navigator] stack.
/// * [CupertinoPageRoute] a route hosting modal pages with iOS style transitions. /// * [CupertinoPageRoute], a route hosting modal pages with iOS style transitions.
/// * [CupertinoPageScaffold] typical contents of an iOS modal page implementing /// * [CupertinoPageScaffold], typical contents of an iOS modal page implementing
/// layout with a navigation bar on top. /// layout with a navigation bar on top.
class CupertinoTabScaffold extends StatefulWidget { class CupertinoTabScaffold extends StatefulWidget {
/// Creates a layout for applications with a tab bar at the bottom.
///
/// The [tabBar] and [tabBuilder] arguments must not be null.
const CupertinoTabScaffold({ const CupertinoTabScaffold({
Key key, Key key,
@required this.tabBar, @required this.tabBar,
......
...@@ -31,10 +31,11 @@ import 'route.dart'; ...@@ -31,10 +31,11 @@ import 'route.dart';
/// ///
/// See also: /// See also:
/// ///
/// * [CupertinoTabScaffold] a typical host that supports switching between tabs. /// * [CupertinoTabScaffold], a typical host that supports switching between tabs.
/// * [CupertinoPageRoute] a typical modal page route pushed onto the [CupertinoTabView]'s /// * [CupertinoPageRoute], a typical modal page route pushed onto the
/// [Navigator]. /// [CupertinoTabView]'s [Navigator].
class CupertinoTabView extends StatelessWidget { class CupertinoTabView extends StatelessWidget {
/// Creates the content area for a tab in a [CupertinoTabScaffold].
const CupertinoTabView({ const CupertinoTabView({
Key key, Key key,
this.builder, this.builder,
......
...@@ -148,7 +148,7 @@ class MaterialApp extends StatefulWidget { ...@@ -148,7 +148,7 @@ class MaterialApp extends StatefulWidget {
/// If non-null this function is called to produce the app's /// If non-null this function is called to produce the app's
/// title string, otherwise [title] is used. /// title string, otherwise [title] is used.
/// ///
/// The [onGenerateTitle] `context` parameter includes the [WidgetApp]'s /// The [onGenerateTitle] `context` parameter includes the [WidgetsApp]'s
/// [Localizations] widget so that this callback can be used to produce a /// [Localizations] widget so that this callback can be used to produce a
/// localized title. /// localized title.
/// ///
...@@ -260,9 +260,9 @@ class MaterialApp extends StatefulWidget { ...@@ -260,9 +260,9 @@ class MaterialApp extends StatefulWidget {
/// Delegates that produce [WidgetsLocalizations] and [MaterialLocalizations] /// Delegates that produce [WidgetsLocalizations] and [MaterialLocalizations]
/// are included automatically. Apps can provide their own versions of these /// are included automatically. Apps can provide their own versions of these
/// localizations by creating implementations of /// localizations by creating implementations of
/// [LocalizationsDelegate<WidgetLocalizations>] or /// [LocalizationsDelegate<WidgetsLocalizations>] or
/// [LocalizationsDelegate<MaterialLocalizations>] whose load methods return /// [LocalizationsDelegate<MaterialLocalizations>] whose load methods return
/// custom versions of [WidgetLocalizations] or [MaterialLocalizations]. /// custom versions of [WidgetsLocalizations] or [MaterialLocalizations].
/// ///
/// For example: to add support to [MaterialLocalizations] for a /// For example: to add support to [MaterialLocalizations] for a
/// locale it doesn't already support, say `const Locale('foo', 'BR')`, /// locale it doesn't already support, say `const Locale('foo', 'BR')`,
......
...@@ -328,9 +328,9 @@ class MaterialRectArcTween extends RectTween { ...@@ -328,9 +328,9 @@ class MaterialRectArcTween extends RectTween {
} }
} }
/// A [Tween] that interpolates a [Rect] by moving it along a circular /// A [Tween] that interpolates a [Rect] by moving it along a circular arc from
/// arc from [begin.center] to [end.center] while interpoloting the rectangle's /// [begin]'s [Rect.center] to [end]'s [Rect.center] while interpolating the
/// width and height. /// rectangle's width and height.
/// ///
/// The arc that defines that center of the interpolated rectangle as it morphs /// The arc that defines that center of the interpolated rectangle as it morphs
/// from [begin] to [end] is a [MaterialPointArcTween]. /// from [begin] to [end] is a [MaterialPointArcTween].
...@@ -367,8 +367,8 @@ class MaterialRectCenterArcTween extends RectTween { ...@@ -367,8 +367,8 @@ class MaterialRectCenterArcTween extends RectTween {
_dirty = false; _dirty = false;
} }
/// If [begin] and [end] are non-null, returns a tween that interpolates /// If [begin] and [end] are non-null, returns a tween that interpolates along
/// along a circular arc between [begin.center] and [end.center]. /// a circular arc between [begin]'s [Rect.center] and [end]'s [Rect.center].
MaterialPointArcTween get centerArc { MaterialPointArcTween get centerArc {
if (begin == null || end == null) if (begin == null || end == null)
return null; return null;
......
...@@ -34,10 +34,10 @@ abstract class MaterialLocalizations { ...@@ -34,10 +34,10 @@ abstract class MaterialLocalizations {
/// The tooltip for the [MonthPicker]'s "previous month" button. /// The tooltip for the [MonthPicker]'s "previous month" button.
String get previousMonthTooltip; String get previousMonthTooltip;
/// The tooltip for the [PaginatedDataTables]'s "next page" button. /// The tooltip for the [PaginatedDataTable]'s "next page" button.
String get nextPageTooltip; String get nextPageTooltip;
/// The tooltip for the [PaginatedDataTables]'s "previous page" button. /// The tooltip for the [PaginatedDataTable]'s "previous page" button.
String get previousPageTooltip; String get previousPageTooltip;
/// The default [PopupMenuButton] tooltip. /// The default [PopupMenuButton] tooltip.
...@@ -55,7 +55,7 @@ abstract class MaterialLocalizations { ...@@ -55,7 +55,7 @@ abstract class MaterialLocalizations {
/// Title for the [PaginatedDataTable]'s "rows per page" footer. /// Title for the [PaginatedDataTable]'s "rows per page" footer.
String get rowsPerPageTitle; String get rowsPerPageTitle;
/// Title for the PaginatedDataTable's selected row count header. /// Title for the [PaginatedDataTable]'s selected row count header.
String selectedRowCountTitle(int selectedRowCount); String selectedRowCountTitle(int selectedRowCount);
/// Label for "cancel" buttons and menu items. /// Label for "cancel" buttons and menu items.
...@@ -82,7 +82,7 @@ abstract class MaterialLocalizations { ...@@ -82,7 +82,7 @@ abstract class MaterialLocalizations {
/// Label for "select all" edit buttons and menu items. /// Label for "select all" edit buttons and menu items.
String get selectAllButtonLabel; String get selectAllButtonLabel;
/// Label for the [AboutBox] button that shows the [LicensePage]. /// Label for the [AboutDialog] button that shows the [LicensePage].
String get viewLicensesButtonLabel; String get viewLicensesButtonLabel;
/// The abbreviation for ante meridiem (before noon) shown in the time picker. /// The abbreviation for ante meridiem (before noon) shown in the time picker.
......
...@@ -34,7 +34,7 @@ import 'colors.dart'; ...@@ -34,7 +34,7 @@ import 'colors.dart';
/// * <http://material.google.com/style/typography.html> /// * <http://material.google.com/style/typography.html>
@immutable @immutable
class TextTheme { class TextTheme {
/// Create a text theme that uses the given values. /// Creates a text theme that uses the given values.
/// ///
/// Rather than creating a new text theme, consider using [Typography.black] /// Rather than creating a new text theme, consider using [Typography.black]
/// or [Typography.white], which implement the typography styles in the /// or [Typography.white], which implement the typography styles in the
...@@ -131,6 +131,12 @@ class TextTheme { ...@@ -131,6 +131,12 @@ class TextTheme {
); );
} }
/// Creates a new [TextTheme] where each text style from this object has been
/// merged with the matching text style from the `other` object.
///
/// This is particularly useful if one [TextTheme] defines one set of
/// properties and another defines a different set, e.g. having colors defined
/// in one text theme and font sizes in another.
TextTheme merge(TextTheme other) { TextTheme merge(TextTheme other) {
if (other == null) if (other == null)
return this; return this;
......
...@@ -27,7 +27,7 @@ abstract class Gradient { ...@@ -27,7 +27,7 @@ abstract class Gradient {
/// Creates a [Shader] for this gradient to fill the given rect. /// Creates a [Shader] for this gradient to fill the given rect.
/// ///
/// If the gradient's configuration is text-direction-dependent, for example /// If the gradient's configuration is text-direction-dependent, for example
/// it uses [FractionalOffsetDirection] objects instead of [FractionalOffset] /// it uses [FractionalOffsetDirectional] objects instead of [FractionalOffset]
/// objects, then the `textDirection` argument must not be null. /// objects, then the `textDirection` argument must not be null.
Shader createShader(Rect rect, { TextDirection textDirection }); Shader createShader(Rect rect, { TextDirection textDirection });
} }
......
...@@ -145,7 +145,7 @@ import 'basic_types.dart'; ...@@ -145,7 +145,7 @@ import 'basic_types.dart';
/// ///
/// The `family` property determines the name of the font, which you can use in /// The `family` property determines the name of the font, which you can use in
/// the [fontFamily] argument. The `asset` property is a path to the font file, /// the [fontFamily] argument. The `asset` property is a path to the font file,
/// relative to the [pubspec.yaml] file. The `weight` property specifies the /// relative to the `pubspec.yaml` file. The `weight` property specifies the
/// weight of the glyph outlines in the file as an integer multiple of 100 /// weight of the glyph outlines in the file as an integer multiple of 100
/// between 100 and 900. This corresponds to the [FontWeight] class and can be /// between 100 and 900. This corresponds to the [FontWeight] class and can be
/// used in the [fontWeight] argument. The `style` property specfies whether the /// used in the [fontWeight] argument. The `style` property specfies whether the
......
...@@ -2560,31 +2560,31 @@ abstract class RenderObject extends AbstractNode with DiagnosticableTreeMixin im ...@@ -2560,31 +2560,31 @@ abstract class RenderObject extends AbstractNode with DiagnosticableTreeMixin im
/// Mark this node as needing an update to its semantics description. /// Mark this node as needing an update to its semantics description.
/// ///
/// The parameters [onlyLocalUpdates] and [noGeometry] tell the framework /// The parameters `onlyLocalUpdates` and `noGeometry` tell the framework
/// how much of the semantics have changed. Bigger changes (indicated by /// how much of the semantics have changed. Bigger changes (indicated by
/// setting one or both parameters to false) are more expansive to compute. /// setting one or both parameters to false) are more expansive to compute.
/// ///
/// [onlyLocalUpdates] should be set to true to reduce cost if the semantics /// `onlyLocalUpdates` should be set to true to reduce cost if the semantics
/// update does not in any way change the shape of the semantics tree (e.g. /// update does not in any way change the shape of the semantics tree (e.g.
/// [SemanticsNode]s will neither be added/removed from the tree nor be moved /// [SemanticsNode]s will neither be added/removed from the tree nor be moved
/// within the tree). In other words, with [onlyLocalChanges] the /// within the tree). In other words, with `onlyLocalUpdates` the
/// [RenderObject] can indicate that it only wants to perform updates on the /// [RenderObject] can indicate that it only wants to perform updates on the
/// local [SemanticsNode] (e.g. changing a label or flag) without affecting /// local [SemanticsNode] (e.g. changing a label or flag) without affecting
/// other nodes in the tree. /// other nodes in the tree.
/// ///
/// [onlyLocalUpdates] has to be set to false in the following cases as they /// `onlyLocalUpdates` has to be set to false in the following cases as they
/// will change the shape of the tree: /// will change the shape of the tree:
/// ///
/// 1. [isSemanticBoundary] changed its value. /// 1. [isSemanticBoundary] changed its value.
/// 2. [semanticsAnnotator] changed from or to returning null and /// 2. [semanticsAnnotator] changed from or to returning null and
/// [isSemanticBoundary] isn't true. /// [isSemanticBoundary] isn't true.
/// ///
/// [noGeometry] should be set to true to reduce cost if the geometry (e.g. /// `noGeometry` should be set to true to reduce cost if the geometry (e.g.
/// size and position) of the corresponding [SemanticsNode] has not /// size and position) of the corresponding [SemanticsNode] has not
/// changed. Examples for such semantic updates that don't require a geometry /// changed. Examples for such semantic updates that don't require a geometry
/// update are changes to flags, labels, or actions. /// update are changes to flags, labels, or actions.
/// ///
/// If [onlyLocalUpdates] or [noGeometry] are incorrectly set to true, asserts /// If `onlyLocalUpdates` or `noGeometry` are incorrectly set to true, asserts
/// might throw or the computed semantics tree might be out-of-date without /// might throw or the computed semantics tree might be out-of-date without
/// warning. /// warning.
void markNeedsSemanticsUpdate({ bool onlyLocalUpdates: false, bool noGeometry: false }) { void markNeedsSemanticsUpdate({ bool onlyLocalUpdates: false, bool noGeometry: false }) {
...@@ -2778,9 +2778,9 @@ abstract class RenderObject extends AbstractNode with DiagnosticableTreeMixin im ...@@ -2778,9 +2778,9 @@ abstract class RenderObject extends AbstractNode with DiagnosticableTreeMixin im
/// By default, the method will annotate [node] with the [semanticsAnnotator] /// By default, the method will annotate [node] with the [semanticsAnnotator]
/// and add the [children] to it. /// and add the [children] to it.
/// ///
/// Subclasses can override this method to add additional [SemanticNode]s /// Subclasses can override this method to add additional [SemanticsNode]s
/// to the tree. If a subclass adds additional nodes in this method, it also /// to the tree. If a subclass adds additional nodes in this method, it also
/// needs to override [resetSemantics] to call [SemanticsNodes.reset] on those /// needs to override [resetSemantics] to call [SemanticsNode.reset] on those
/// additional [SemanticsNode]s. /// additional [SemanticsNode]s.
void assembleSemanticsNode(SemanticsNode node, Iterable<SemanticsNode> children) { void assembleSemanticsNode(SemanticsNode node, Iterable<SemanticsNode> children) {
assert(node == _semantics); assert(node == _semantics);
......
...@@ -237,7 +237,7 @@ class RenderParagraph extends RenderBox { ...@@ -237,7 +237,7 @@ class RenderParagraph extends RenderBox {
bool _hasVisualOverflow = false; bool _hasVisualOverflow = false;
ui.Shader _overflowShader; ui.Shader _overflowShader;
/// Whether this paragraph currently has a [ui.Shader] for its overflow /// Whether this paragraph currently has a [dart:ui.Shader] for its overflow
/// effect. /// effect.
/// ///
/// Used to test this object. Not for use in production. /// Used to test this object. Not for use in production.
......
...@@ -2869,7 +2869,7 @@ class RenderSemanticsGestureHandler extends RenderProxyBox implements SemanticsA ...@@ -2869,7 +2869,7 @@ class RenderSemanticsGestureHandler extends RenderProxyBox implements SemanticsA
/// ///
/// As an example, a [RenderSliver] that stays on the screen within a /// As an example, a [RenderSliver] that stays on the screen within a
/// [Scrollable] even though the user has scrolled past it (e.g. a pinned app /// [Scrollable] even though the user has scrolled past it (e.g. a pinned app
/// bar) can tag its [SemanticNode] with [excludeFromScrolling] to indicate /// bar) can tag its [SemanticsNode] with [excludeFromScrolling] to indicate
/// that it should no longer be considered for semantic actions related to /// that it should no longer be considered for semantic actions related to
/// scrolling. /// scrolling.
static const SemanticsTag excludeFromScrolling = const SemanticsTag('RenderSemanticsGestureHandler.excludeFromScrolling'); static const SemanticsTag excludeFromScrolling = const SemanticsTag('RenderSemanticsGestureHandler.excludeFromScrolling');
......
...@@ -7,7 +7,7 @@ import 'dart:ui' as ui show Image; ...@@ -7,7 +7,7 @@ import 'dart:ui' as ui show Image;
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
/// A [ui.Image] object with its corresponding scale. /// A [dart:ui.Image] object with its corresponding scale.
/// ///
/// ImageInfo objects are used by [ImageStream] objects to represent the /// ImageInfo objects are used by [ImageStream] objects to represent the
/// actual data of the image once it has been obtained. /// actual data of the image once it has been obtained.
...@@ -33,7 +33,7 @@ class ImageInfo { ...@@ -33,7 +33,7 @@ class ImageInfo {
/// ///
/// For example, if this is 2.0 it means that there are four image pixels for /// For example, if this is 2.0 it means that there are four image pixels for
/// every one logical pixel, and the image's actual width and height (as given /// every one logical pixel, and the image's actual width and height (as given
/// by the [ui.Image.width] and [ui.Image.height] properties) are double the /// by the [dart:ui.Image.width] and [dart:ui.Image.height] properties) are double the
/// height and width that should be used when painting the image (e.g. in the /// height and width that should be used when painting the image (e.g. in the
/// arguments given to [Canvas.drawImage]). /// arguments given to [Canvas.drawImage]).
final double scale; final double scale;
...@@ -56,7 +56,7 @@ typedef void ImageListener(ImageInfo image, bool synchronousCall); ...@@ -56,7 +56,7 @@ typedef void ImageListener(ImageInfo image, bool synchronousCall);
/// A handle to an image resource. /// A handle to an image resource.
/// ///
/// ImageStream represents a handle to a [ui.Image] object and its scale /// ImageStream represents a handle to a [dart:ui.Image] object and its scale
/// (together represented by an [ImageInfo] object). The underlying image object /// (together represented by an [ImageInfo] object). The underlying image object
/// might change over time, either because the image is animating or because the /// might change over time, either because the image is animating or because the
/// underlying image resource was mutated. /// underlying image resource was mutated.
...@@ -164,7 +164,7 @@ class ImageStream extends Diagnosticable { ...@@ -164,7 +164,7 @@ class ImageStream extends Diagnosticable {
} }
} }
/// Base class for those that manage the loading of [ui.Image] objects for /// Base class for those that manage the loading of [dart:ui.Image] objects for
/// [ImageStream]s. /// [ImageStream]s.
/// ///
/// This class is rarely used directly. Generally, an [ImageProvider] subclass /// This class is rarely used directly. Generally, an [ImageProvider] subclass
...@@ -243,7 +243,7 @@ class ImageStreamCompleter extends Diagnosticable { ...@@ -243,7 +243,7 @@ class ImageStreamCompleter extends Diagnosticable {
} }
} }
/// Manages the loading of [ui.Image] objects for static [ImageStream]s (those /// Manages the loading of [dart:ui.Image] objects for static [ImageStream]s (those
/// with only one frame). /// with only one frame).
class OneFrameImageStreamCompleter extends ImageStreamCompleter { class OneFrameImageStreamCompleter extends ImageStreamCompleter {
/// Creates a manager for one-frame [ImageStream]s. /// Creates a manager for one-frame [ImageStream]s.
......
...@@ -31,13 +31,13 @@ export 'dart:ui' show Locale; ...@@ -31,13 +31,13 @@ export 'dart:ui' show Locale;
/// ///
/// The `locale` is the device's locale when the app started, or the device /// The `locale` is the device's locale when the app started, or the device
/// locale the user selected after the app was started. The `supportedLocales` /// locale the user selected after the app was started. The `supportedLocales`
/// parameter is just the value of [WidgetApp.supportedLocales]. /// parameter is just the value of [WidgetsApp.supportedLocales].
typedef Locale LocaleResolutionCallback(Locale locale, Iterable<Locale> supportedLocales); typedef Locale LocaleResolutionCallback(Locale locale, Iterable<Locale> supportedLocales);
/// The signature of [WidgetsApp.onGenerateTitle]. /// The signature of [WidgetsApp.onGenerateTitle].
/// ///
/// Used to generate a value for the app's [Title.title], which the device uses /// Used to generate a value for the app's [Title.title], which the device uses
/// to identify the app for the user. The `context` includes the [WidgetApp]'s /// to identify the app for the user. The `context` includes the [WidgetsApp]'s
/// [Localizations] widget so that this method can be used to produce a /// [Localizations] widget so that this method can be used to produce a
/// localized title. /// localized title.
/// ///
...@@ -123,7 +123,7 @@ class WidgetsApp extends StatefulWidget { ...@@ -123,7 +123,7 @@ class WidgetsApp extends StatefulWidget {
/// If non-null this callback function is called to produce the app's /// If non-null this callback function is called to produce the app's
/// title string, otherwise [title] is used. /// title string, otherwise [title] is used.
/// ///
/// The [onGenerateTitle] `context` parameter includes the [WidgetApp]'s /// The [onGenerateTitle] `context` parameter includes the [WidgetsApp]'s
/// [Localizations] widget so that this callback can be used to produce a /// [Localizations] widget so that this callback can be used to produce a
/// localized title. /// localized title.
/// ///
...@@ -208,7 +208,7 @@ class WidgetsApp extends StatefulWidget { ...@@ -208,7 +208,7 @@ class WidgetsApp extends StatefulWidget {
/// If the callback is null or if it returns null then the resolved locale is: /// If the callback is null or if it returns null then the resolved locale is:
/// ///
/// - The callback's `locale` parameter if it's equal to a supported locale. /// - The callback's `locale` parameter if it's equal to a supported locale.
/// - The first supported locale with the same [Locale.langaugeCode] as the /// - The first supported locale with the same [Locale.languageCode] as the
/// callback's `locale` parameter. /// callback's `locale` parameter.
/// - The first locale in [supportedLocales]. /// - The first locale in [supportedLocales].
/// ///
...@@ -240,7 +240,7 @@ class WidgetsApp extends StatefulWidget { ...@@ -240,7 +240,7 @@ class WidgetsApp extends StatefulWidget {
/// * [localeResolutionCallback], an app callback that resolves the app's locale /// * [localeResolutionCallback], an app callback that resolves the app's locale
/// when the device's locale changes. /// when the device's locale changes.
/// ///
/// * [localizationDelegates], which collectively define all of the localized /// * [localizationsDelegates], which collectively define all of the localized
/// resources used by this app. /// resources used by this app.
final Iterable<Locale> supportedLocales; final Iterable<Locale> supportedLocales;
......
...@@ -2330,7 +2330,7 @@ class Positioned extends ParentDataWidget<Stack> { ...@@ -2330,7 +2330,7 @@ class Positioned extends ParentDataWidget<Stack> {
/// See also: /// See also:
/// ///
/// * [Positioned.directional], which specifies the widget's horizontal /// * [Positioned.directional], which specifies the widget's horizontal
/// position using [start] and [end] rather than [left] and [right]. /// position using `start` and `end` rather than `left` and `right`.
const Positioned({ const Positioned({
Key key, Key key,
this.left, this.left,
...@@ -3049,7 +3049,7 @@ class Row extends Flex { ...@@ -3049,7 +3049,7 @@ class Row extends Flex {
/// any. If there is no ambient directionality, and a text direction is going /// any. If there is no ambient directionality, and a text direction is going
/// to be necessary to determine the layout order (which is always the case /// to be necessary to determine the layout order (which is always the case
/// unless the row has no children or only one child) or to disambiguate /// unless the row has no children or only one child) or to disambiguate
/// `start` or `end` values for the [mainAxisDirection], the [textDirection] /// `start` or `end` values for the [mainAxisAlignment], the [textDirection]
/// must not be null. /// must not be null.
Row({ Row({
Key key, Key key,
...@@ -3239,7 +3239,7 @@ class Column extends Flex { ...@@ -3239,7 +3239,7 @@ class Column extends Flex {
/// The [textDirection] argument defaults to the ambient [Directionality], if /// The [textDirection] argument defaults to the ambient [Directionality], if
/// any. If there is no ambient directionality, and a text direction is going /// any. If there is no ambient directionality, and a text direction is going
/// to be necessary to disambiguate `start` or `end` values for the /// to be necessary to disambiguate `start` or `end` values for the
/// [crossAxisDirection], the [textDirection] must not be null. /// [crossAxisAlignment], the [textDirection] must not be null.
Column({ Column({
Key key, Key key,
MainAxisAlignment mainAxisAlignment: MainAxisAlignment.start, MainAxisAlignment mainAxisAlignment: MainAxisAlignment.start,
......
...@@ -1353,21 +1353,6 @@ abstract class State<T extends StatefulWidget> extends Diagnosticable { ...@@ -1353,21 +1353,6 @@ abstract class State<T extends StatefulWidget> extends Diagnosticable {
@mustCallSuper @mustCallSuper
void didChangeDependencies() { } void didChangeDependencies() { }
/// Add additional properties to the given description used by
/// [toDiagnosticsNode], [toString] and [toStringDeep].
///
/// This method makes it easier for subclasses to coordinate to provide
/// high-quality diagnostic data. The [toString] implementation on
/// the [State] base class calls [debugFillProperties] to collect useful
/// information from subclasses to incorporate into its return value.
///
/// If you override this, make sure to start your method with a call to
/// `super.debugFillProperties(description)`.
///
/// See also:
///
/// * [DiagnosticableTree.debugFillProperties], which provides detailed
/// best practices for defining diagnostic properties.
@override @override
void debugFillProperties(DiagnosticPropertiesBuilder description) { void debugFillProperties(DiagnosticPropertiesBuilder description) {
super.debugFillProperties(description); super.debugFillProperties(description);
...@@ -3332,23 +3317,6 @@ abstract class Element extends DiagnosticableTree implements BuildContext { ...@@ -3332,23 +3317,6 @@ abstract class Element extends DiagnosticableTree implements BuildContext {
return widget != null ? '${widget.toStringShort()}' : '[$runtimeType]'; return widget != null ? '${widget.toStringShort()}' : '[$runtimeType]';
} }
/// Add additional properties to the given description used by
/// [toDiagnosticsNode], [toString] and [toStringDeep].
///
/// This method makes it easier for subclasses to coordinate to provide
/// high-quality diagnostic data. The [toString] implementation on
/// the [State] base class calls [debugFillProperties] to collect useful
/// information from subclasses to incorporate into its return value.
///
/// If you override this, make sure to start your method with a call to
/// `super.debugFillProperties(description)`.
///
/// See also:
///
/// * [DiagnosticableTree.debugFillProperties], which provides detailed
/// best practices for defining diagnostic properties.
@protected
@mustCallSuper
@override @override
void debugFillProperties(DiagnosticPropertiesBuilder description) { void debugFillProperties(DiagnosticPropertiesBuilder description) {
super.debugFillProperties(description); super.debugFillProperties(description);
......
...@@ -567,7 +567,8 @@ class RawGestureDetectorState extends State<RawGestureDetector> { ...@@ -567,7 +567,8 @@ class RawGestureDetectorState extends State<RawGestureDetector> {
/// The event can be interpreted by assistive technologies to provide /// The event can be interpreted by assistive technologies to provide
/// additional feedback to the user about the state of the UI. /// additional feedback to the user about the state of the UI.
/// ///
/// The event will not be sent if [excludeFromSemantics] is set to true. /// The event will not be sent if [RawGestureDetector.excludeFromSemantics] is
/// set to true.
void sendSemanticsEvent(SemanticsEvent event) { void sendSemanticsEvent(SemanticsEvent event) {
if (!widget.excludeFromSemantics) { if (!widget.excludeFromSemantics) {
final RenderSemanticsGestureHandler semanticsGestureHandler = context.findRenderObject(); final RenderSemanticsGestureHandler semanticsGestureHandler = context.findRenderObject();
......
...@@ -101,7 +101,7 @@ class Hero extends StatefulWidget { ...@@ -101,7 +101,7 @@ class Hero extends StatefulWidget {
/// ///
/// If this property is null, the default, then the value of /// If this property is null, the default, then the value of
/// [HeroController.createRectTween] is used. The [HeroController] created by /// [HeroController.createRectTween] is used. The [HeroController] created by
/// [MaterialApp] creates a [MaterialArcRectTween]. /// [MaterialApp] creates a [MaterialRectAreTween].
final CreateRectTween createRectTween; final CreateRectTween createRectTween;
/// The widget subtree that will "fly" from one route to another during a /// The widget subtree that will "fly" from one route to another during a
......
...@@ -12,6 +12,19 @@ import 'navigator.dart'; ...@@ -12,6 +12,19 @@ import 'navigator.dart';
import 'transitions.dart'; import 'transitions.dart';
/// A widget that prevents the user from interacting with widgets behind itself. /// A widget that prevents the user from interacting with widgets behind itself.
///
/// The modal barrier is the scrim that is rendered behind each route, which
/// generally prevents the user from interacting with the route below the
/// current route, and normally partially obscures such routes.
///
/// For example, when a dialog is on the screen, the page below the dialog is
/// usually darkened by the modal barrier.
///
/// See also:
///
/// * [ModalRoute], which indirectly uses this widget.
/// * [AnimatedModalBarrier], which is similar but takes an animated [color]
/// instead of a single color value.
class ModalBarrier extends StatelessWidget { class ModalBarrier extends StatelessWidget {
/// Creates a widget that blocks user interaction. /// Creates a widget that blocks user interaction.
const ModalBarrier({ const ModalBarrier({
...@@ -21,9 +34,19 @@ class ModalBarrier extends StatelessWidget { ...@@ -21,9 +34,19 @@ class ModalBarrier extends StatelessWidget {
}) : super(key: key); }) : super(key: key);
/// If non-null, fill the barrier with this color. /// If non-null, fill the barrier with this color.
///
/// See also:
///
/// * [ModalRoute.barrierColor], which controls this property for the
/// [ModalBarrier] built by [ModalRoute] pages.
final Color color; final Color color;
/// Whether touching the barrier will pop the current route off the [Navigator]. /// Whether touching the barrier will pop the current route off the [Navigator].
///
/// See also:
///
/// * [ModalRoute.barrierDismissible], which controls this property for the
/// [ModalBarrier] built by [ModalRoute] pages.
final bool dismissible; final bool dismissible;
@override @override
...@@ -55,7 +78,22 @@ class ModalBarrier extends StatelessWidget { ...@@ -55,7 +78,22 @@ class ModalBarrier extends StatelessWidget {
} }
} }
/// A widget that prevents the user from interacting with widgets behind itself. /// A widget that prevents the user from interacting with widgets behind itself,
/// and can be configured with an animated color value.
///
/// The modal barrier is the scrim that is rendered behind each route, which
/// generally prevents the user from interacting with the route below the
/// current route, and normally partially obscures such routes.
///
/// For example, when a dialog is on the screen, the page below the dialog is
/// usually darkened by the modal barrier.
///
/// This widget is similar to [ModalBarrier] except that it takes an animated
/// [color] instead of a single color.
///
/// See also:
///
/// * [ModalRoute], which uses this widget.
class AnimatedModalBarrier extends AnimatedWidget { class AnimatedModalBarrier extends AnimatedWidget {
/// Creates a widget that blocks user interaction. /// Creates a widget that blocks user interaction.
const AnimatedModalBarrier({ const AnimatedModalBarrier({
...@@ -65,16 +103,26 @@ class AnimatedModalBarrier extends AnimatedWidget { ...@@ -65,16 +103,26 @@ class AnimatedModalBarrier extends AnimatedWidget {
}) : super(key: key, listenable: color); }) : super(key: key, listenable: color);
/// If non-null, fill the barrier with this color. /// If non-null, fill the barrier with this color.
///
/// See also:
///
/// * [ModalRoute.barrierColor], which controls this property for the
/// [AnimatedModalBarrier] built by [ModalRoute] pages.
Animation<Color> get color => listenable; Animation<Color> get color => listenable;
/// Whether touching the barrier will pop the current route off the [Navigator]. /// Whether touching the barrier will pop the current route off the [Navigator].
///
/// See also:
///
/// * [ModalRoute.barrierDismissible], which controls this property for the
/// [AnimatedModalBarrier] built by [ModalRoute] pages.
final bool dismissible; final bool dismissible;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return new ModalBarrier( return new ModalBarrier(
color: color?.value, color: color?.value,
dismissible: dismissible dismissible: dismissible,
); );
} }
} }
...@@ -518,7 +518,7 @@ abstract class ModalRoute<T> extends TransitionRoute<T> with LocalHistoryRoute<T ...@@ -518,7 +518,7 @@ abstract class ModalRoute<T> extends TransitionRoute<T> with LocalHistoryRoute<T
/// ``` /// ```
/// ///
/// The given [BuildContext] will be rebuilt if the state of the route changes /// The given [BuildContext] will be rebuilt if the state of the route changes
/// (specifically, if [Route.isCurrent] or [Route.canPop] change value). /// (specifically, if [isCurrent] or [canPop] change value).
static ModalRoute<dynamic> of(BuildContext context) { static ModalRoute<dynamic> of(BuildContext context) {
final _ModalScopeStatus widget = context.inheritFromWidgetOfExactType(_ModalScopeStatus); final _ModalScopeStatus widget = context.inheritFromWidgetOfExactType(_ModalScopeStatus);
return widget?.route; return widget?.route;
...@@ -736,13 +736,46 @@ abstract class ModalRoute<T> extends TransitionRoute<T> with LocalHistoryRoute<T ...@@ -736,13 +736,46 @@ abstract class ModalRoute<T> extends TransitionRoute<T> with LocalHistoryRoute<T
// The API for subclasses to override - used by this class // The API for subclasses to override - used by this class
/// Whether you can dismiss this route by tapping the modal barrier. /// Whether you can dismiss this route by tapping the modal barrier.
///
/// The modal barrier is the scrim that is rendered behind each route, which
/// generally prevents the user from interacting with the route below the
/// current route, and normally partially obscures such routes.
///
/// For example, when a dialog is on the screen, the page below the dialog is
/// usually darkened by the modal barrier.
///
/// If [barrierDismissible] is true, then tapping this barrier will cause the
/// current route to be popped (see [Navigator.pop]) with null as the value.
///
/// If [barrierDismissible] is false, then tapping the barrier has no effect.
///
/// See also:
///
/// * [barrierColor], which controls the color of the scrim for this route.
/// * [ModalBarrier], the widget that implements this feature.
bool get barrierDismissible; bool get barrierDismissible;
/// The color to use for the modal barrier. If this is null, the barrier will /// The color to use for the modal barrier. If this is null, the barrier will
/// be transparent. /// be transparent.
/// ///
/// The modal barrier is the scrim that is rendered behind each route, which
/// generally prevents the user from interacting with the route below the
/// current route, and normally partially obscures such routes.
///
/// For example, when a dialog is on the screen, the page below the dialog is
/// usually darkened by the modal barrier.
///
/// The color is ignored, and the barrier made invisible, when [offstage] is /// The color is ignored, and the barrier made invisible, when [offstage] is
/// true. /// true.
///
/// While the route is animating into position, the color is animated from
/// transparent to the specified color.
///
/// See also:
///
/// * [barrierDismissible], which controls the behavior of the barrier when
/// tapped.
/// * [ModalBarrier], the widget that implements this feature.
Color get barrierColor; Color get barrierColor;
/// Whether the route should remain in memory when it is inactive. If this is /// Whether the route should remain in memory when it is inactive. If this is
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment