Commit 127545a3 authored by Ian Hickson's avatar Ian Hickson Committed by GitHub

More doc fixes. (#9848)

parent d1e89522
#!/bin/bash #!/bin/bash
set -e set -e
# If you want to run this script locally, make sure you run it from
# the root of the flutter repository.
# Install dartdoc. # Install dartdoc.
pub global activate dartdoc 0.11.0 pub global activate dartdoc 0.11.0
# This script generates a unified doc set, and creates # This script generates a unified doc set, and creates
# a custom index.html, placing everything into dev/docs/doc # a custom index.html, placing everything into dev/docs/doc.
(cd dev/tools; pub get) (cd dev/tools; pub get)
FLUTTER_ROOT=$PWD dart dev/tools/dartdoc.dart FLUTTER_ROOT=$PWD dart dev/tools/dartdoc.dart
FLUTTER_ROOT=$PWD dart dev/tools/javadoc.dart FLUTTER_ROOT=$PWD dart dev/tools/javadoc.dart
...@@ -13,8 +16,7 @@ FLUTTER_ROOT=$PWD dart dev/tools/javadoc.dart ...@@ -13,8 +16,7 @@ FLUTTER_ROOT=$PWD dart dev/tools/javadoc.dart
# Ensure google webmaster tools can verify our site. # Ensure google webmaster tools can verify our site.
cp dev/docs/google2ed1af765c529f57.html dev/docs/doc cp dev/docs/google2ed1af765c529f57.html dev/docs/doc
# Upload new API docs when on Travis and branch is master # Upload new API docs when on Travis and branch is master.
if [ "$TRAVIS_PULL_REQUEST" = "false" ] && [ "$TRAVIS_BRANCH" = "master" ]; then if [ "$TRAVIS_PULL_REQUEST" = "false" ] && [ "$TRAVIS_BRANCH" = "master" ]; then
cd dev/docs cd dev/docs
firebase deploy --project docs-flutter-io firebase deploy --project docs-flutter-io
......
...@@ -33,12 +33,12 @@ const Color _kBarrierColor = Colors.black54; ...@@ -33,12 +33,12 @@ const Color _kBarrierColor = Colors.black54;
/// function. /// function.
/// ///
/// The [BottomSheet] widget itself is rarely used directly. Instead, prefer to /// The [BottomSheet] widget itself is rarely used directly. Instead, prefer to
/// create a persistent bottom sheet with [Scaffold.showBottomSheet] and a modal /// create a persistent bottom sheet with [ScaffoldState.showBottomSheet] and a modal
/// bottom sheet with [showModalBottomSheet]. /// bottom sheet with [showModalBottomSheet].
/// ///
/// See also: /// See also:
/// ///
/// * [Scaffold.showBottomSheet] /// * [ScaffoldState.showBottomSheet]
/// * [showModalBottomSheet] /// * [showModalBottomSheet]
/// * <https://material.google.com/components/bottom-sheets.html> /// * <https://material.google.com/components/bottom-sheets.html>
class BottomSheet extends StatefulWidget { class BottomSheet extends StatefulWidget {
...@@ -246,7 +246,7 @@ class _ModalBottomSheetRoute<T> extends PopupRoute<T> { ...@@ -246,7 +246,7 @@ class _ModalBottomSheetRoute<T> extends PopupRoute<T> {
/// A closely related widget is a persistent bottom sheet, which shows /// A closely related widget is a persistent bottom sheet, which shows
/// information that supplements the primary content of the app without /// information that supplements the primary content of the app without
/// preventing the use from interacting with the app. Persistent bottom sheets /// preventing the use from interacting with the app. Persistent bottom sheets
/// can be created and displayed with the [Scaffold.showBottomSheet] function. /// can be created and displayed with the [ScaffoldState.showBottomSheet] function.
/// ///
/// Returns a `Future` that resolves to the value (if any) that was passed to /// Returns a `Future` that resolves to the value (if any) that was passed to
/// [Navigator.pop] when the modal bottom sheet was closed. /// [Navigator.pop] when the modal bottom sheet was closed.
......
...@@ -13,7 +13,7 @@ import 'theme.dart'; ...@@ -13,7 +13,7 @@ import 'theme.dart';
/// ///
/// Dividers can be used in lists, [Drawer]s, and elsewhere to separate content /// Dividers can be used in lists, [Drawer]s, and elsewhere to separate content
/// vertically. To create a one-pixel divider between items in a list, consider /// vertically. To create a one-pixel divider between items in a list, consider
/// using [ListTile.divideItems], which is optimized for this case. /// using [ListTile.divideTiles], which is optimized for this case.
/// ///
/// The box's total height is controlled by [height]. The appropriate padding is /// The box's total height is controlled by [height]. The appropriate padding is
/// automatically computed from the height. /// automatically computed from the height.
......
...@@ -11,7 +11,8 @@ import 'dart:ui' as ui show lerpDouble; ...@@ -11,7 +11,8 @@ import 'dart:ui' as ui show lerpDouble;
/// widget subtree. /// widget subtree.
/// ///
/// To obtain the current icon theme, use [IconTheme.of]. To convert an icon /// To obtain the current icon theme, use [IconTheme.of]. To convert an icon
/// theme to a version with all the fields filled in, use [new fallback]. /// theme to a version with all the fields filled in, use [new
/// IconThemeData.fallback].
class IconThemeData { class IconThemeData {
/// Creates an icon theme data. /// Creates an icon theme data.
/// ///
......
...@@ -108,10 +108,11 @@ bool debugPrintMarkNeedsLayoutStacks = false; ...@@ -108,10 +108,11 @@ bool debugPrintMarkNeedsLayoutStacks = false;
/// Check the intrinsic sizes of each [RenderBox] during layout. /// Check the intrinsic sizes of each [RenderBox] during layout.
bool debugCheckIntrinsicSizes = false; bool debugCheckIntrinsicSizes = false;
/// Adds [Timeline] events for every RenderObject painted. /// Adds [dart:developer.Timeline] events for every RenderObject painted.
/// ///
/// For details on how to use [Timeline] events in the Dart Observatory to /// For details on how to use [dart:developer.Timeline] events in the Dart
/// optimize your app, see: https://fuchsia.googlesource.com/sysui/+/master/docs/performance.md /// Observatory to optimize your app, see:
/// <https://fuchsia.googlesource.com/sysui/+/master/docs/performance.md>
bool debugProfilePaintsEnabled = false; bool debugProfilePaintsEnabled = false;
......
...@@ -533,7 +533,7 @@ class PaintingContext { ...@@ -533,7 +533,7 @@ class PaintingContext {
/// [BoxConstraints.debugAssertIsValid] for an example of the detailed checks /// [BoxConstraints.debugAssertIsValid] for an example of the detailed checks
/// that can be made. /// that can be made.
/// ///
/// * The [operator ==] and [hashCode] members, so that constraints can be /// * The [==] operator and the [hashCode] getter, so that constraints can be
/// compared for equality. If a render object is given constraints that are /// compared for equality. If a render object is given constraints that are
/// equal, then the rendering library will avoid laying the object out again /// equal, then the rendering library will avoid laying the object out again
/// if it is not dirty. /// if it is not dirty.
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
import 'dart:ui' as ui; import 'dart:ui' as ui show Gradient, Shader, TextBox;
import 'package:flutter/gestures.dart'; import 'package:flutter/gestures.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
...@@ -190,7 +190,8 @@ class RenderParagraph extends RenderBox { ...@@ -190,7 +190,8 @@ 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 effect. /// Whether this paragraph currently has a [ui.Shader] for its overflow
/// effect.
/// ///
/// Used to test this object. Not for use in production. /// Used to test this object. Not for use in production.
@visibleForTesting @visibleForTesting
......
...@@ -839,10 +839,11 @@ class RenderBackdropFilter extends RenderProxyBox { ...@@ -839,10 +839,11 @@ class RenderBackdropFilter extends RenderProxyBox {
assert(filter != null); assert(filter != null);
} }
/// The image filter to apply to the existing painted content before painting the child. /// The image filter to apply to the existing painted content before painting
/// the child.
/// ///
/// For example, consider using [ui.ImageFilter.blur] to create a backdrop /// For example, consider using [new ui.ImageFilter.blur] to create a backdrop
/// blur effect /// blur effect.
ui.ImageFilter get filter => _filter; ui.ImageFilter get filter => _filter;
ui.ImageFilter _filter; ui.ImageFilter _filter;
set filter(ui.ImageFilter value) { set filter(ui.ImageFilter value) {
......
...@@ -29,7 +29,7 @@ abstract class SemanticsActionHandler { // ignore: one_member_abstracts ...@@ -29,7 +29,7 @@ abstract class SemanticsActionHandler { // ignore: one_member_abstracts
void performAction(SemanticsAction action); void performAction(SemanticsAction action);
} }
/// The type of function returned by [RenderObject.getSemanticsAnnotators()]. /// Signature for functions returned by [RenderObject.semanticsAnnotator].
/// ///
/// These callbacks are called with the [SemanticsNode] object that /// These callbacks are called with the [SemanticsNode] object that
/// corresponds to the [RenderObject]. (One [SemanticsNode] can /// corresponds to the [RenderObject]. (One [SemanticsNode] can
......
...@@ -451,8 +451,8 @@ enum TableCellVerticalAlignment { ...@@ -451,8 +451,8 @@ enum TableCellVerticalAlignment {
/// Cells with this alignment are aligned such that they all share the same /// Cells with this alignment are aligned such that they all share the same
/// baseline. Cells with no baseline are top-aligned instead. The baseline /// baseline. Cells with no baseline are top-aligned instead. The baseline
/// used is specified by [RenderTable.baseline]. It is not valid to use the /// used is specified by [RenderTable.textBaseline]. It is not valid to use
/// baseline value if [RenderTable.textBaseline] is not specified. /// the baseline value if [RenderTable.textBaseline] is not specified.
/// ///
/// This vertial alignment is relatively expensive because it causes the table /// This vertial alignment is relatively expensive because it causes the table
/// to compute the baseline for each cell in the row. /// to compute the baseline for each cell in the row.
......
...@@ -10,7 +10,8 @@ import 'package:http/http.dart' as http; ...@@ -10,7 +10,8 @@ import 'package:http/http.dart' as http;
/// This can be set to a new function to override the default logic for creating /// This can be set to a new function to override the default logic for creating
/// HTTP clients, for example so that all logic in the framework that triggers /// HTTP clients, for example so that all logic in the framework that triggers
/// HTTP requests will use the same `UserAgent` header, or so that tests can /// HTTP requests will use the same `UserAgent` header, or so that tests can
/// provide an [http.MockClient]. /// provide an [http.testing.MockClient].
// TODO(ianh): Fix the link to MockClient once dartdoc has a solution.
ValueGetter<http.Client> createHttpClient = () { ValueGetter<http.Client> createHttpClient = () {
return new http.Client(); return new http.Client();
}; };
...@@ -12,10 +12,10 @@ const int _kDefaultSize = 1000; ...@@ -12,10 +12,10 @@ const int _kDefaultSize = 1000;
/// size can be adjusted using [maximumSize]. Images that are actively in use /// size can be adjusted using [maximumSize]. Images that are actively in use
/// (i.e. to which the application is holding references, either via /// (i.e. to which the application is holding references, either via
/// [ImageStream] objects, [ImageStreamCompleter] objects, [ImageInfo] objects, /// [ImageStream] objects, [ImageStreamCompleter] objects, [ImageInfo] objects,
/// or raw [Image] objects) may get evicted from the cache (and thus need to /// or raw [dart:ui.Image] objects) may get evicted from the cache (and thus
/// be refetched from the network if they are referenced in the [putIfAbsent] /// need to be refetched from the network if they are referenced in the
/// method), but the raw bits are kept in memory for as long as the application /// [putIfAbsent] method), but the raw bits are kept in memory for as long as
/// is using them. /// the application is using them.
/// ///
/// The [putIfAbsent] method is the main entry-point to the cache API. It /// The [putIfAbsent] method is the main entry-point to the cache API. It
/// returns the previously cached [ImageStreamCompleter] for the given key, if /// returns the previously cached [ImageStreamCompleter] for the given key, if
......
...@@ -143,8 +143,9 @@ class ImageConfiguration { ...@@ -143,8 +143,9 @@ class ImageConfiguration {
/// ///
/// The type argument `T` is the type of the object used to represent a resolved /// The type argument `T` is the type of the object used to represent a resolved
/// configuration. This is also the type used for the key in the image cache. It /// configuration. This is also the type used for the key in the image cache. It
/// should be immutable and implement [operator ==] and [hashCode]. Subclasses should /// should be immutable and implement the [==] operator and the [hashCode]
/// subclass a variant of [ImageProvider] with an explicit `T` type argument. /// getter. Subclasses should subclass a variant of [ImageProvider] with an
/// explicit `T` type argument.
/// ///
/// The type argument does not have to be specified when using the type as an /// The type argument does not have to be specified when using the type as an
/// argument (where any image provider is acceptable). /// argument (where any image provider is acceptable).
...@@ -197,7 +198,7 @@ abstract class ImageProvider<T> { ...@@ -197,7 +198,7 @@ abstract class ImageProvider<T> {
/// method will fetch. Different [ImageProvider]s given the same constructor /// method will fetch. Different [ImageProvider]s given the same constructor
/// arguments and [ImageConfiguration] objects should return keys that are /// arguments and [ImageConfiguration] objects should return keys that are
/// '==' to each other (possibly by using a class for the key that itself /// '==' to each other (possibly by using a class for the key that itself
/// implements [operator ==]). /// implements [==]).
@protected @protected
Future<T> obtainKey(ImageConfiguration configuration); Future<T> obtainKey(ImageConfiguration configuration);
......
...@@ -34,7 +34,7 @@ class ImageInfo { ...@@ -34,7 +34,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 [Image.width] and [Image.height] properties) are double the /// by the [ui.Image.width] and [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;
......
...@@ -16,7 +16,7 @@ import 'platform_channel.dart'; ...@@ -16,7 +16,7 @@ import 'platform_channel.dart';
/// ///
/// See also: /// See also:
/// ///
/// * [MessageChannel], which use [MessageCodec]s for communication /// * [BasicMessageChannel], which use [MessageCodec]s for communication
/// between Flutter and platform plugins. /// between Flutter and platform plugins.
abstract class MessageCodec<T> { abstract class MessageCodec<T> {
/// Encodes the specified [message] in binary. /// Encodes the specified [message] in binary.
......
...@@ -17,7 +17,7 @@ import 'platform_messages.dart'; ...@@ -17,7 +17,7 @@ import 'platform_messages.dart';
/// Messages are encoded into binary before being sent, and binary messages /// Messages are encoded into binary before being sent, and binary messages
/// received are decoded into Dart values. The [MessageCodec] used must be /// received are decoded into Dart values. The [MessageCodec] used must be
/// compatible with the one used by the platform plugin. This can be achieved /// compatible with the one used by the platform plugin. This can be achieved
/// by creating a `BasicMessageChannel` counterpart of this channel on the /// by creating a [BasicMessageChannel] counterpart of this channel on the
/// platform side. The Dart type of messages sent and received is [T], /// platform side. The Dart type of messages sent and received is [T],
/// but only the values supported by the specified [MessageCodec] can be used. /// but only the values supported by the specified [MessageCodec] can be used.
/// The use of unsupported values should be considered programming errors, and /// The use of unsupported values should be considered programming errors, and
......
...@@ -58,13 +58,15 @@ class AnimatedCrossFade extends StatefulWidget { ...@@ -58,13 +58,15 @@ class AnimatedCrossFade extends StatefulWidget {
assert(sizeCurve != null), assert(sizeCurve != null),
super(key: key); super(key: key);
/// The child that is visible when [crossFadeState] is [showFirst]. It fades /// The child that is visible when [crossFadeState] is
/// out when transitioning [crossFadeState] from [CrossFadeState.showFirst] to /// [CrossFadeState.showFirst]. It fades out when transitioning
/// [crossFadeState] from [CrossFadeState.showFirst] to
/// [CrossFadeState.showSecond] and vice versa. /// [CrossFadeState.showSecond] and vice versa.
final Widget firstChild; final Widget firstChild;
/// The child that is visible when [crossFadeState] is [showSecond]. It fades /// The child that is visible when [crossFadeState] is
/// in when transitioning [crossFadeState] from [CrossFadeState.showFirst] to /// [CrossFadeState.showSecond]. It fades in when transitioning
/// [crossFadeState] from [CrossFadeState.showFirst] to
/// [CrossFadeState.showSecond] and vice versa. /// [CrossFadeState.showSecond] and vice versa.
final Widget secondChild; final Widget secondChild;
......
...@@ -154,7 +154,7 @@ abstract class WidgetsBinding extends BindingBase implements GestureBinding, Ren ...@@ -154,7 +154,7 @@ abstract class WidgetsBinding extends BindingBase implements GestureBinding, Ren
/// Notifies all the observers using /// Notifies all the observers using
/// [WidgetsBindingObserver.didChangeMetrics]. /// [WidgetsBindingObserver.didChangeMetrics].
/// ///
/// See [window.onMetricsChanged]. /// See [Window.onMetricsChanged].
@override @override
void handleMetricsChanged() { void handleMetricsChanged() {
super.handleMetricsChanged(); super.handleMetricsChanged();
...@@ -293,7 +293,7 @@ abstract class WidgetsBinding extends BindingBase implements GestureBinding, Ren ...@@ -293,7 +293,7 @@ abstract class WidgetsBinding extends BindingBase implements GestureBinding, Ren
/// Each frame consists of the following phases: /// Each frame consists of the following phases:
/// ///
/// 1. The animation phase: The [handleBeginFrame] method, which is registered /// 1. The animation phase: The [handleBeginFrame] method, which is registered
/// with [window.onBeginFrame], invokes all the transient frame callbacks /// with [Window.onBeginFrame], invokes all the transient frame callbacks
/// registered with [scheduleFrameCallback], in /// registered with [scheduleFrameCallback], in
/// registration order. This includes all the [Ticker] instances that are /// registration order. This includes all the [Ticker] instances that are
/// driving [AnimationController] objects, which means all of the active /// driving [AnimationController] objects, which means all of the active
...@@ -305,7 +305,7 @@ abstract class WidgetsBinding extends BindingBase implements GestureBinding, Ren ...@@ -305,7 +305,7 @@ abstract class WidgetsBinding extends BindingBase implements GestureBinding, Ren
/// completed this frame. /// completed this frame.
/// ///
/// After [handleBeginFrame], [handleDrawFrame], which is registered with /// After [handleBeginFrame], [handleDrawFrame], which is registered with
/// [window.onDrawFrame], is called, which invokes all the persistent frame /// [Window.onDrawFrame], is called, which invokes all the persistent frame
/// callbacks, of which the most notable is this method, [drawFrame], which /// callbacks, of which the most notable is this method, [drawFrame], which
/// proceeds as follows: /// proceeds as follows:
/// ///
...@@ -331,7 +331,7 @@ abstract class WidgetsBinding extends BindingBase implements GestureBinding, Ren ...@@ -331,7 +331,7 @@ abstract class WidgetsBinding extends BindingBase implements GestureBinding, Ren
/// sent to the GPU. /// sent to the GPU.
/// ///
/// 8. The semantics phase: All the dirty [RenderObject]s in the system have /// 8. The semantics phase: All the dirty [RenderObject]s in the system have
/// their semantics updated (see [RenderObject.SemanticsAnnotator]). This /// their semantics updated (see [RenderObject.semanticsAnnotator]). This
/// generates the [SemanticsNode] tree. See /// generates the [SemanticsNode] tree. See
/// [RenderObject.markNeedsSemanticsUpdate] for further details on marking an /// [RenderObject.markNeedsSemanticsUpdate] for further details on marking an
/// object dirty for semantics. /// object dirty for semantics.
......
...@@ -688,16 +688,16 @@ typedef void StateSetter(VoidCallback fn); ...@@ -688,16 +688,16 @@ typedef void StateSetter(VoidCallback fn);
/// subtree. /// subtree.
/// * During this time, a parent widget might rebuild and request that this /// * During this time, a parent widget might rebuild and request that this
/// location in the tree update to display a new widget with the same /// location in the tree update to display a new widget with the same
/// [runtimeType] and [key]. When this happens, the framework will update the /// [runtimeType] and [Widget.key]. When this happens, the framework will
/// [widget] property to refer to the new widget and then call the /// update the [widget] property to refer to the new widget and then call the
/// [didUpdateWidget] method with the previous widget as an argument. /// [didUpdateWidget] method with the previous widget as an argument. [State]
/// [State] objects should override [didUpdateWidget] to respond to changes /// objects should override [didUpdateWidget] to respond to changes in their
/// in their associated wiget (e.g., to start implicit animations). /// associated wiget (e.g., to start implicit animations). The framework
/// The framework always calls [build] after calling [didUpdateWidget], which /// always calls [build] after calling [didUpdateWidget], which means any
/// means any calls to [setState] in [didUpdateWidget] are redundant. /// calls to [setState] in [didUpdateWidget] are redundant.
/// * If the subtree containing the [State] object is removed from the tree /// * If the subtree containing the [State] object is removed from the tree
/// (e.g., because the parent built a widget with a different [runtimeType] /// (e.g., because the parent built a widget with a different [runtimeType]
/// or [key]), the framework calls the [deactivate] method. Subclasses /// or [Widget.key]), the framework calls the [deactivate] method. Subclasses
/// should override this method to clean up any links between this object /// should override this method to clean up any links between this object
/// and other elements in the tree (e.g. if you have provided an ancestor /// and other elements in the tree (e.g. if you have provided an ancestor
/// with a pointer to a descendant's [RenderObject]). /// with a pointer to a descendant's [RenderObject]).
...@@ -3614,8 +3614,8 @@ class InheritedElement extends ProxyElement { ...@@ -3614,8 +3614,8 @@ class InheritedElement extends ProxyElement {
/// ///
/// [updateChild] should be called for children in their logical order. The /// [updateChild] should be called for children in their logical order. The
/// order can matter; for example, if two of the children use [PageStorage]'s /// order can matter; for example, if two of the children use [PageStorage]'s
/// `writeState` feature in their build method (and neither has a [key]), then /// `writeState` feature in their build method (and neither has a [Widget.key]),
/// the state written by the first will be overwritten by the second. /// then the state written by the first will be overwritten by the second.
/// ///
/// #### Dynamically determining the children during the build phase /// #### Dynamically determining the children during the build phase
/// ///
...@@ -3629,7 +3629,7 @@ class InheritedElement extends ProxyElement { ...@@ -3629,7 +3629,7 @@ class InheritedElement extends ProxyElement {
/// the [update] method won't work: layout of this element's render object /// the [update] method won't work: layout of this element's render object
/// hasn't started yet at that point. Instead, the [update] method can mark the /// hasn't started yet at that point. Instead, the [update] method can mark the
/// render object as needing layout (see [RenderObject.markNeedsLayout]), and /// render object as needing layout (see [RenderObject.markNeedsLayout]), and
/// then the render object's [RenderOBject.performLayout] method can call back /// then the render object's [RenderObject.performLayout] method can call back
/// to the element to have it generate the widgets and call [updateChild] /// to the element to have it generate the widgets and call [updateChild]
/// accordingly. /// accordingly.
/// ///
......
...@@ -70,7 +70,7 @@ abstract class Route<T> { ...@@ -70,7 +70,7 @@ abstract class Route<T> {
void didReplace(Route<dynamic> oldRoute) { } void didReplace(Route<dynamic> oldRoute) { }
/// Returns false if this route wants to veto a [Navigator.pop]. This method is /// Returns false if this route wants to veto a [Navigator.pop]. This method is
/// called by [Navigator.willPop]. /// called by [Navigator.maybePop].
/// ///
/// By default, routes veto a pop if they're the first route in the history /// By default, routes veto a pop if they're the first route in the history
/// (i.e., if [isFirst]). This behavior prevents the user from popping the /// (i.e., if [isFirst]). This behavior prevents the user from popping the
...@@ -586,7 +586,7 @@ class Navigator extends StatefulWidget { ...@@ -586,7 +586,7 @@ class Navigator extends StatefulWidget {
return Navigator.of(context).pop(result); return Navigator.of(context).pop(result);
} }
/// Calls [pop()] repeatedly until the predicate returns true. /// Calls [pop] repeatedly until the predicate returns true.
/// ///
/// The predicate may be applied to the same route more than once if /// The predicate may be applied to the same route more than once if
/// [Route.willHandlePopInternally] is true. /// [Route.willHandlePopInternally] is true.
......
...@@ -764,9 +764,9 @@ abstract class ModalRoute<T> extends TransitionRoute<T> with LocalHistoryRoute<T ...@@ -764,9 +764,9 @@ abstract class ModalRoute<T> extends TransitionRoute<T> with LocalHistoryRoute<T
Animation<double> get secondaryAnimation => _secondaryAnimationProxy; Animation<double> get secondaryAnimation => _secondaryAnimationProxy;
ProxyAnimation _secondaryAnimationProxy; ProxyAnimation _secondaryAnimationProxy;
/// Return the value of the first callback added with /// Returns the value of the first callback added with
/// [addScopedWillPopCallback] that returns false. Otherwise return /// [addScopedWillPopCallback] that returns false. If they all return true,
/// [super.willPop()]. /// returns the inherited method's result (see [Route.willPop]).
/// ///
/// Typically this method is not overridden because applications usually /// Typically this method is not overridden because applications usually
/// don't create modal routes directly, they use higher level primitives /// don't create modal routes directly, they use higher level primitives
......
...@@ -361,7 +361,7 @@ class DragScrollActivity extends ScrollActivity { ...@@ -361,7 +361,7 @@ class DragScrollActivity extends ScrollActivity {
/// ///
/// [BallisticScrollActivity] is also used to restore a scroll view to a valid /// [BallisticScrollActivity] is also used to restore a scroll view to a valid
/// scroll offset when the geometry of the scroll view changes. In these /// scroll offset when the geometry of the scroll view changes. In these
/// situations, the [simulation] typically starts with a zero velocity. /// situations, the [Simulation] typically starts with a zero velocity.
/// ///
/// See also: /// See also:
/// ///
......
...@@ -33,8 +33,11 @@ export 'src/health.dart' show ...@@ -33,8 +33,11 @@ export 'src/health.dart' show
export 'src/message.dart' show export 'src/message.dart' show
Command, Command,
Result; Result;
export 'src/render_tree.dart' show
RenderTree;
export 'src/timeline.dart' show export 'src/timeline.dart' show
Timeline, Timeline,
TimelineEvent; TimelineEvent;
export 'src/timeline_summary.dart' show export 'src/timeline_summary.dart' show
TimelineSummary; TimelineSummary,
kBuildBudget;
...@@ -14,7 +14,6 @@ import 'package:flutter/services.dart'; ...@@ -14,7 +14,6 @@ import 'package:flutter/services.dart';
import 'package:flutter/widgets.dart'; import 'package:flutter/widgets.dart';
import 'package:http/http.dart' as http; import 'package:http/http.dart' as http;
import 'package:http/testing.dart' as http; import 'package:http/testing.dart' as http;
import 'package:meta/meta.dart';
import 'package:quiver/testing/async.dart'; import 'package:quiver/testing/async.dart';
import 'package:quiver/time.dart'; import 'package:quiver/time.dart';
import 'package:test/test.dart' as test_package; import 'package:test/test.dart' as test_package;
...@@ -54,7 +53,7 @@ enum EnginePhase { ...@@ -54,7 +53,7 @@ enum EnginePhase {
flushSemantics, flushSemantics,
/// The final phase in the rendering library, wherein semantics information is /// The final phase in the rendering library, wherein semantics information is
/// sent to the embedder. See [SemanticsNode.sendSemanticsUpdate]. /// sent to the embedder. See [SemanticsOwner.sendSemanticsUpdate].
sendSemanticsUpdate, sendSemanticsUpdate,
} }
......
name: flutter_test name: flutter_test
dependencies: dependencies:
quiver: ^0.24.0
# The flutter tools depend on very specific internal implementation # The flutter tools depend on very specific internal implementation
# details of the 'test' package, which change between versions, so # details of the 'test' package, which change between versions, so
# here we pin it precisely to avoid version skew across our packages. # here we pin it precisely to avoid version skew across our packages.
test: 0.12.20 test: 0.12.20
# We use FakeAsync and other testing utilities.
quiver: ^0.24.0
flutter: flutter:
sdk: flutter sdk: flutter
...@@ -14,3 +15,9 @@ dependencies: ...@@ -14,3 +15,9 @@ dependencies:
# need to be able to unmangle the stack traces that it passed to # need to be able to unmangle the stack traces that it passed to
# stack_trace. See https://github.com/dart-lang/test/issues/590 # stack_trace. See https://github.com/dart-lang/test/issues/590
stack_trace: any # use version expected by test package stack_trace: any # use version expected by test package
# We override the createHttpClient in flutter with a MockClient.
http: any # use version expected by flutter
# Used by globalToLocal et al.
vector_math: any # use version expected by flutter
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