Fix documentation based on dartdoc's warnings (#11428)

diff --git a/dev/tools/dartdoc.dart b/dev/tools/dartdoc.dart
index e50d449..b474f4a 100644
--- a/dev/tools/dartdoc.dart
+++ b/dev/tools/dartdoc.dart
@@ -10,6 +10,12 @@
 import 'package:path/path.dart' as path;
 import 'update_versions.dart';
 
+/// Whether to report all error messages (true) or attempt to filter out some
+/// known false positives (false).
+///
+/// Set this to false locally if you want to address Flutter-specific issues.
+const bool kVerbose = true; // please leave this as true on Travis
+
 const String kDocRoot = 'dev/docs/doc';
 
 /// This script expects to run with the cwd as the root of the flutter repo. It
@@ -68,8 +74,8 @@
       'FLUTTER_ROOT': Directory.current.path,
     },
   );
-  printStream(process.stdout);
-  printStream(process.stderr);
+  printStream(process.stdout, prefix: 'pub:stdout: ');
+  printStream(process.stderr, prefix: 'pub:stderr: ');
   final int code = await process.exitCode;
   if (code != 0)
     exit(code);
@@ -94,8 +100,12 @@
     '--favicon=favicon.ico',
     '--use-categories',
     '--category-order', 'flutter,Dart Core,flutter_test,flutter_driver',
+    '--show-warnings',
+    '--auto-include-dependencies',
   ];
 
+  // Explicitly list all the packages in //flutter/packages/* that are
+  // not listed 'nodoc' in their pubspec.yaml.
   for (String libraryRef in libraryRefs(diskPath: true)) {
     args.add('--include-external');
     args.add(libraryRef);
@@ -106,8 +116,18 @@
     args,
     workingDirectory: 'dev/docs',
   );
-  printStream(process.stdout);
-  printStream(process.stderr);
+  printStream(process.stdout, prefix: 'dartdoc:stdout: ',
+    filter: kVerbose ? const <Pattern>[] : <Pattern>[
+      new RegExp(r'^generating docs for library '), // unnecessary verbosity
+      new RegExp(r'^pars'), // unnecessary verbosity
+    ],
+  );
+  printStream(process.stderr, prefix: 'dartdoc:stderr: ',
+    filter: kVerbose ? const <Pattern>[] : <Pattern>[
+      new RegExp(r'^ warning: generic type handled as HTML:'), // https://github.com/dart-lang/dartdoc/issues/1475
+      new RegExp(r'^ warning: .+: \(.+/\.pub-cache/hosted/pub.dartlang.org/.+\)'), // packages outside our control
+    ],
+  );
   final int exitCode = await process.exitCode;
 
   if (exitCode != 0)
@@ -194,15 +214,17 @@
 void addHtmlBaseToIndex() {
   final File indexFile = new File('$kDocRoot/index.html');
   String indexContents = indexFile.readAsStringSync();
-  indexContents = indexContents.replaceFirst('</title>\n',
-    '</title>\n  <base href="./flutter/">\n');
+  indexContents = indexContents.replaceFirst(
+    '</title>\n',
+    '</title>\n  <base href="./flutter/">\n',
+  );
   indexContents = indexContents.replaceAll(
     'href="Android/Android-library.html"',
-    'href="https://docs.flutter.io/javadoc/"'
+    'href="/javadoc/"',
   );
   indexContents = indexContents.replaceAll(
       'href="iOS/iOS-library.html"',
-      'href="https://docs.flutter.io/objcdoc/"'
+      'href="/objcdoc/"',
   );
 
   indexFile.writeAsStringSync(indexContents);
@@ -257,9 +279,14 @@
   }
 }
 
-void printStream(Stream<List<int>> stream) {
+void printStream(Stream<List<int>> stream, { String prefix: '', List<Pattern> filter: const <Pattern>[] }) {
+  assert(prefix != null);
+  assert(filter != null);
   stream
     .transform(UTF8.decoder)
     .transform(const LineSplitter())
-    .listen(print);
+    .listen((String line) {
+      if (!filter.any((Pattern pattern) => line.contains(pattern)))
+        print('$prefix$line'.trim());
+    });
 }
diff --git a/dev/tools/java_and_objc_doc.dart b/dev/tools/java_and_objc_doc.dart
index f02f9d7..0998678 100644
--- a/dev/tools/java_and_objc_doc.dart
+++ b/dev/tools/java_and_objc_doc.dart
@@ -13,21 +13,16 @@
 /// This script downloads an archive of Javadoc and objc doc for the engine from
 /// the artifact store and extracts them to the location used for Dartdoc.
 Future<Null> main(List<String> args) async {
-  final String engineVersion =
-      new File('bin/internal/engine.version').readAsStringSync().trim();
+  final String engineVersion = new File('bin/internal/engine.version').readAsStringSync().trim();
 
-  final String javadocUrl =
-      'https://storage.googleapis.com/flutter_infra/flutter/$engineVersion/android-javadoc.zip';
+  final String javadocUrl = 'https://storage.googleapis.com/flutter_infra/flutter/$engineVersion/android-javadoc.zip';
   generateDocs(javadocUrl, 'javadoc', 'io/flutter/view/FlutterView.html');
 
-  final String objcdocUrl =
-      'https://storage.googleapis.com/flutter_infra/flutter/$engineVersion/ios-objcdoc.zip';
-  generateDocs(
-      objcdocUrl, 'objcdoc', 'Classes/FlutterViewController.html');
+  final String objcdocUrl = 'https://storage.googleapis.com/flutter_infra/flutter/$engineVersion/ios-objcdoc.zip';
+  generateDocs(objcdocUrl, 'objcdoc', 'Classes/FlutterViewController.html');
 }
 
-Future<Null> generateDocs(
-    final String url, String docName, String checkFile) async {
+Future<Null> generateDocs(String url, String docName, String checkFile) async {
   final http.Response response = await http.get(url);
 
   final Archive archive = new ZipDecoder().decodeBytes(response.bodyBytes);
diff --git a/packages/flutter/lib/foundation.dart b/packages/flutter/lib/foundation.dart
index 738b375..05ac8f4 100644
--- a/packages/flutter/lib/foundation.dart
+++ b/packages/flutter/lib/foundation.dart
@@ -23,6 +23,8 @@
 // bool _lights;
 // bool _visible;
 // bool inherit;
+// int columns;
+// int rows;
 // class Cat { }
 // double _volume;
 // dynamic _calculation;
diff --git a/packages/flutter/lib/src/cupertino/colors.dart b/packages/flutter/lib/src/cupertino/colors.dart
index 8765b3e..62dc7b2 100644
--- a/packages/flutter/lib/src/cupertino/colors.dart
+++ b/packages/flutter/lib/src/cupertino/colors.dart
@@ -22,7 +22,7 @@
   ///
   /// See also:
   ///
-  ///  * [Colors.white], the same color, in the material design palette.
+  ///  * [material.Colors.white], the same color, in the material design palette.
   ///  * [black], opaque black in the [CupertinoColors] palette.
   static const Color white = const Color(0xFFFFFFFF);
 
@@ -30,7 +30,8 @@
   ///
   /// See also:
   ///
-  ///  * [Colors.black], the same color, in the material design palette.
+  ///  * [material.Colors.black], the same color, in the material design palette.
+  ///  * [white], opaque white in the [CupertinoColors] palette.
   static const Color black = const Color(0xFF000000);
 
   /// Used in iOS 10 for light background fills such as the chat bubble background.
diff --git a/packages/flutter/lib/src/cupertino/nav_bar.dart b/packages/flutter/lib/src/cupertino/nav_bar.dart
index fe9bd9b..cfc59c5 100644
--- a/packages/flutter/lib/src/cupertino/nav_bar.dart
+++ b/packages/flutter/lib/src/cupertino/nav_bar.dart
@@ -41,7 +41,7 @@
     this.trailing,
     this.backgroundColor: _kDefaultNavBarBackgroundColor,
     this.actionsForegroundColor: CupertinoColors.activeBlue,
-  }) : assert(middle != null, 'There must be a middle widget, usually a title'),
+  }) : assert(middle != null, 'There must be a middle widget, usually a title.'),
       super(key: key);
 
   /// Widget to place at the start of the nav bar. Normally a back button
@@ -66,7 +66,8 @@
   /// Default color used for text and icons of the [leading] and [trailing]
   /// widgets in the nav bar.
   ///
-  /// The [title] remains black if it's a text as per iOS standard design.
+  /// The default color for text in the [middle] slot is always black, as per
+  /// iOS standard design.
   final Color actionsForegroundColor;
 
   /// True if the nav bar's background color has no transparency.
@@ -77,15 +78,28 @@
 
   @override
   Widget build(BuildContext context) {
-    Widget styledMiddle = middle;
-    if (styledMiddle.runtimeType == Text || styledMiddle.runtimeType == DefaultTextStyle) {
-      // Let the middle be black rather than `actionsForegroundColor` in case
-      // it's a plain text title.
-      styledMiddle = DefaultTextStyle.merge(
-        style: const TextStyle(color: CupertinoColors.black),
-        child: middle,
-      );
-    }
+    final TextStyle actionsStyle = new TextStyle(
+      fontSize: 17.0,
+      letterSpacing: -0.24,
+      color: actionsForegroundColor,
+    );
+
+    final Widget styledLeading = leading == null ? null : DefaultTextStyle.merge(
+      style: actionsStyle,
+      child: leading,
+    );
+
+    final Widget styledTrailing = trailing == null ? null : DefaultTextStyle.merge(
+      style: actionsStyle,
+      child: trailing,
+    );
+
+    // Let the middle be black rather than `actionsForegroundColor` in case
+    // it's a plain text title.
+    final Widget styledMiddle = middle == null ? null : DefaultTextStyle.merge(
+      style: actionsStyle.copyWith(color: CupertinoColors.black),
+      child: middle,
+    );
 
     // TODO(xster): automatically build a CupertinoBackButton.
 
@@ -107,26 +121,19 @@
             color: actionsForegroundColor,
             size: 22.0,
           ),
-          child: DefaultTextStyle.merge(
-            style: new TextStyle(
-              fontSize: 17.0,
-              letterSpacing: -0.24,
-              color: actionsForegroundColor,
+          child: new Padding(
+            padding: new EdgeInsets.only(
+              top: MediaQuery.of(context).padding.top,
+              // TODO(xster): dynamically reduce padding when an automatic
+              // CupertinoBackButton is present.
+              left: 16.0,
+              right: 16.0,
             ),
-            child: new Padding(
-              padding: new EdgeInsets.only(
-                top: MediaQuery.of(context).padding.top,
-                // TODO(xster): dynamically reduce padding when an automatic
-                // CupertinoBackButton is present.
-                left: 16.0,
-                right: 16.0,
-              ),
-              child: new NavigationToolbar(
-                leading: leading,
-                middle: styledMiddle,
-                trailing: trailing,
-                centerMiddle: true,
-              ),
+            child: new NavigationToolbar(
+              leading: styledLeading,
+              middle: styledMiddle,
+              trailing: styledTrailing,
+              centerMiddle: true,
             ),
           ),
         ),
diff --git a/packages/flutter/lib/src/foundation/tree_diagnostics_mixin.dart b/packages/flutter/lib/src/foundation/tree_diagnostics_mixin.dart
index 42f7592..b2d3062 100644
--- a/packages/flutter/lib/src/foundation/tree_diagnostics_mixin.dart
+++ b/packages/flutter/lib/src/foundation/tree_diagnostics_mixin.dart
@@ -569,12 +569,12 @@
   const _NoDefaultValue();
 }
 
-/// Marker object indicating that a DiagnosticNode has no default value.
+/// Marker object indicating that a [DiagnosticsNode] has no default value.
 const _NoDefaultValue kNoDefaultValue = const _NoDefaultValue();
 
 /// Defines diagnostics data for a [value].
 ///
-/// DiagnosticsNode provides a high quality multi-line string dump via
+/// [DiagnosticsNode] provides a high quality multi-line string dump via
 /// [toStringDeep]. The core members are the [name], [description], [getProperties],
 /// [value], and [getChildren]. All other members exist typically to provide
 /// hints for how [toStringDeep] and debugging tools should format output.
@@ -629,7 +629,7 @@
   ///
   /// See also:
   ///
-  ///  * [PropertyMessage], which should be used if the message should be
+  ///  * [MessageProperty], which is better suited to messages that are to be
   ///    formatted like a property with a separate name and message.
   factory DiagnosticsNode.message(
     String message, {
@@ -645,7 +645,10 @@
     );
   }
 
-  /// Label describing the Diagnostics node.
+  /// Label describing the [DiagnosticsNode], typically shown before a separator
+  /// (see [showSeparator]).
+  ///
+  /// The name will be omitted if the [showName] property is false.
   final String name;
 
   /// Description with a short summary of the node itself not including children
@@ -678,13 +681,13 @@
   /// Hint for how the node should be displayed.
   final DiagnosticsTreeStyle style;
 
-  /// Properties of this DiagnosticsNode.
+  /// Properties of this [DiagnosticsNode].
   ///
   /// Properties and children are kept distinct even though they are both
-  /// [List<DiagnosticNode>] because they should be grouped differently.
+  /// [List<DiagnosticsNode>] because they should be grouped differently.
   List<DiagnosticsNode> getProperties();
 
-  /// Children of this DiagnosticsNode.
+  /// Children of this [DiagnosticsNode].
   ///
   /// See also:
   ///
@@ -885,30 +888,32 @@
 
 /// Debugging message displayed like a property.
 ///
-/// The following two properties should be a [MessageProperty], not
-/// [StringProperty], as the intent is to show a message with property style
-/// display rather than to describe the value of an actual property of the
-/// object.
+/// ## Sample code
+///
+/// The following two properties are better expressed using this
+/// [MessageProperty] class, rather than [StringProperty], as the intent is to
+/// show a message with property style display rather than to describe the value
+/// of an actual property of the object:
 ///
 /// ```dart
-/// new MessageProperty('table size', '$columns\u00D7$rows'));
-/// new MessageProperty('usefulness ratio', 'no metrics collected yet (never painted)');
+/// new MessageProperty('table size', '$columns\u00D7$rows')
+/// ```
+/// ```dart
+/// new MessageProperty('usefulness ratio', 'no metrics collected yet (never painted)')
 /// ```
 ///
-/// StringProperty should be used if the property has a concrete value that is
-/// a string.
+/// On the other hand, [StringProperty] is better suited when the property has a
+/// concrete value that is a string:
 ///
 /// ```dart
-/// new StringProperty('fontFamily', fontFamily);
-/// new StringProperty('title', title):
+/// new StringProperty('name', _name)
 /// ```
 ///
 /// See also:
 ///
-///  * [DiagnosticsProperty.message], which serves the same role for messages
+///  * [DiagnosticsNode.message], which serves the same role for messages
 ///    without a clear property name.
-///  * [StringProperty], which should be used instead for properties with string
-///    values.
+///  * [StringProperty], which is a better fit for properties with string values.
 class MessageProperty extends DiagnosticsProperty<Null> {
   /// Create a diagnostics property that displays a message.
   ///
@@ -926,7 +931,7 @@
 ///
 /// See also:
 ///
-///  * [MessageProperty], which should be used instead if showing a message
+///  * [MessageProperty], which is a better fit for showing a message
 ///    instead of describing a property with a string value.
 class StringProperty extends DiagnosticsProperty<String> {
   /// Create a diagnostics property for strings.
@@ -1025,11 +1030,11 @@
     return unit != null ?  '${numberToString()}$unit' : numberToString();
   }
 }
-/// Property describing a [double] [value] with an option [unit] of measurement.
+/// Property describing a [double] [value] with an optional [unit] of measurement.
 ///
 /// Numeric formatting is optimized for debug message readability.
 class DoubleProperty extends _NumProperty<double> {
-  /// If specified, `unit` describes the unit for the [value] (e.g. px).
+  /// If specified, [unit] describes the unit for the [value] (e.g. px).
   DoubleProperty(String name, double value, {
     bool hidden: false,
     String ifNull,
@@ -1782,31 +1787,30 @@
   return buffer.toString();
 }
 
-/// An interface providing string and [DiagnosticNode] debug representations.
+/// An interface providing string and [DiagnosticsNode] debug representations.
 ///
 /// The string debug representation is generated from the intermediate
-/// [DiagnosticNode] representation. The [DiagnosticNode] representation is
+/// [DiagnosticsNode] representation. The [DiagnosticsNode] representation is
 /// also used by debugging tools displaying interactive trees of objects and
 /// properties.
 ///
 /// See also:
 ///
-///  * [TreeDiagnosticsMixin], which should be used to implement this interface
-///    in all contexts where a mixin can be used.
-///  * [TreeDiagnosticsMixin.debugFillProperties], which lists best practices
-///    for specifying the properties of a [DiagnosticNode]. The most common use
-///    case is to override [debugFillProperties] defining custom properties for
-///    a subclass of [TreeDiagnosticsMixin] using the existing
+///  * [TreeDiagnosticsMixin], which provides convenience members for implementing
+///    this interface in a consistent way.
+///  * The documentation for [TreeDiagnosticsMixin.debugFillProperties], which
+///    lists best practices for specifying the properties of a
+///    [DiagnosticsNode]. The most common use case is to override
+///    [TreeDiagnosticsMixin.debugFillProperties] to define custom properties
+///    for a subclass of [TreeDiagnosticsMixin] using the existing
 ///    [DiagnosticsProperty] subclasses.
-///  * [TreeDiagnosticsMixin.debugDescribeChildren], which lists best practices
-///    for describing the children of a [DiagnosticNode]. Typically the base
-///    class already describes the children of a node properly or a node has
-///    no children.
-///  * [DiagnosticsProperty], which should be used to create leaf diagnostic
-///    nodes without properties or children. There are many [DiagnosticProperty]
-///    subclasses to handle common use cases.
-///  * [DiagnosticsNode.lazy], which should be used to create a DiagnosticNode
-///    with children and properties where [TreeDiagnosticsMixin] cannot be used.
+///  * The documentation for [TreeDiagnosticsMixin.debugDescribeChildren], which
+///    lists best practices for describing the children of a [DiagnosticsNode].
+///    Typically the base class already describes the children of a node
+///    properly or a node has no children.
+///  * [DiagnosticsProperty], which describes leaf diagnostic nodes without
+///    properties or children. There are many [DiagnosticsProperty] subclasses
+///    to handle common use cases such as strings and doubles.
 abstract class TreeDiagnostics {
   /// Abstract const constructor. This constructor enables subclasses to provide
   /// const constructors so that they can be used in const expressions.
@@ -1907,10 +1911,10 @@
   ///
   /// Use the most specific [DiagnosticsProperty] existing subclass to describe
   /// each property instead of the [DiagnosticsProperty] base class. There are
-  /// only a small number of [DiagnosticProperty] subclasses each covering a
+  /// only a small number of [DiagnosticsProperty] subclasses each covering a
   /// common use case. Consider what values a property is relevant for users
   /// debugging as users debugging large trees are overloaded with information.
-  /// Common named parameters in [DiagnosticNode] subclasses help filter when
+  /// Common named parameters in [DiagnosticsNode] subclasses help filter when
   /// and how properties are displayed.
   ///
   /// `defaultValue`, `showName`, `showSeparator`, and `hidden` keep string
@@ -1941,7 +1945,7 @@
   /// descriptions clearer. The examples in the code sample below illustrate
   /// good uses of all of these parameters.
   ///
-  /// ## DiagnosticProperty subclasses for primitive types
+  /// ## DiagnosticsProperty subclasses for primitive types
   ///
   ///  * [StringProperty], which supports automatically enclosing a [String]
   ///    value in quotes.
@@ -1953,33 +1957,31 @@
   ///    [int] value.
   ///  * [FlagProperty], which formats a [bool] value as one or more flags.
   ///    Depending on the use case it is better to format a bool as
-  ///    `DiagnosticProperty<bool>` instead of using [FlagProperty] as the
+  ///    `DiagnosticsProperty<bool>` instead of using [FlagProperty] as the
   ///    output is more verbose but unambiguous.
   ///
-  /// ## Other important [DiagnosticProperty] subclasses
+  /// ## Other important [DiagnosticsProperty] variants
   ///
   ///  * [EnumProperty], which provides terse descriptions of enum values
   ///    working around limitations of the `toString` implementation for Dart
   ///    enum types.
   ///  * [IterableProperty], which handles iterable values with display
   ///    customizable depending on the [DiagnosticsTreeStyle] used.
-  ///  * [LazyDiagnosticsProperty], which handles properties where computing the
-  ///    value could throw an exception.
   ///  * [ObjectFlagProperty], which provides terse descriptions of whether a
   ///    property value is present or not. For example, whether an `onClick`
   ///    callback is specified or an animation is in progress.
   ///
-  /// If none of these subclasses apply, use the [DiagnosticProperty]
+  /// If none of these subclasses apply, use the [DiagnosticsProperty]
   /// constructor or in rare cases create your own [DiagnosticsProperty]
   /// subclass as in the case for [TransformProperty] which handles [Matrix4]
   /// that represent transforms. Generally any property value with a good
-  /// `toString` method implementation works fine using [DiagnosticProperty]
+  /// `toString` method implementation works fine using [DiagnosticsProperty]
   /// directly.
   ///
   /// ## Sample code
   ///
   /// This example shows best practices for implementing [debugFillProperties]
-  /// illustrating use of all common [DiagnosticProperty] subclasses and all
+  /// illustrating use of all common [DiagnosticsProperty] subclasses and all
   /// common [DiagnosticsProperty] parameters.
   ///
   /// ```dart
diff --git a/packages/flutter/lib/src/material/feedback.dart b/packages/flutter/lib/src/material/feedback.dart
index 84994e8..dd9ad63 100644
--- a/packages/flutter/lib/src/material/feedback.dart
+++ b/packages/flutter/lib/src/material/feedback.dart
@@ -15,14 +15,16 @@
 /// For example, to play the Android-typically click sound when a button is
 /// tapped, call [forTap]. For the Android-specific vibration when long pressing
 /// an element, call [forLongPress]. Alternatively, you can also wrap your
-/// [onTap] or [onLongPress] callback in [wrapForTap] or [wrapForLongPress] to
-/// achieve the same (see example code below).
+/// [GestureDetector.onTap] or [GestureDetector.onLongPress] callback in
+/// [wrapForTap] or [wrapForLongPress] to achieve the same (see example code
+/// below).
 ///
 /// Calling any of these methods is a no-op on iOS as actions on that platform
 /// typically don't provide haptic or acoustic feedback.
 ///
-/// All methods in this class are usually called from within a [build] method
-/// or from a State's methods as you have to provide a [BuildContext].
+/// All methods in this class are usually called from within a
+/// [StatelessWidget.build] method or from a [State]'s methods as you have to
+/// provide a [BuildContext].
 ///
 /// ## Sample code
 ///
diff --git a/packages/flutter/lib/src/material/tabs.dart b/packages/flutter/lib/src/material/tabs.dart
index 8714011..fda34f3 100644
--- a/packages/flutter/lib/src/material/tabs.dart
+++ b/packages/flutter/lib/src/material/tabs.dart
@@ -458,10 +458,13 @@
   final double indicatorWeight;
 
   /// The horizontal padding for the line that appears below the selected tab.
-  /// For [isScrollable] tab bars, specifying [kDefaultTabLabelPadding] will align
+  /// For [isScrollable] tab bars, specifying [kTabLabelPadding] will align
   /// the indicator with the tab's text for [Tab] widgets and all but the
   /// shortest [Tab.text] values.
   ///
+  /// The [EdgeInsets.top] and [EdgeInsets.bottom] values of the
+  /// [indicatorPadding] are ignored.
+  ///
   /// The default value of [indicatorPadding] is [EdgeInsets.zero].
   final EdgeInsets indicatorPadding;
 
diff --git a/packages/flutter/lib/src/painting/colors.dart b/packages/flutter/lib/src/painting/colors.dart
index be9748d..484ba90 100644
--- a/packages/flutter/lib/src/painting/colors.dart
+++ b/packages/flutter/lib/src/painting/colors.dart
@@ -181,7 +181,7 @@
 ///
 ///  * [MaterialColor] and [MaterialAccentColor], which define material design
 ///    primary and accent color swatches.
-///  * [Colors], which defines all of the standard material design colors.
+///  * [material.Colors], which defines all of the standard material design colors.
 class ColorSwatch<T> extends Color {
   /// Creates a color that has a small table of related colors called a "swatch".
   const ColorSwatch(int primary, this._swatch) : super(primary);
diff --git a/packages/flutter/lib/src/painting/edge_insets.dart b/packages/flutter/lib/src/painting/edge_insets.dart
index b6b013b..c7521cd 100644
--- a/packages/flutter/lib/src/painting/edge_insets.dart
+++ b/packages/flutter/lib/src/painting/edge_insets.dart
@@ -97,7 +97,7 @@
   ///
   /// If you need the current system padding in the context of a widget,
   /// consider using [MediaQuery.of] to obtain the current padding rather than
-  /// using the value from [ui.window], so that you get notified when it
+  /// using the value from [dart:ui.window], so that you get notified when it
   /// changes.
   EdgeInsets.fromWindowPadding(ui.WindowPadding padding, double devicePixelRatio)
     : left = padding.left / devicePixelRatio,
diff --git a/packages/flutter/lib/src/painting/flutter_logo.dart b/packages/flutter/lib/src/painting/flutter_logo.dart
index 76f6c07..fa712d4 100644
--- a/packages/flutter/lib/src/painting/flutter_logo.dart
+++ b/packages/flutter/lib/src/painting/flutter_logo.dart
@@ -56,15 +56,16 @@
   /// The lighter of the two colors used to paint the logo.
   ///
   /// If possible, the default should be used. It corresponds to the 400 and 900
-  /// values of [Colors.blue] from the Material library.
+  /// values of [material.Colors.blue] from the Material library.
   ///
   /// If for some reason that color scheme is impractical, the same entries from
-  /// [Colors.amber], [Colors.red], or [Colors.indigo] colors can be used. These
-  /// are Flutter's secondary colors.
+  /// [material.Colors.amber], [material.Colors.red], or
+  /// [material.Colors.indigo] colors can be used. These are Flutter's secondary
+  /// colors.
   ///
   /// In extreme cases where none of those four color schemes will work,
-  /// [Colors.pink], [Colors.purple], or [Colors.cyan] can be used.
-  /// These are Flutter's tertiary colors.
+  /// [material.Colors.pink], [material.Colors.purple], or
+  /// [material.Colors.cyan] can be used. These are Flutter's tertiary colors.
   final Color lightColor;
 
   /// The darker of the two colors used to paint the logo.
diff --git a/packages/flutter/lib/src/painting/text_span.dart b/packages/flutter/lib/src/painting/text_span.dart
index f012152..953837d 100644
--- a/packages/flutter/lib/src/painting/text_span.dart
+++ b/packages/flutter/lib/src/painting/text_span.dart
@@ -96,7 +96,7 @@
   /// ## Sample code
   ///
   /// This example shows how to manage the lifetime of a gesture recognizer
-  /// provided to a [TextSpan] object. It defines a [BuzzingText] widget which
+  /// provided to a [TextSpan] object. It defines a `BuzzingText` widget which
   /// uses the [HapticFeedback] class to vibrate the device when the user
   /// long-presses the "find the" span, which is underlined in wavy green. The
   /// hit-testing is handled by the [RichText] widget.
diff --git a/packages/flutter/lib/src/painting/text_style.dart b/packages/flutter/lib/src/painting/text_style.dart
index c12401f..6a3830b 100644
--- a/packages/flutter/lib/src/painting/text_style.dart
+++ b/packages/flutter/lib/src/painting/text_style.dart
@@ -40,11 +40,11 @@
 /// ### Opacity
 ///
 /// Each line here is progressively more opaque. The base color is
-/// [Colors.black], and [Color.withOpacity] is used to create a derivative color
-/// with the desired opacity. The root [TextSpan] for this [RichText] widget is
-/// explicitly given the ambient [DefaultTextStyle], since [RichText] does not
-/// do that automatically. The inner [TextStyle] objects are implicitly mixed
-/// with the parent [TextSpan]'s [TextSpan.style].
+/// [material.Colors.black], and [Color.withOpacity] is used to create a
+/// derivative color with the desired opacity. The root [TextSpan] for this
+/// [RichText] widget is explicitly given the ambient [DefaultTextStyle], since
+/// [RichText] does not do that automatically. The inner [TextStyle] objects are
+/// implicitly mixed with the parent [TextSpan]'s [TextSpan.style].
 ///
 /// ```dart
 /// new RichText(
diff --git a/packages/flutter/lib/src/rendering/box.dart b/packages/flutter/lib/src/rendering/box.dart
index d023f2b..e435709 100644
--- a/packages/flutter/lib/src/rendering/box.dart
+++ b/packages/flutter/lib/src/rendering/box.dart
@@ -836,7 +836,7 @@
 /// * Implement the [visitChildren] method such that it calls its argument for
 ///   each child, typically in paint order (back-most to front-most).
 ///
-/// * Implement [debugDescribeChildren] such that it outputs a [DiagnosticNode]
+/// * Implement [debugDescribeChildren] such that it outputs a [DiagnosticsNode]
 ///   for each child.
 ///
 /// Implementing these seven bullet points is essentially all that the two
diff --git a/packages/flutter/lib/src/rendering/layer.dart b/packages/flutter/lib/src/rendering/layer.dart
index 4ca295c..da73d48 100644
--- a/packages/flutter/lib/src/rendering/layer.dart
+++ b/packages/flutter/lib/src/rendering/layer.dart
@@ -122,7 +122,7 @@
   /// The bounds that were used for the canvas that drew this layer's [picture].
   ///
   /// This is purely advisory. It is included in the information dumped with
-  /// [dumpLayerTree] (which can be triggered by pressing "L" when using
+  /// [debugDumpLayerTree] (which can be triggered by pressing "L" when using
   /// "flutter run" at the console), which can help debug why certain drawing
   /// commands are being culled.
   final Rect canvasBounds;
@@ -866,7 +866,7 @@
 ///
 /// If any of the ancestors of this layer have a degenerate matrix (e.g. scaling
 /// by zero), then the [FollowerLayer] will not be able to transform its child
-/// to the coordinate space of the [Leader].
+/// to the coordinate space of the [LeaderLayer].
 ///
 /// A [linkedOffset] property can be provided to further offset the child layer
 /// from the leader layer, for example if the child is to follow the linked
diff --git a/packages/flutter/lib/src/rendering/object.dart b/packages/flutter/lib/src/rendering/object.dart
index c650e31..96235f1 100644
--- a/packages/flutter/lib/src/rendering/object.dart
+++ b/packages/flutter/lib/src/rendering/object.dart
@@ -72,12 +72,12 @@
   /// A render object provided with this [PaintingContext] (e.g. in its
   /// [RenderObject.paint] method) is permitted to paint outside the region that
   /// the render object occupies during layout, but is not permitted to paint
-  /// outside these paints bounds. These paint bounds are used to construct
-  /// memory-efficient composited layers, which means attempting to paint
-  /// outside these bounds can attempt to write to pixels that do not exist in
-  /// the composited layer.
+  /// outside these canvas paints bounds. These paint bounds are used to
+  /// construct memory-efficient composited layers, which means attempting to
+  /// paint outside these bounds can attempt to write to pixels that do not
+  /// exist in the composited layer.
   ///
-  /// The [paintBounds] rectangle is in the [canvas] coordinate system.
+  /// The [canvasBounds] rectangle is in the [canvas] coordinate system.
   final Rect canvasBounds;
 
   /// Repaint the given render object.
@@ -1180,7 +1180,7 @@
   /// update.
   ///
   /// Initially, only the root node, as scheduled by
-  /// [RenderObjectscheduleInitialSemantics], needs a semantics update.
+  /// [RenderObject.scheduleInitialSemantics], needs a semantics update.
   ///
   /// This function is one of the core stages of the rendering pipeline. The
   /// semantics are compiled after painting and only after
diff --git a/packages/flutter/lib/src/services/image_stream.dart b/packages/flutter/lib/src/services/image_stream.dart
index 54a9f93..3e9124c 100644
--- a/packages/flutter/lib/src/services/image_stream.dart
+++ b/packages/flutter/lib/src/services/image_stream.dart
@@ -177,7 +177,7 @@
   /// object is available. If a concrete image is already available, this object
   /// will call the listener synchronously.
   ///
-  /// If the assigned [completer] completes multiple images over its lifetime,
+  /// If the [ImageStreamCompleter] completes multiple images over its lifetime,
   /// this listener will fire multiple times.
   ///
   /// The listener will be passed a flag indicating whether a synchronous call
diff --git a/packages/flutter/lib/src/widgets/framework.dart b/packages/flutter/lib/src/widgets/framework.dart
index 9af52db..e5bc2b5 100644
--- a/packages/flutter/lib/src/widgets/framework.dart
+++ b/packages/flutter/lib/src/widgets/framework.dart
@@ -1378,7 +1378,7 @@
   }
 
   /// Add additional properties to the given description used by
-  /// [toDiagnosticNode], [toString] and [toStringDeep].
+  /// [toDiagnosticsNode], [toString] and [toStringDeep].
   ///
   /// This method makes it easier for subclasses to coordinate to provide
   /// high-quality diagnostic data. The [toString] implementation on
@@ -3305,7 +3305,7 @@
   }
 
   /// Add additional properties to the given description used by
-  /// [toDiagnosticNode], [toString] and [toStringDeep].
+  /// [toDiagnosticsNode], [toString] and [toStringDeep].
   ///
   /// This method makes it easier for subclasses to coordinate to provide
   /// high-quality diagnostic data. The [toString] implementation on
diff --git a/packages/flutter/lib/src/widgets/gesture_detector.dart b/packages/flutter/lib/src/widgets/gesture_detector.dart
index cdab68e..18c34fd 100644
--- a/packages/flutter/lib/src/widgets/gesture_detector.dart
+++ b/packages/flutter/lib/src/widgets/gesture_detector.dart
@@ -439,7 +439,7 @@
 /// See also:
 ///
 ///  * [GestureDetector], a less flexible but much simpler widget that does the same thing.
-///  * [PointerListener], a widget that reports raw pointer events.
+///  * [Listener], a widget that reports raw pointer events.
 ///  * [GestureRecognizer], the class that you extend to create a custom gesture recognizer.
 class RawGestureDetector extends StatefulWidget {
   /// Creates a widget that detects gestures.
diff --git a/packages/flutter/lib/src/widgets/page_view.dart b/packages/flutter/lib/src/widgets/page_view.dart
index fd6f264..3b9f8e2 100644
--- a/packages/flutter/lib/src/widgets/page_view.dart
+++ b/packages/flutter/lib/src/widgets/page_view.dart
@@ -329,7 +329,7 @@
 ///  * [SingleChildScrollView], when you need to make a single child scrollable.
 ///  * [ListView], for a scrollable list of boxes.
 ///  * [GridView], for a scrollable grid of boxes.
-///  * [ScollNotification] and [NotificationListener], which can be used to watch
+///  * [ScrollNotification] and [NotificationListener], which can be used to watch
 ///    the scroll position without using a [ScrollController].
 class PageView extends StatefulWidget {
   /// Creates a scrollable list that works page by page from an explicit [List]
diff --git a/packages/flutter/lib/src/widgets/scroll_controller.dart b/packages/flutter/lib/src/widgets/scroll_controller.dart
index 12431eb..b4b0789 100644
--- a/packages/flutter/lib/src/widgets/scroll_controller.dart
+++ b/packages/flutter/lib/src/widgets/scroll_controller.dart
@@ -40,7 +40,7 @@
 ///    [PageView].
 ///  * [ScrollPosition], which manages the scroll offset for an individual
 ///    scrolling widget.
-///  * [ScollNotification] and [NotificationListener], which can be used to watch
+///  * [ScrollNotification] and [NotificationListener], which can be used to watch
 ///    the scroll position without using a [ScrollController].
 class ScrollController extends ChangeNotifier {
   /// Creates a controller for a scrollable widget.
@@ -285,9 +285,9 @@
 /// ## Sample code
 ///
 /// In this example each [PageView] page contains a [ListView] and all three
-/// [ListView]'s share a [TrackingController]. The scroll offsets of all three
-/// list views will track each other, to the extent that's possible given the
-/// different list lengths.
+/// [ListView]'s share a [TrackingScrollController]. The scroll offsets of all
+/// three list views will track each other, to the extent that's possible given
+/// the different list lengths.
 ///
 /// ```dart
 /// new PageView(
diff --git a/packages/flutter/lib/src/widgets/scroll_position.dart b/packages/flutter/lib/src/widgets/scroll_position.dart
index 83b1383..2041184 100644
--- a/packages/flutter/lib/src/widgets/scroll_position.dart
+++ b/packages/flutter/lib/src/widgets/scroll_position.dart
@@ -58,7 +58,7 @@
 ///    other scrollable widgets to control a [ScrollPosition].
 ///  * [ScrollPositionWithSingleContext], which is the most commonly used
 ///    concrete subclass of [ScrollPosition].
-///  * [ScollNotification] and [NotificationListener], which can be used to watch
+///  * [ScrollNotification] and [NotificationListener], which can be used to watch
 ///    the scroll position without using a [ScrollController].
 abstract class ScrollPosition extends ViewportOffset with ScrollMetrics {
   /// Creates an object that determines which portion of the content is visible
@@ -92,7 +92,7 @@
   /// Typically implemented by [ScrollableState].
   final ScrollContext context;
 
-  /// Save the current scroll [offset] with [PageStorage] and restore it if
+  /// Save the current scroll offset with [PageStorage] and restore it if
   /// this scroll position's scrollable is recreated.
   ///
   /// See also:
diff --git a/packages/flutter/lib/src/widgets/scroll_view.dart b/packages/flutter/lib/src/widgets/scroll_view.dart
index a3479e0..6851d71 100644
--- a/packages/flutter/lib/src/widgets/scroll_view.dart
+++ b/packages/flutter/lib/src/widgets/scroll_view.dart
@@ -42,7 +42,7 @@
 ///    of child widgets.
 ///  * [CustomScrollView], which is a [ScrollView] that creates custom scroll
 ///    effects using slivers.
-///  * [ScollNotification] and [NotificationListener], which can be used to watch
+///  * [ScrollNotification] and [NotificationListener], which can be used to watch
 ///    the scroll position without using a [ScrollController].
 abstract class ScrollView extends StatelessWidget {
   /// Creates a widget that scrolls.
@@ -303,7 +303,7 @@
 ///    sliver.
 ///  * [SliverAppBar], which is a sliver that displays a header that can expand
 ///    and float as the scroll view scrolls.
-///  * [ScollNotification] and [NotificationListener], which can be used to watch
+///  * [ScrollNotification] and [NotificationListener], which can be used to watch
 ///    the scroll position without using a [ScrollController].
 class CustomScrollView extends ScrollView {
   /// Creates a [ScrollView] that creates custom scroll effects using slivers.
@@ -438,7 +438,7 @@
 /// ## Transitioning to [CustomScrollView]
 ///
 /// A [ListView] is basically a [CustomScrollView] with a single [SliverList] in
-/// its [slivers] property.
+/// its [CustomScrollView.slivers] property.
 ///
 /// If [ListView] is no longer sufficient, for example because the scroll view
 /// is to have both a list and a grid, or because the list is to be combined
@@ -519,7 +519,7 @@
 ///    scroll effects using slivers.
 ///  * [ListBody], which arranges its children in a similar manner, but without
 ///    scrolling.
-///  * [ScollNotification] and [NotificationListener], which can be used to watch
+///  * [ScrollNotification] and [NotificationListener], which can be used to watch
 ///    the scroll position without using a [ScrollController].
 class ListView extends BoxScrollView {
   /// Creates a scrollable, linear array of widgets from an explicit [List].
@@ -708,7 +708,7 @@
 /// ## Transitioning to [CustomScrollView]
 ///
 /// A [GridView] is basically a [CustomScrollView] with a single [SliverGrid] in
-/// its [slivers] property.
+/// its [CustomScrollView.slivers] property.
 ///
 /// If [GridView] is no longer sufficient, for example because the scroll view
 /// is to have both a grid and a list, or because the grid is to be combined
@@ -804,7 +804,7 @@
 ///    a fixed number of tiles in the cross axis.
 ///  * [SliverGridDelegateWithMaxCrossAxisExtent], which creates a layout with
 ///    tiles that have a maximum cross-axis extent.
-///  * [ScollNotification] and [NotificationListener], which can be used to watch
+///  * [ScrollNotification] and [NotificationListener], which can be used to watch
 ///    the scroll position without using a [ScrollController].
 class GridView extends BoxScrollView {
   /// Creates a scrollable, 2D array of widgets with a custom
diff --git a/packages/flutter/lib/src/widgets/scrollable.dart b/packages/flutter/lib/src/widgets/scrollable.dart
index 80e0dd1..8261a92 100644
--- a/packages/flutter/lib/src/widgets/scrollable.dart
+++ b/packages/flutter/lib/src/widgets/scrollable.dart
@@ -67,7 +67,7 @@
 ///    effects using slivers.
 ///  * [SingleChildScrollView], which is a scrollable widget that has a single
 ///    child.
-///  * [ScollNotification] and [NotificationListener], which can be used to watch
+///  * [ScrollNotification] and [NotificationListener], which can be used to watch
 ///    the scroll position without using a [ScrollController].
 class Scrollable extends StatefulWidget {
   /// Creates a widget that scrolls.
diff --git a/packages/flutter/test/cupertino/nav_bar_test.dart b/packages/flutter/test/cupertino/nav_bar_test.dart
index ff65491..89d385a 100644
--- a/packages/flutter/test/cupertino/nav_bar_test.dart
+++ b/packages/flutter/test/cupertino/nav_bar_test.dart
@@ -6,6 +6,8 @@
 import 'package:flutter/rendering.dart';
 import 'package:flutter_test/flutter_test.dart';
 
+int count = 0;
+
 void main() {
   testWidgets('Middle still in center with asymmetrical actions', (WidgetTester tester) async {
     await tester.pumpWidget(
@@ -67,4 +69,44 @@
     );
     expect(find.byType(BackdropFilter), findsOneWidget);
   });
+
+  testWidgets('Verify styles of each slot', (WidgetTester tester) async {
+    count = 0x000000;
+    await tester.pumpWidget(
+      new WidgetsApp(
+        color: const Color(0xFFFFFFFF),
+        onGenerateRoute: (RouteSettings settings) {
+          return new PageRouteBuilder<Null>(
+            settings: settings,
+            pageBuilder: (BuildContext context, Animation<double> animation, Animation<double> secondaryAnimation) {
+              return const CupertinoNavigationBar(
+                leading: const _ExpectStyles(color: const Color(0xFF001122), index: 0x000001),
+                middle: const _ExpectStyles(color: const Color(0xFF000000), index: 0x000100),
+                trailing: const _ExpectStyles(color: const Color(0xFF001122), index: 0x010000),
+                actionsForegroundColor: const Color(0xFF001122),
+              );
+            },
+          );
+        },
+      ),
+    );
+    expect(count, 0x010101);
+  });
+}
+
+class _ExpectStyles extends StatelessWidget {
+  const _ExpectStyles({ this.color, this.index });
+
+  final Color color;
+  final int index;
+
+  @override
+  Widget build(BuildContext context) {
+    final TextStyle style = DefaultTextStyle.of(context).style;
+    expect(style.color, color);
+    expect(style.fontSize, 17.0);
+    expect(style.letterSpacing, -0.24);
+    count += index;
+    return new Container();
+  }
 }
\ No newline at end of file
diff --git a/packages/flutter_driver/lib/flutter_driver.dart b/packages/flutter_driver/lib/flutter_driver.dart
index 69e2593..05845fb 100644
--- a/packages/flutter_driver/lib/flutter_driver.dart
+++ b/packages/flutter_driver/lib/flutter_driver.dart
@@ -25,8 +25,7 @@
   LogRecord,
   flutterDriverLog;
 export 'src/find.dart' show
-  SerializableFinder,
-  GetTextResult;
+  SerializableFinder;
 export 'src/health.dart' show
   Health,
   HealthStatus;
diff --git a/packages/flutter_driver/lib/src/render_tree.dart b/packages/flutter_driver/lib/src/render_tree.dart
index 8eda71d..84cbd2f 100644
--- a/packages/flutter_driver/lib/src/render_tree.dart
+++ b/packages/flutter_driver/lib/src/render_tree.dart
@@ -16,7 +16,8 @@
   final String kind = 'get_render_tree';
 }
 
-/// A string representation of the render tree, the result of a [GetRenderTree] command.
+/// A string representation of the render tree, the result of a
+/// [FlutterDriver.getRenderTree] method.
 class RenderTree extends Result {
   /// Creates a [RenderTree] object with the given string representation.
   RenderTree(this.tree);