sort_constructors_first (#22575)
diff --git a/dev/devicelab/bin/tasks/gradle_plugin_test.dart b/dev/devicelab/bin/tasks/gradle_plugin_test.dart index 8521314..a2b2545 100644 --- a/dev/devicelab/bin/tasks/gradle_plugin_test.dart +++ b/dev/devicelab/bin/tasks/gradle_plugin_test.dart
@@ -281,8 +281,6 @@ } class _Dependencies { - String target; - Set<String> dependencies; _Dependencies(String depfilePath) { final RegExp _separatorExpr = RegExp(r'([^\\]) '); final RegExp _escapeExpr = RegExp(r'\\(.)'); @@ -301,6 +299,9 @@ .where((String path) => path.isNotEmpty) .toSet(); } + + String target; + Set<String> dependencies; } /// Returns [null] if target matches [expectedTarget], otherwise returns an error message.
diff --git a/dev/devicelab/lib/framework/adb.dart b/dev/devicelab/lib/framework/adb.dart index 2ea21c8..bcee6a4 100644 --- a/dev/devicelab/lib/framework/adb.dart +++ b/dev/devicelab/lib/framework/adb.dart
@@ -100,6 +100,12 @@ } class AndroidDeviceDiscovery implements DeviceDiscovery { + factory AndroidDeviceDiscovery() { + return _instance ??= AndroidDeviceDiscovery._(); + } + + AndroidDeviceDiscovery._(); + // Parses information about a device. Example: // // 015d172c98400a03 device usb:340787200X product:nakasi model:Nexus_7 device:grouper @@ -107,12 +113,6 @@ static AndroidDeviceDiscovery _instance; - factory AndroidDeviceDiscovery() { - return _instance ??= AndroidDeviceDiscovery._(); - } - - AndroidDeviceDiscovery._(); - AndroidDevice _workingDevice; @override @@ -349,15 +349,14 @@ } class IosDeviceDiscovery implements DeviceDiscovery { - - static IosDeviceDiscovery _instance; - factory IosDeviceDiscovery() { return _instance ??= IosDeviceDiscovery._(); } IosDeviceDiscovery._(); + static IosDeviceDiscovery _instance; + IosDevice _workingDevice; @override
diff --git a/dev/devicelab/lib/framework/framework.dart b/dev/devicelab/lib/framework/framework.dart index 7bc0b64..b3063a5 100644 --- a/dev/devicelab/lib/framework/framework.dart +++ b/dev/devicelab/lib/framework/framework.dart
@@ -49,17 +49,6 @@ } class _TaskRunner { - static final Logger logger = Logger('TaskRunner'); - - final TaskFunction task; - - // TODO(ianh): workaround for https://github.com/dart-lang/sdk/issues/23797 - RawReceivePort _keepAlivePort; - Timer _startTaskTimeout; - bool _taskStarted = false; - - final Completer<TaskResult> _completer = Completer<TaskResult>(); - _TaskRunner(this.task) { registerExtension('ext.cocoonRunTask', (String method, Map<String, String> parameters) async { @@ -75,6 +64,17 @@ }); } + final TaskFunction task; + + // TODO(ianh): workaround for https://github.com/dart-lang/sdk/issues/23797 + RawReceivePort _keepAlivePort; + Timer _startTaskTimeout; + bool _taskStarted = false; + + final Completer<TaskResult> _completer = Completer<TaskResult>(); + + static final Logger logger = Logger('TaskRunner'); + /// Signals that this task runner finished running the task. Future<TaskResult> get whenDone => _completer.future;
diff --git a/dev/devicelab/lib/tasks/plugin_tests.dart b/dev/devicelab/lib/tasks/plugin_tests.dart index e0bd265..3a70f73 100644 --- a/dev/devicelab/lib/tasks/plugin_tests.dart +++ b/dev/devicelab/lib/tasks/plugin_tests.dart
@@ -26,11 +26,11 @@ /// Defines task that creates new Flutter project, adds a plugin, and then /// builds the specified [buildTarget]. class PluginTest { + PluginTest(this.buildTarget, this.options); + final String buildTarget; final List<String> options; - PluginTest(this.buildTarget, this.options); - Future<TaskResult> call() async { section('Create Flutter project'); final Directory tempDir = Directory.systemTemp.createTempSync('flutter_devicelab_plugin_test.');
diff --git a/dev/integration_tests/channels/lib/src/pair.dart b/dev/integration_tests/channels/lib/src/pair.dart index 907d104..52dc3f2 100644 --- a/dev/integration_tests/channels/lib/src/pair.dart +++ b/dev/integration_tests/channels/lib/src/pair.dart
@@ -4,11 +4,11 @@ /// A pair of values. Used for testing custom codecs. class Pair { + Pair(this.left, this.right); + final dynamic left; final dynamic right; - Pair(this.left, this.right); - @override String toString() => 'Pair[$left, $right]'; }
diff --git a/dev/integration_tests/channels/lib/src/test_step.dart b/dev/integration_tests/channels/lib/src/test_step.dart index 39caab2..3806ecf 100644 --- a/dev/integration_tests/channels/lib/src/test_step.dart +++ b/dev/integration_tests/channels/lib/src/test_step.dart
@@ -25,13 +25,6 @@ /// - The Flutter app records the incoming reply echo. /// - The platform finally replies to the original message with another echo. class TestStepResult { - static const TextStyle bold = TextStyle(fontWeight: FontWeight.bold); - static const TestStepResult complete = TestStepResult( - 'Test complete', - nothing, - TestStatus.complete, - ); - const TestStepResult( this.name, this.description, @@ -71,6 +64,13 @@ final dynamic replyEcho; final dynamic error; + static const TextStyle bold = TextStyle(fontWeight: FontWeight.bold); + static const TestStepResult complete = TestStepResult( + 'Test complete', + nothing, + TestStatus.complete, + ); + Widget asWidget(BuildContext context) { return Column( crossAxisAlignment: CrossAxisAlignment.start,
diff --git a/dev/integration_tests/platform_interaction/lib/src/test_step.dart b/dev/integration_tests/platform_interaction/lib/src/test_step.dart index 1da4766..48077d2 100644 --- a/dev/integration_tests/platform_interaction/lib/src/test_step.dart +++ b/dev/integration_tests/platform_interaction/lib/src/test_step.dart
@@ -13,13 +13,6 @@ const String nothing = '-'; class TestStepResult { - static const TextStyle bold = TextStyle(fontWeight: FontWeight.bold); - static const TestStepResult complete = TestStepResult( - 'Test complete', - nothing, - TestStatus.complete, - ); - const TestStepResult(this.name, this.description, this.status); factory TestStepResult.fromSnapshot(AsyncSnapshot<TestStepResult> snapshot) { @@ -45,6 +38,13 @@ final String description; final TestStatus status; + static const TextStyle bold = TextStyle(fontWeight: FontWeight.bold); + static const TestStepResult complete = TestStepResult( + 'Test complete', + nothing, + TestStatus.complete, + ); + Widget asWidget(BuildContext context) { return Column( crossAxisAlignment: CrossAxisAlignment.start,
diff --git a/examples/flutter_gallery/lib/demo/animation/widgets.dart b/examples/flutter_gallery/lib/demo/animation/widgets.dart index 6c82ec2..60583d3e 100644 --- a/examples/flutter_gallery/lib/demo/animation/widgets.dart +++ b/examples/flutter_gallery/lib/demo/animation/widgets.dart
@@ -47,19 +47,6 @@ // The title is rendered with two overlapping text widgets that are vertically // offset a little. It's supposed to look sort-of 3D. class SectionTitle extends StatelessWidget { - static const TextStyle sectionTitleStyle = TextStyle( - fontFamily: 'Raleway', - inherit: false, - fontSize: 24.0, - fontWeight: FontWeight.w500, - color: Colors.white, - textBaseline: TextBaseline.alphabetic, - ); - - static final TextStyle sectionTitleShadowStyle = sectionTitleStyle.copyWith( - color: const Color(0x19000000), - ); - const SectionTitle({ Key key, @required this.section, @@ -74,6 +61,19 @@ final double scale; final double opacity; + static const TextStyle sectionTitleStyle = TextStyle( + fontFamily: 'Raleway', + inherit: false, + fontSize: 24.0, + fontWeight: FontWeight.w500, + color: Colors.white, + textBaseline: TextBaseline.alphabetic, + ); + + static final TextStyle sectionTitleShadowStyle = sectionTitleStyle.copyWith( + color: const Color(0x19000000), + ); + @override Widget build(BuildContext context) { return IgnorePointer(
diff --git a/examples/flutter_gallery/lib/demo/colors_demo.dart b/examples/flutter_gallery/lib/demo/colors_demo.dart index 59a9427..9ac109e 100644 --- a/examples/flutter_gallery/lib/demo/colors_demo.dart +++ b/examples/flutter_gallery/lib/demo/colors_demo.dart
@@ -83,9 +83,6 @@ } class PaletteTabView extends StatelessWidget { - static const List<int> primaryKeys = <int>[50, 100, 200, 300, 400, 500, 600, 700, 800, 900]; - static const List<int> accentKeys = <int>[100, 200, 400, 700]; - PaletteTabView({ Key key, @required this.colors, @@ -94,6 +91,9 @@ final Palette colors; + static const List<int> primaryKeys = <int>[50, 100, 200, 300, 400, 500, 600, 700, 800, 900]; + static const List<int> accentKeys = <int>[100, 200, 400, 700]; + @override Widget build(BuildContext context) { final TextTheme textTheme = Theme.of(context).textTheme;
diff --git a/examples/flutter_gallery/lib/demo/pesto_demo.dart b/examples/flutter_gallery/lib/demo/pesto_demo.dart index 8683c33..d738d8b 100644 --- a/examples/flutter_gallery/lib/demo/pesto_demo.dart +++ b/examples/flutter_gallery/lib/demo/pesto_demo.dart
@@ -432,14 +432,14 @@ /// Displays the recipe's name and instructions. class RecipeSheet extends StatelessWidget { + RecipeSheet({ Key key, this.recipe }) : super(key: key); + final TextStyle titleStyle = const PestoStyle(fontSize: 34.0); final TextStyle descriptionStyle = const PestoStyle(fontSize: 15.0, color: Colors.black54, height: 24.0/15.0); final TextStyle itemStyle = const PestoStyle(fontSize: 15.0, height: 24.0/15.0); final TextStyle itemAmountStyle = PestoStyle(fontSize: 15.0, color: _kTheme.primaryColor, height: 24.0/15.0); final TextStyle headingStyle = const PestoStyle(fontSize: 16.0, fontWeight: FontWeight.bold, height: 24.0/15.0); - RecipeSheet({ Key key, this.recipe }) : super(key: key); - final Recipe recipe; @override
diff --git a/examples/flutter_gallery/lib/demo/video_demo.dart b/examples/flutter_gallery/lib/demo/video_demo.dart index 59bbc1c..a100591 100644 --- a/examples/flutter_gallery/lib/demo/video_demo.dart +++ b/examples/flutter_gallery/lib/demo/video_demo.dart
@@ -14,13 +14,13 @@ 'https://flutter.github.io/assets-for-api-docs/assets/videos/bee.mp4'; class VideoCard extends StatelessWidget { + const VideoCard({Key key, this.controller, this.title, this.subtitle}) + : super(key: key); + final VideoPlayerController controller; final String title; final String subtitle; - const VideoCard({Key key, this.controller, this.title, this.subtitle}) - : super(key: key); - Widget _buildInlineVideo() { return Padding( padding: const EdgeInsets.symmetric(vertical: 10.0, horizontal: 30.0), @@ -93,10 +93,10 @@ } class VideoPlayerLoading extends StatefulWidget { - final VideoPlayerController controller; - const VideoPlayerLoading(this.controller); + final VideoPlayerController controller; + @override _VideoPlayerLoadingState createState() => _VideoPlayerLoadingState(); } @@ -137,18 +137,15 @@ } class VideoPlayPause extends StatefulWidget { - final VideoPlayerController controller; - const VideoPlayPause(this.controller); + final VideoPlayerController controller; + @override State createState() => _VideoPlayPauseState(); } class _VideoPlayPauseState extends State<VideoPlayPause> { - FadeAnimation imageFadeAnimation; - VoidCallback listener; - _VideoPlayPauseState() { listener = () { if (mounted) @@ -156,6 +153,9 @@ }; } + FadeAnimation imageFadeAnimation; + VoidCallback listener; + VideoPlayerController get controller => widget.controller; @override @@ -202,14 +202,14 @@ } class FadeAnimation extends StatefulWidget { - final Widget child; - final Duration duration; - const FadeAnimation({ this.child, this.duration = const Duration(milliseconds: 500), }); + final Widget child; + final Duration duration; + @override _FadeAnimationState createState() => _FadeAnimationState(); } @@ -265,16 +265,16 @@ } class ConnectivityOverlay extends StatefulWidget { - final Widget child; - final Completer<Null> connectedCompleter; - final GlobalKey<ScaffoldState> scaffoldKey; - const ConnectivityOverlay({ this.child, this.connectedCompleter, this.scaffoldKey, }); + final Widget child; + final Completer<Null> connectedCompleter; + final GlobalKey<ScaffoldState> scaffoldKey; + @override _ConnectivityOverlayState createState() => _ConnectivityOverlayState(); }
diff --git a/examples/flutter_gallery/lib/gallery/home.dart b/examples/flutter_gallery/lib/gallery/home.dart index 8d156f2..13bc8bb 100644 --- a/examples/flutter_gallery/lib/gallery/home.dart +++ b/examples/flutter_gallery/lib/gallery/home.dart
@@ -268,10 +268,6 @@ } class GalleryHome extends StatefulWidget { - // In checked mode our MaterialApp will show the default "debug" banner. - // Otherwise show the "preview" banner. - static bool showPreviewBanner = true; - const GalleryHome({ Key key, this.testMode = false, @@ -281,6 +277,10 @@ final Widget optionsPage; final bool testMode; + // In checked mode our MaterialApp will show the default "debug" banner. + // Otherwise show the "preview" banner. + static bool showPreviewBanner = true; + @override _GalleryHomeState createState() => _GalleryHomeState(); }
diff --git a/examples/layers/rendering/src/solid_color_box.dart b/examples/layers/rendering/src/solid_color_box.dart index 419d181..9e4660d 100644 --- a/examples/layers/rendering/src/solid_color_box.dart +++ b/examples/layers/rendering/src/solid_color_box.dart
@@ -6,12 +6,12 @@ import 'package:flutter/gestures.dart'; class RenderSolidColorBox extends RenderDecoratedBox { - final Size desiredSize; - final Color backgroundColor; - RenderSolidColorBox(this.backgroundColor, { this.desiredSize = Size.infinite }) : super(decoration: BoxDecoration(color: backgroundColor)); + final Size desiredSize; + final Color backgroundColor; + @override double computeMinIntrinsicWidth(double height) { return desiredSize.width == double.infinity ? 0.0 : desiredSize.width;
diff --git a/examples/stocks/lib/stock_data.dart b/examples/stocks/lib/stock_data.dart index be28ad1..e8d98db 100644 --- a/examples/stocks/lib/stock_data.dart +++ b/examples/stocks/lib/stock_data.dart
@@ -16,12 +16,6 @@ final math.Random _rng = math.Random(); class Stock { - String symbol; - String name; - double lastSale; - String marketCap; - double percentChange; - Stock(this.symbol, this.name, this.lastSale, this.marketCap, this.percentChange); Stock.fromFields(List<String> fields) { @@ -36,6 +30,12 @@ marketCap = fields[4]; percentChange = (_rng.nextDouble() * 20) - 10; } + + String symbol; + String name; + double lastSale; + String marketCap; + double percentChange; } class StockData extends ChangeNotifier {
diff --git a/packages/flutter/lib/src/foundation/basic_types.dart b/packages/flutter/lib/src/foundation/basic_types.dart index dcc4fae..f4dfe93 100644 --- a/packages/flutter/lib/src/foundation/basic_types.dart +++ b/packages/flutter/lib/src/foundation/basic_types.dart
@@ -77,10 +77,6 @@ /// A BitField over an enum (or other class whose values implement "index"). /// Only the first 62 values of the enum can be used as indices. class BitField<T extends dynamic> { - static const int _smiBits = 62; // see https://www.dartlang.org/articles/numeric-computation/#smis-and-mints - static const int _allZeros = 0; - static const int _allOnes = kMaxUnsignedSMI; // 2^(_kSMIBits+1)-1 - /// Creates a bit field of all zeros. /// /// The given length must be at most 62. @@ -101,6 +97,10 @@ final int _length; int _bits; + static const int _smiBits = 62; // see https://www.dartlang.org/articles/numeric-computation/#smis-and-mints + static const int _allZeros = 0; + static const int _allOnes = kMaxUnsignedSMI; // 2^(_kSMIBits+1)-1 + /// Returns whether the bit with the given index is set to one. bool operator [](T index) { assert(index.index < _length);
diff --git a/packages/flutter/lib/src/material/date_picker.dart b/packages/flutter/lib/src/material/date_picker.dart index 602b9bd..53b172c 100644 --- a/packages/flutter/lib/src/material/date_picker.dart +++ b/packages/flutter/lib/src/material/date_picker.dart
@@ -720,11 +720,11 @@ // Defines semantic traversal order of the top-level widgets inside the month // picker. class _MonthPickerSortKey extends OrdinalSortKey { + const _MonthPickerSortKey(double order) : super(order); + static const _MonthPickerSortKey previousMonth = _MonthPickerSortKey(1.0); static const _MonthPickerSortKey nextMonth = _MonthPickerSortKey(2.0); static const _MonthPickerSortKey calendar = _MonthPickerSortKey(3.0); - - const _MonthPickerSortKey(double order) : super(order); } /// A scrollable list of years to allow picking a year.
diff --git a/packages/flutter/lib/src/material/ink_ripple.dart b/packages/flutter/lib/src/material/ink_ripple.dart index b42f90e..457eaf4 100644 --- a/packages/flutter/lib/src/material/ink_ripple.dart +++ b/packages/flutter/lib/src/material/ink_ripple.dart
@@ -92,13 +92,6 @@ /// * [InkHighlight], which is an ink feature that emphasizes a part of a /// [Material]. class InkRipple extends InteractiveInkFeature { - /// Used to specify this type of ink splash for an [InkWell], [InkResponse] - /// or material [Theme]. - static const InteractiveInkFeatureFactory splashFactory = _InkRippleFactory(); - - static final Animatable<double> _easeCurveTween = CurveTween(curve: Curves.ease); - static final Animatable<double> _fadeOutIntervalTween = CurveTween(curve: const Interval(_kFadeOutIntervalStart, 1.0)); - /// Begin a ripple, centered at [position] relative to [referenceBox]. /// /// The [controller] argument is typically obtained via @@ -192,6 +185,13 @@ Animation<int> _fadeOut; AnimationController _fadeOutController; + /// Used to specify this type of ink splash for an [InkWell], [InkResponse] + /// or material [Theme]. + static const InteractiveInkFeatureFactory splashFactory = _InkRippleFactory(); + + static final Animatable<double> _easeCurveTween = CurveTween(curve: Curves.ease); + static final Animatable<double> _fadeOutIntervalTween = CurveTween(curve: const Interval(_kFadeOutIntervalStart, 1.0)); + @override void confirm() { _radiusController
diff --git a/packages/flutter/lib/src/material/ink_splash.dart b/packages/flutter/lib/src/material/ink_splash.dart index 96482f8..c65a386 100644 --- a/packages/flutter/lib/src/material/ink_splash.dart +++ b/packages/flutter/lib/src/material/ink_splash.dart
@@ -96,10 +96,6 @@ /// * [InkHighlight], which is an ink feature that emphasizes a part of a /// [Material]. class InkSplash extends InteractiveInkFeature { - /// Used to specify this type of ink splash for an [InkWell], [InkResponse] - /// or material [Theme]. - static const InteractiveInkFeatureFactory splashFactory = _InkSplashFactory(); - /// Begin a splash, centered at position relative to [referenceBox]. /// /// The [controller] argument is typically obtained via @@ -169,6 +165,10 @@ Animation<int> _alpha; AnimationController _alphaController; + /// Used to specify this type of ink splash for an [InkWell], [InkResponse] + /// or material [Theme]. + static const InteractiveInkFeatureFactory splashFactory = _InkSplashFactory(); + @override void confirm() { final int duration = (_targetRadius / _kSplashConfirmedVelocity).floor();
diff --git a/packages/flutter/lib/src/material/input_border.dart b/packages/flutter/lib/src/material/input_border.dart index 33d828b..6709d16 100644 --- a/packages/flutter/lib/src/material/input_border.dart +++ b/packages/flutter/lib/src/material/input_border.dart
@@ -28,13 +28,6 @@ /// rounded rectangle around the input decorator's container. /// * [InputDecoration], which is used to configure an [InputDecorator]. abstract class InputBorder extends ShapeBorder { - /// No input border. - /// - /// Use this value with [InputDecoration.border] to specify that no border - /// should be drawn. The [InputDecoration.shrinkWrap] constructor sets - /// its border to this value. - static const InputBorder none = _NoInputBorder(); - /// Creates a border for an [InputDecorator]. /// /// The [borderSide] parameter must not be null. Applications typically do @@ -45,6 +38,13 @@ this.borderSide = BorderSide.none, }) : assert(borderSide != null); + /// No input border. + /// + /// Use this value with [InputDecoration.border] to specify that no border + /// should be drawn. The [InputDecoration.shrinkWrap] constructor sets + /// its border to this value. + static const InputBorder none = _NoInputBorder(); + /// Defines the border line's color and weight. /// /// The [InputDecorator] creates copies of its input border, using [copyWith],
diff --git a/packages/flutter/lib/src/material/progress_indicator.dart b/packages/flutter/lib/src/material/progress_indicator.dart index 4c0480c..86bea89 100644 --- a/packages/flutter/lib/src/material/progress_indicator.dart +++ b/packages/flutter/lib/src/material/progress_indicator.dart
@@ -69,6 +69,20 @@ } class _LinearProgressIndicatorPainter extends CustomPainter { + const _LinearProgressIndicatorPainter({ + this.backgroundColor, + this.valueColor, + this.value, + this.animationValue, + @required this.textDirection, + }) : assert(textDirection != null); + + final Color backgroundColor; + final Color valueColor; + final double value; + final double animationValue; + final TextDirection textDirection; + // The indeterminate progress animation displays two lines whose leading (head) // and trailing (tail) endpoints are defined by the following four curves. static const Curve line1Head = Interval( @@ -92,20 +106,6 @@ curve: Cubic(0.10, 0.0, 0.45, 1.0), ); - const _LinearProgressIndicatorPainter({ - this.backgroundColor, - this.valueColor, - this.value, - this.animationValue, - @required this.textDirection, - }) : assert(textDirection != null); - - final Color backgroundColor; - final Color valueColor; - final double value; - final double animationValue; - final TextDirection textDirection; - @override void paint(Canvas canvas, Size size) { final Paint paint = Paint() @@ -254,12 +254,6 @@ } class _CircularProgressIndicatorPainter extends CustomPainter { - static const double _twoPi = math.pi * 2.0; - static const double _epsilon = .001; - // Canvas.drawArc(r, 0, 2*PI) doesn't draw anything, so just get close. - static const double _sweep = _twoPi - _epsilon; - static const double _startAngle = -math.pi / 2.0; - _CircularProgressIndicatorPainter({ this.valueColor, this.value, @@ -285,6 +279,12 @@ final double arcStart; final double arcSweep; + static const double _twoPi = math.pi * 2.0; + static const double _epsilon = .001; + // Canvas.drawArc(r, 0, 2*PI) doesn't draw anything, so just get close. + static const double _sweep = _twoPi - _epsilon; + static const double _startAngle = -math.pi / 2.0; + @override void paint(Canvas canvas, Size size) { final Paint paint = Paint()
diff --git a/packages/flutter/lib/src/material/time.dart b/packages/flutter/lib/src/material/time.dart index 11216a5..2dbf8f8 100644 --- a/packages/flutter/lib/src/material/time.dart +++ b/packages/flutter/lib/src/material/time.dart
@@ -30,15 +30,6 @@ /// time zones. @immutable class TimeOfDay { - /// The number of hours in one day, i.e. 24. - static const int hoursPerDay = 24; - - /// The number of hours in one day period (see also [DayPeriod]), i.e. 12. - static const int hoursPerPeriod = 12; - - /// The number of minutes in one hour, i.e. 60. - static const int minutesPerHour = 60; - /// Creates a time of day. /// /// The [hour] argument must be between 0 and 23, inclusive. The [minute] @@ -57,6 +48,15 @@ /// current minute in the local time zone. factory TimeOfDay.now() { return TimeOfDay.fromDateTime(DateTime.now()); } + /// The number of hours in one day, i.e. 24. + static const int hoursPerDay = 24; + + /// The number of hours in one day period (see also [DayPeriod]), i.e. 12. + static const int hoursPerPeriod = 12; + + /// The number of minutes in one hour, i.e. 60. + static const int minutesPerHour = 60; + /// Returns a new TimeOfDay with the hour and/or minute replaced. TimeOfDay replacing({ int hour, int minute }) { assert(hour == null || (hour >= 0 && hour < hoursPerDay));
diff --git a/packages/flutter/lib/src/rendering/box.dart b/packages/flutter/lib/src/rendering/box.dart index a3dac1a..c6d699d 100644 --- a/packages/flutter/lib/src/rendering/box.dart +++ b/packages/flutter/lib/src/rendering/box.dart
@@ -92,22 +92,6 @@ this.maxHeight = double.infinity }); - /// The minimum width that satisfies the constraints. - final double minWidth; - - /// The maximum width that satisfies the constraints. - /// - /// Might be [double.infinity]. - final double maxWidth; - - /// The minimum height that satisfies the constraints. - final double minHeight; - - /// The maximum height that satisfies the constraints. - /// - /// Might be [double.infinity]. - final double maxHeight; - /// Creates box constraints that is respected only by the given size. BoxConstraints.tight(Size size) : minWidth = size.width, @@ -164,6 +148,22 @@ minHeight = height != null ? height : double.infinity, maxHeight = height != null ? height : double.infinity; + /// The minimum width that satisfies the constraints. + final double minWidth; + + /// The maximum width that satisfies the constraints. + /// + /// Might be [double.infinity]. + final double maxWidth; + + /// The minimum height that satisfies the constraints. + final double minHeight; + + /// The maximum height that satisfies the constraints. + /// + /// Might be [double.infinity]. + final double maxHeight; + /// Creates a copy of this box constraints but with the given fields replaced with the new values. BoxConstraints copyWith({ double minWidth,
diff --git a/packages/flutter/lib/src/services/message_codecs.dart b/packages/flutter/lib/src/services/message_codecs.dart index 88ed29e..1492c2c 100644 --- a/packages/flutter/lib/src/services/message_codecs.dart +++ b/packages/flutter/lib/src/services/message_codecs.dart
@@ -212,6 +212,9 @@ /// The codec is extensible by subclasses overriding [writeValue] and /// [readValueOfType]. class StandardMessageCodec implements MessageCodec<dynamic> { + /// Creates a [MessageCodec] using the Flutter standard binary encoding. + const StandardMessageCodec(); + // The codec serializes messages as outlined below. This format must // match the Android and iOS counterparts. // @@ -264,9 +267,6 @@ static const int _valueList = 12; static const int _valueMap = 13; - /// Creates a [MessageCodec] using the Flutter standard binary encoding. - const StandardMessageCodec(); - @override ByteData encodeMessage(dynamic message) { if (message == null)
diff --git a/packages/flutter/lib/src/services/platform_views.dart b/packages/flutter/lib/src/services/platform_views.dart index 0efb9c4..b32f182 100644 --- a/packages/flutter/lib/src/services/platform_views.dart +++ b/packages/flutter/lib/src/services/platform_views.dart
@@ -97,21 +97,6 @@ /// /// A Dart version of Android's [MotionEvent.PointerProperties](https://developer.android.com/reference/android/view/MotionEvent.PointerProperties). class AndroidPointerProperties { - /// Value for `toolType` when the tool type is unknown. - static const int kToolTypeUnknown = 0; - - /// Value for `toolType` when the tool type is a finger. - static const int kToolTypeFinger = 1; - - /// Value for `toolType` when the tool type is a stylus. - static const int kToolTypeStylus = 2; - - /// Value for `toolType` when the tool type is a mouse. - static const int kToolTypeMouse = 3; - - /// Value for `toolType` when the tool type is an eraser. - static const int kToolTypeEraser = 4; - /// Creates an AndroidPointerProperties. /// /// All parameters must not be null. @@ -128,6 +113,21 @@ /// See Android's [MotionEvent.PointerProperties#toolType](https://developer.android.com/reference/android/view/MotionEvent.PointerProperties.html#toolType). final int toolType; + /// Value for `toolType` when the tool type is unknown. + static const int kToolTypeUnknown = 0; + + /// Value for `toolType` when the tool type is a finger. + static const int kToolTypeFinger = 1; + + /// Value for `toolType` when the tool type is a stylus. + static const int kToolTypeStylus = 2; + + /// Value for `toolType` when the tool type is a mouse. + static const int kToolTypeMouse = 3; + + /// Value for `toolType` when the tool type is an eraser. + static const int kToolTypeEraser = 4; + List<int> _asList() => <int>[id, toolType]; @override
diff --git a/packages/flutter/lib/src/services/system_chrome.dart b/packages/flutter/lib/src/services/system_chrome.dart index d3e2f12..1bafea4 100644 --- a/packages/flutter/lib/src/services/system_chrome.dart +++ b/packages/flutter/lib/src/services/system_chrome.dart
@@ -97,28 +97,6 @@ /// /// Used by [SystemChrome.setSystemUIOverlayStyle]. class SystemUiOverlayStyle { - /// System overlays should be drawn with a light color. Intended for - /// applications with a dark background. - static const SystemUiOverlayStyle light = SystemUiOverlayStyle( - systemNavigationBarColor: Color(0xFF000000), - systemNavigationBarDividerColor: null, - statusBarColor: null, - systemNavigationBarIconBrightness: Brightness.light, - statusBarIconBrightness: Brightness.light, - statusBarBrightness: Brightness.dark, - ); - - /// System overlays should be drawn with a dark color. Intended for - /// applications with a light background. - static const SystemUiOverlayStyle dark = SystemUiOverlayStyle( - systemNavigationBarColor: Color(0xFF000000), - systemNavigationBarDividerColor: null, - statusBarColor: null, - systemNavigationBarIconBrightness: Brightness.light, - statusBarIconBrightness: Brightness.dark, - statusBarBrightness: Brightness.light, - ); - /// Creates a new [SystemUiOverlayStyle]. const SystemUiOverlayStyle({ this.systemNavigationBarColor, @@ -159,6 +137,28 @@ /// Only honored in Android version M and greater. final Brightness statusBarIconBrightness; + /// System overlays should be drawn with a light color. Intended for + /// applications with a dark background. + static const SystemUiOverlayStyle light = SystemUiOverlayStyle( + systemNavigationBarColor: Color(0xFF000000), + systemNavigationBarDividerColor: null, + statusBarColor: null, + systemNavigationBarIconBrightness: Brightness.light, + statusBarIconBrightness: Brightness.light, + statusBarBrightness: Brightness.dark, + ); + + /// System overlays should be drawn with a dark color. Intended for + /// applications with a light background. + static const SystemUiOverlayStyle dark = SystemUiOverlayStyle( + systemNavigationBarColor: Color(0xFF000000), + systemNavigationBarDividerColor: null, + statusBarColor: null, + systemNavigationBarIconBrightness: Brightness.light, + statusBarIconBrightness: Brightness.dark, + statusBarBrightness: Brightness.light, + ); + /// Convert this event to a map for serialization. Map<String, dynamic> _toMap() { return <String, dynamic>{
diff --git a/packages/flutter/lib/src/services/text_input.dart b/packages/flutter/lib/src/services/text_input.dart index 13c4d16..36b7d81 100644 --- a/packages/flutter/lib/src/services/text_input.dart +++ b/packages/flutter/lib/src/services/text_input.dart
@@ -698,6 +698,8 @@ /// An interface to the system's text input control. class TextInput { + TextInput._(); + static const List<TextInputAction> _androidSupportedInputActions = <TextInputAction>[ TextInputAction.none, TextInputAction.unspecified, @@ -724,8 +726,6 @@ TextInputAction.emergencyCall, ]; - TextInput._(); - /// Begin interacting with the text input control. /// /// Calling this function helps multiple clients coordinate about which one is
diff --git a/packages/flutter/lib/src/widgets/basic.dart b/packages/flutter/lib/src/widgets/basic.dart index 24c0d8f..29d1ee5 100644 --- a/packages/flutter/lib/src/widgets/basic.dart +++ b/packages/flutter/lib/src/widgets/basic.dart
@@ -5564,17 +5564,17 @@ }) : assert(child != null), super(key: key); - /// The widget below this widget in the tree. - /// - /// {@macro flutter.widgets.child} - final Widget child; - /// Creates a KeyedSubtree for child with a key that's based on the child's existing key or childIndex. factory KeyedSubtree.wrap(Widget child, int childIndex) { final Key key = child.key != null ? ValueKey<Key>(child.key) : ValueKey<int>(childIndex); return KeyedSubtree(key: key, child: child); } + /// The widget below this widget in the tree. + /// + /// {@macro flutter.widgets.child} + final Widget child; + /// Wrap each item in a KeyedSubtree whose key is based on the item's existing key or /// the sum of its list index and `baseIndex`. static List<Widget> ensureUniqueKeysForList(Iterable<Widget> items, { int baseIndex = 0 }) {
diff --git a/packages/flutter/lib/src/widgets/widget_inspector.dart b/packages/flutter/lib/src/widgets/widget_inspector.dart index 941de32..0df0634 100644 --- a/packages/flutter/lib/src/widgets/widget_inspector.dart +++ b/packages/flutter/lib/src/widgets/widget_inspector.dart
@@ -49,10 +49,10 @@ /// A proxy layer is used for cases where a layer needs to be placed into /// multiple trees of layers. class _ProxyLayer extends Layer { - final Layer _layer; - _ProxyLayer(this._layer); + final Layer _layer; + @override void addToScene(ui.SceneBuilder builder, [Offset layerOffset = Offset.zero]) { _layer.addToScene(builder, layerOffset); @@ -66,9 +66,6 @@ /// secondary screenshot canvas so that a screenshot can be recorded at the same /// time as performing a normal paint. class _MulticastCanvas implements Canvas { - final Canvas _main; - final Canvas _screenshot; - _MulticastCanvas({ @required Canvas main, @required Canvas screenshot, @@ -77,6 +74,9 @@ _main = main, _screenshot = screenshot; + final Canvas _main; + final Canvas _screenshot; + @override void clipPath(Path path, {bool doAntiAlias = true}) { _main.clipPath(path, doAntiAlias: doAntiAlias);
diff --git a/packages/flutter/test/material/time_picker_test.dart b/packages/flutter/test/material/time_picker_test.dart index f3b79e5..daca36d 100644 --- a/packages/flutter/test/material/time_picker_test.dart +++ b/packages/flutter/test/material/time_picker_test.dart
@@ -513,13 +513,13 @@ ); class _SemanticsNodeExpectation { + _SemanticsNodeExpectation(this.label, this.left, this.top, this.right, this.bottom); + final String label; final double left; final double top; final double right; final double bottom; - - _SemanticsNodeExpectation(this.label, this.left, this.top, this.right, this.bottom); } class _CustomPainterSemanticsTester {
diff --git a/packages/flutter/test/painting/fake_codec.dart b/packages/flutter/test/painting/fake_codec.dart index 3ea014b..17e433d 100644 --- a/packages/flutter/test/painting/fake_codec.dart +++ b/packages/flutter/test/painting/fake_codec.dart
@@ -14,13 +14,13 @@ /// This is useful for running in the test Zone, where it is tricky to receive /// callbacks originating from the IO thread. class FakeCodec implements ui.Codec { + FakeCodec._(this._frameCount, this._repetitionCount, this._frameInfos); + final int _frameCount; final int _repetitionCount; final List<ui.FrameInfo> _frameInfos; int _nextFrame = 0; - FakeCodec._(this._frameCount, this._repetitionCount, this._frameInfos); - /// Creates a FakeCodec from encoded image data. /// /// Only call this method outside of the test zone.
diff --git a/packages/flutter/test/painting/image_resolution_test.dart b/packages/flutter/test/painting/image_resolution_test.dart index 9099ae9..75a62c7 100644 --- a/packages/flutter/test/painting/image_resolution_test.dart +++ b/packages/flutter/test/painting/image_resolution_test.dart
@@ -13,11 +13,10 @@ class TestAssetBundle extends CachingAssetBundle { + TestAssetBundle(this._assetBundleMap); Map<String, List<String>> _assetBundleMap; - TestAssetBundle(this._assetBundleMap); - Map<String, int> loadCallCount = <String, int>{}; String get _assetBundleContents {
diff --git a/packages/flutter/test/painting/image_stream_test.dart b/packages/flutter/test/painting/image_stream_test.dart index 6c54351..40c89a4 100644 --- a/packages/flutter/test/painting/image_stream_test.dart +++ b/packages/flutter/test/painting/image_stream_test.dart
@@ -11,12 +11,12 @@ import 'package:flutter_test/flutter_test.dart'; class FakeFrameInfo implements FrameInfo { - final Duration _duration; - final Image _image; - FakeFrameInfo(int width, int height, this._duration) : _image = FakeImage(width, height); + final Duration _duration; + final Image _image; + @override Duration get duration => _duration; @@ -25,11 +25,11 @@ } class FakeImage implements Image { + FakeImage(this._width, this._height); + final int _width; final int _height; - FakeImage(this._width, this._height); - @override int get width => _width;
diff --git a/packages/flutter/test/rendering/mock_canvas.dart b/packages/flutter/test/rendering/mock_canvas.dart index 5dc2cac..172801f 100644 --- a/packages/flutter/test/rendering/mock_canvas.dart +++ b/packages/flutter/test/rendering/mock_canvas.dart
@@ -558,12 +558,12 @@ } class _TestRecordingCanvasPaintsCountMatcher extends _TestRecordingCanvasMatcher { - final Symbol _methodName; - final int _count; - _TestRecordingCanvasPaintsCountMatcher(Symbol methodName, int count) : _methodName = methodName, _count = count; + final Symbol _methodName; + final int _count; + @override Description describe(Description description) { return description.add('Object or closure painting $_methodName exactly $_count times');
diff --git a/packages/flutter/test/widgets/image_test.dart b/packages/flutter/test/widgets/image_test.dart index 513b330..04fd69e 100644 --- a/packages/flutter/test/widgets/image_test.dart +++ b/packages/flutter/test/widgets/image_test.dart
@@ -792,15 +792,15 @@ } class TestImageProvider extends ImageProvider<TestImageProvider> { - final Completer<ImageInfo> _completer = Completer<ImageInfo>(); - ImageStreamCompleter _streamCompleter; - ImageConfiguration _lastResolvedConfiguration; - TestImageProvider({ImageStreamCompleter streamCompleter}) { _streamCompleter = streamCompleter ?? OneFrameImageStreamCompleter(_completer.future); } + final Completer<ImageInfo> _completer = Completer<ImageInfo>(); + ImageStreamCompleter _streamCompleter; + ImageConfiguration _lastResolvedConfiguration; + @override Future<TestImageProvider> obtainKey(ImageConfiguration configuration) { return SynchronousFuture<TestImageProvider>(this);
diff --git a/packages/flutter_driver/lib/src/common/text.dart b/packages/flutter_driver/lib/src/common/text.dart index c0d70b8..328c92d 100644 --- a/packages/flutter_driver/lib/src/common/text.dart +++ b/packages/flutter_driver/lib/src/common/text.dart
@@ -41,14 +41,14 @@ /// Creates a command that enters text into the currently focused widget. EnterText(this.text, { Duration timeout }) : super(timeout: timeout); - /// The text extracted by the [GetText] command. - final String text; - /// Deserializes this command from the value generated by [serialize]. EnterText.deserialize(Map<String, dynamic> json) : text = json['text'], super.deserialize(json); + /// The text extracted by the [GetText] command. + final String text; + @override final String kind = 'enter_text'; @@ -77,14 +77,14 @@ /// Creates a command that enables and disables text entry emulation. SetTextEntryEmulation(this.enabled, { Duration timeout }) : super(timeout: timeout); - /// Whether text entry emulation should be enabled. - final bool enabled; - /// Deserializes this command from the value generated by [serialize]. SetTextEntryEmulation.deserialize(Map<String, dynamic> json) : enabled = json['enabled'] == 'true', super.deserialize(json); + /// Whether text entry emulation should be enabled. + final bool enabled; + @override final String kind = 'set_text_entry_emulation';
diff --git a/packages/flutter_driver/lib/src/driver/driver.dart b/packages/flutter_driver/lib/src/driver/driver.dart index 5aa1e47..c4ab1b6 100644 --- a/packages/flutter_driver/lib/src/driver/driver.dart +++ b/packages/flutter_driver/lib/src/driver/driver.dart
@@ -770,6 +770,9 @@ /// Encapsulates connection information to an instance of a Flutter application. @visibleForTesting class VMServiceClientConnection { + /// Creates an instance of this class given a [client] and a [peer]. + VMServiceClientConnection(this.client, this.peer); + /// Use this for structured access to the VM service's public APIs. final VMServiceClient client; @@ -778,9 +781,6 @@ /// This object allows reaching into private VM service APIs. Use with /// caution. final rpc.Peer peer; - - /// Creates an instance of this class given a [client] and a [peer]. - VMServiceClientConnection(this.client, this.peer); } /// A function that connects to a Dart VM service given the [url].
diff --git a/packages/flutter_driver/lib/src/extension/extension.dart b/packages/flutter_driver/lib/src/extension/extension.dart index 3adb1d5..cc3f0a8 100644 --- a/packages/flutter_driver/lib/src/extension/extension.dart +++ b/packages/flutter_driver/lib/src/extension/extension.dart
@@ -92,8 +92,6 @@ /// calling [enableFlutterDriverExtension]. @visibleForTesting class FlutterDriverExtension { - final TestTextInput _testTextInput = TestTextInput(); - /// Creates an object to manage a Flutter Driver connection. FlutterDriverExtension(this._requestDataHandler, this._silenceErrors) { _testTextInput.register(); @@ -143,6 +141,8 @@ }); } + final TestTextInput _testTextInput = TestTextInput(); + final DataHandler _requestDataHandler; final bool _silenceErrors;
diff --git a/packages/flutter_tools/lib/src/android/android_studio.dart b/packages/flutter_tools/lib/src/android/android_studio.dart index 932433b..00f0dda 100644 --- a/packages/flutter_tools/lib/src/android/android_studio.dart +++ b/packages/flutter_tools/lib/src/android/android_studio.dart
@@ -36,16 +36,6 @@ _init(); } - final String directory; - final String studioAppName; - final Version version; - final String configured; - - String _pluginsPath; - String _javaPath; - bool _isValid = false; - final List<String> _validationMessages = <String>[]; - factory AndroidStudio.fromMacOSBundle(String bundlePath) { final String studioPath = fs.path.join(bundlePath, 'Contents'); final String plistFile = fs.path.join(studioPath, 'Info.plist'); @@ -89,6 +79,16 @@ return null; } + final String directory; + final String studioAppName; + final Version version; + final String configured; + + String _pluginsPath; + String _javaPath; + bool _isValid = false; + final List<String> _validationMessages = <String>[]; + String get javaPath => _javaPath; bool get isValid => _isValid;
diff --git a/packages/flutter_tools/lib/src/android/android_studio_validator.dart b/packages/flutter_tools/lib/src/android/android_studio_validator.dart index 3302e94..b12d338 100644 --- a/packages/flutter_tools/lib/src/android/android_studio_validator.dart +++ b/packages/flutter_tools/lib/src/android/android_studio_validator.dart
@@ -11,10 +11,10 @@ import 'android_studio.dart'; class AndroidStudioValidator extends DoctorValidator { - final AndroidStudio _studio; - AndroidStudioValidator(this._studio) : super('Android Studio'); + final AndroidStudio _studio; + static List<DoctorValidator> get allValidators { final List<DoctorValidator> validators = <DoctorValidator>[]; final List<AndroidStudio> studios = AndroidStudio.allInstalled();
diff --git a/packages/flutter_tools/lib/src/application_package.dart b/packages/flutter_tools/lib/src/application_package.dart index 03fbd9b..fc16897 100644 --- a/packages/flutter_tools/lib/src/application_package.dart +++ b/packages/flutter_tools/lib/src/application_package.dart
@@ -21,12 +21,12 @@ import 'tester/flutter_tester.dart'; abstract class ApplicationPackage { - /// Package ID from the Android Manifest or equivalent. - final String id; - ApplicationPackage({ @required this.id }) : assert(id != null); + /// Package ID from the Android Manifest or equivalent. + final String id; + String get name; String get displayName => name; @@ -38,12 +38,6 @@ } class AndroidApk extends ApplicationPackage { - /// Path to the actual apk file. - final File file; - - /// The path to the activity that should be launched. - final String launchActivity; - AndroidApk({ String id, @required this.file, @@ -88,6 +82,12 @@ ); } + /// Path to the actual apk file. + final File file; + + /// The path to the activity that should be launched. + final String launchActivity; + /// Creates a new AndroidApk based on the information in the Android manifest. static Future<AndroidApk> fromAndroidProject(AndroidProject androidProject) async { File apkFile; @@ -250,15 +250,15 @@ } class PrebuiltIOSApp extends IOSApp { - final Directory bundleDir; - final String bundleName; - PrebuiltIOSApp({ this.bundleDir, this.bundleName, @required String projectBundleId, }) : super(projectBundleId: projectBundleId); + final Directory bundleDir; + final String bundleName; + @override String get name => bundleName; @@ -299,11 +299,11 @@ } class ApplicationPackageStore { + ApplicationPackageStore({ this.android, this.iOS }); + AndroidApk android; IOSApp iOS; - ApplicationPackageStore({ this.android, this.iOS }); - Future<ApplicationPackage> getPackageForPlatform(TargetPlatform platform) async { switch (platform) { case TargetPlatform.android_arm: @@ -332,9 +332,6 @@ } class _Element extends _Entry { - List<_Entry> children; - String name; - _Element.fromLine(String line, _Element parent) { // E: application (line=29) final List<String> parts = line.trimLeft().split(' '); @@ -344,6 +341,9 @@ children = <_Entry>[]; } + List<_Entry> children; + String name; + void addChild(_Entry child) { children.add(child); } @@ -369,9 +369,6 @@ } class _Attribute extends _Entry { - String key; - String value; - _Attribute.fromLine(String line, _Element parent) { // A: android:label(0x01010001)="hello_world" (Raw: "hello_world") const String attributePrefix = 'A: '; @@ -383,6 +380,9 @@ level = line.length - line.trimLeft().length; this.parent = parent; } + + String key; + String value; } class ApkManifestData {
diff --git a/packages/flutter_tools/lib/src/artifacts.dart b/packages/flutter_tools/lib/src/artifacts.dart index 9ad2d9b..59c20c7 100644 --- a/packages/flutter_tools/lib/src/artifacts.dart +++ b/packages/flutter_tools/lib/src/artifacts.dart
@@ -231,12 +231,12 @@ /// Manages the artifacts of a locally built engine. class LocalEngineArtifacts extends Artifacts { + LocalEngineArtifacts(this._engineSrcPath, this.engineOutPath, this._hostEngineOutPath); + final String _engineSrcPath; final String engineOutPath; // TODO(goderbauer): This should be private. String _hostEngineOutPath; - LocalEngineArtifacts(this._engineSrcPath, this.engineOutPath, this._hostEngineOutPath); - @override String getArtifactPath(Artifact artifact, [TargetPlatform platform, BuildMode mode]) { switch (artifact) {
diff --git a/packages/flutter_tools/lib/src/asset.dart b/packages/flutter_tools/lib/src/asset.dart index 5052e5d..871c882 100644 --- a/packages/flutter_tools/lib/src/asset.dart +++ b/packages/flutter_tools/lib/src/asset.dart
@@ -56,21 +56,21 @@ } class _ManifestAssetBundle implements AssetBundle { + /// Constructs an [_ManifestAssetBundle] that gathers the set of assets from the + /// pubspec.yaml manifest. + _ManifestAssetBundle(); + @override final Map<String, DevFSContent> entries = <String, DevFSContent>{}; + DateTime _lastBuildTimestamp; + static const String defaultManifestPath = 'pubspec.yaml'; static const String _assetManifestJson = 'AssetManifest.json'; static const String _fontManifestJson = 'FontManifest.json'; static const String _fontSetMaterial = 'material'; static const String _license = 'LICENSE'; - DateTime _lastBuildTimestamp; - - /// Constructs an [_ManifestAssetBundle] that gathers the set of assets from the - /// pubspec.yaml manifest. - _ManifestAssetBundle(); - @override bool wasBuiltOnce() => _lastBuildTimestamp != null;
diff --git a/packages/flutter_tools/lib/src/base/version.dart b/packages/flutter_tools/lib/src/base/version.dart index 663c43e..80ad3f0 100644 --- a/packages/flutter_tools/lib/src/base/version.dart +++ b/packages/flutter_tools/lib/src/base/version.dart
@@ -3,24 +3,6 @@ // found in the LICENSE file. class Version implements Comparable<Version> { - static final RegExp versionPattern = - RegExp(r'^(\d+)(\.(\d+)(\.(\d+))?)?'); - - /// The major version number: "1" in "1.2.3". - final int major; - - /// The minor version number: "2" in "1.2.3". - final int minor; - - /// The patch version number: "3" in "1.2.3". - final int patch; - - /// The original string representation of the version number. - /// - /// This preserves textual artifacts like leading zeros that may be left out - /// of the parsed version. - final String _text; - /// Creates a new [Version] object. factory Version(int major, int minor, int patch, {String text}) { if (text == null) { @@ -76,6 +58,24 @@ static Version get unknown => Version(0, 0, 0, text: 'unknown'); + /// The major version number: "1" in "1.2.3". + final int major; + + /// The minor version number: "2" in "1.2.3". + final int minor; + + /// The patch version number: "3" in "1.2.3". + final int patch; + + /// The original string representation of the version number. + /// + /// This preserves textual artifacts like leading zeros that may be left out + /// of the parsed version. + final String _text; + + static final RegExp versionPattern = + RegExp(r'^(\d+)(\.(\d+)(\.(\d+))?)?'); + /// Two [Version]s are equal if their version numbers are. The version text /// is ignored. @override
diff --git a/packages/flutter_tools/lib/src/commands/analyze_base.dart b/packages/flutter_tools/lib/src/commands/analyze_base.dart index 04547d2..e10f96f 100644 --- a/packages/flutter_tools/lib/src/commands/analyze_base.dart +++ b/packages/flutter_tools/lib/src/commands/analyze_base.dart
@@ -15,11 +15,11 @@ /// Common behavior for `flutter analyze` and `flutter analyze --watch` abstract class AnalyzeBase { + AnalyzeBase(this.argResults); + /// The parsed argument results for execution. final ArgResults argResults; - AnalyzeBase(this.argResults); - /// Called by [AnalyzeCommand] to start the analysis process. Future<Null> analyze();
diff --git a/packages/flutter_tools/lib/src/commands/daemon.dart b/packages/flutter_tools/lib/src/commands/daemon.dart index 18d38bc..de16efb 100644 --- a/packages/flutter_tools/lib/src/commands/daemon.dart +++ b/packages/flutter_tools/lib/src/commands/daemon.dart
@@ -819,14 +819,14 @@ /// This domain responds to methods like [getEmulators] and [launch]. class EmulatorDomain extends Domain { - EmulatorManager emulators = EmulatorManager(); - EmulatorDomain(Daemon daemon) : super(daemon, 'emulator') { registerHandler('getEmulators', getEmulators); registerHandler('launch', launch); registerHandler('create', create); } + EmulatorManager emulators = EmulatorManager(); + Future<List<Map<String, dynamic>>> getEmulators([Map<String, dynamic> args]) async { final List<Emulator> list = await emulators.getAllAvailableEmulators(); return list.map<Map<String, dynamic>>(_emulatorToMap).toList(); @@ -971,9 +971,9 @@ } class LogMessage { + LogMessage(this.level, this.message, [this.stackTrace]); + final String level; final String message; final StackTrace stackTrace; - - LogMessage(this.level, this.message, [this.stackTrace]); }
diff --git a/packages/flutter_tools/lib/src/commands/fuchsia_reload.dart b/packages/flutter_tools/lib/src/commands/fuchsia_reload.dart index 3979beb..9bb14cf 100644 --- a/packages/flutter_tools/lib/src/commands/fuchsia_reload.dart +++ b/packages/flutter_tools/lib/src/commands/fuchsia_reload.dart
@@ -444,18 +444,18 @@ // VM service running on a Fuchsia device. [process] is the ssh process running // the tunnel and [port] is the local port. class _PortForwarder { - final String _remoteAddress; - final int _remotePort; - final int _localPort; - final Process _process; - final String _sshConfig; - _PortForwarder._(this._remoteAddress, this._remotePort, this._localPort, this._process, this._sshConfig); + final String _remoteAddress; + final int _remotePort; + final int _localPort; + final Process _process; + final String _sshConfig; + int get port => _localPort; static Future<_PortForwarder> start(String sshConfig, @@ -519,11 +519,11 @@ } class FuchsiaDeviceCommandRunner { + FuchsiaDeviceCommandRunner(this._address, this._sshConfig); + final String _address; final String _sshConfig; - FuchsiaDeviceCommandRunner(this._address, this._sshConfig); - Future<List<String>> run(String command) async { final List<String> args = <String>['ssh', '-F', _sshConfig, _address, command]; printTrace(args.join(' '));
diff --git a/packages/flutter_tools/lib/src/commands/run.dart b/packages/flutter_tools/lib/src/commands/run.dart index 36efd98..40c3548 100644 --- a/packages/flutter_tools/lib/src/commands/run.dart +++ b/packages/flutter_tools/lib/src/commands/run.dart
@@ -72,12 +72,6 @@ } class RunCommand extends RunCommandBase { - @override - final String name = 'run'; - - @override - final String description = 'Run your Flutter app on an attached device.'; - RunCommand({ bool verboseHelp = false }) : super(verboseHelp: verboseHelp) { requiresPubspecYaml(); usesFilesystemOptions(hide: !verboseHelp); @@ -179,6 +173,12 @@ ..addOption(FlutterOptions.kExtraGenSnapshotOptions, hide: true); } + @override + final String name = 'run'; + + @override + final String description = 'Run your Flutter app on an attached device.'; + List<Device> devices; @override
diff --git a/packages/flutter_tools/lib/src/compile.dart b/packages/flutter_tools/lib/src/compile.dart index a3c6930..9ae0778 100644 --- a/packages/flutter_tools/lib/src/compile.dart +++ b/packages/flutter_tools/lib/src/compile.dart
@@ -21,10 +21,10 @@ typedef CompilerMessageConsumer = void Function(String message, {bool emphasis, TerminalColor color}); class CompilerOutput { + const CompilerOutput(this.outputFilename, this.errorCount); + final String outputFilename; final int errorCount; - - const CompilerOutput(this.outputFilename, this.errorCount); } class _StdoutHandler { @@ -198,10 +198,10 @@ /// Class that allows to serialize compilation requests to the compiler. abstract class _CompilationRequest { - Completer<CompilerOutput> completer; - _CompilationRequest(this.completer); + Completer<CompilerOutput> completer; + Future<CompilerOutput> _run(ResidentCompiler compiler); Future<void> run(ResidentCompiler compiler) async {
diff --git a/packages/flutter_tools/lib/src/crash_reporting.dart b/packages/flutter_tools/lib/src/crash_reporting.dart index 9018cee..b353780 100644 --- a/packages/flutter_tools/lib/src/crash_reporting.dart +++ b/packages/flutter_tools/lib/src/crash_reporting.dart
@@ -48,10 +48,10 @@ /// * In tests call [initializeWith] and provide a mock implementation of /// [http.Client]. class CrashReportSender { - static CrashReportSender _instance; - CrashReportSender._(this._client); + static CrashReportSender _instance; + static CrashReportSender get instance => _instance ?? CrashReportSender._(http.Client()); /// Overrides the default [http.Client] with [client] for testing purposes.
diff --git a/packages/flutter_tools/lib/src/dart/pub.dart b/packages/flutter_tools/lib/src/dart/pub.dart index b4b6e6b..b318302 100644 --- a/packages/flutter_tools/lib/src/dart/pub.dart +++ b/packages/flutter_tools/lib/src/dart/pub.dart
@@ -23,7 +23,17 @@ // DO NOT update without contacting kevmoo. // We have server-side tooling that assumes the values are consistent. class PubContext { - static final RegExp _validContext = RegExp('[a-z][a-z_]*[a-z]'); + PubContext._(this._values) { + for (String item in _values) { + if (!_validContext.hasMatch(item)) { + throw ArgumentError.value( + _values, 'value', 'Must match RegExp ${_validContext.pattern}'); + } + } + } + + static PubContext getVerifyContext(String commandName) => + PubContext._(<String>['verify', commandName.replaceAll('-', '_')]); static final PubContext create = PubContext._(<String>['create']); static final PubContext createPackage = PubContext._(<String>['create_pkg']); @@ -38,17 +48,7 @@ final List<String> _values; - PubContext._(this._values) { - for (String item in _values) { - if (!_validContext.hasMatch(item)) { - throw ArgumentError.value( - _values, 'value', 'Must match RegExp ${_validContext.pattern}'); - } - } - } - - static PubContext getVerifyContext(String commandName) => - PubContext._(<String>['verify', commandName.replaceAll('-', '_')]); + static final RegExp _validContext = RegExp('[a-z][a-z_]*[a-z]'); @override String toString() => 'PubContext: ${_values.join(':')}';
diff --git a/packages/flutter_tools/lib/src/dependency_checker.dart b/packages/flutter_tools/lib/src/dependency_checker.dart index 8316443..bcc9407 100644 --- a/packages/flutter_tools/lib/src/dependency_checker.dart +++ b/packages/flutter_tools/lib/src/dependency_checker.dart
@@ -8,10 +8,11 @@ import 'globals.dart'; class DependencyChecker { + DependencyChecker(this.builder, this.assets); + final DartDependencySetBuilder builder; final Set<String> _dependencies = Set<String>(); final AssetBundle assets; - DependencyChecker(this.builder, this.assets); /// Returns [true] if any components have been modified after [threshold] or /// if it cannot be determined.
diff --git a/packages/flutter_tools/lib/src/devfs.dart b/packages/flutter_tools/lib/src/devfs.dart index 3dd8819..54b7107 100644 --- a/packages/flutter_tools/lib/src/devfs.dart +++ b/packages/flutter_tools/lib/src/devfs.dart
@@ -201,10 +201,10 @@ /// An implementation of [DevFSOperations] that speaks to the /// vm service. class ServiceProtocolDevFSOperations implements DevFSOperations { - final VMService vmService; - ServiceProtocolDevFSOperations(this.vmService); + final VMService vmService; + @override Future<Uri> create(String fsName) async { final Map<String, dynamic> response = await vmService.vm.createDevFS(fsName);
diff --git a/packages/flutter_tools/lib/src/doctor.dart b/packages/flutter_tools/lib/src/doctor.dart index d0fcf2f..ca10b6e 100644 --- a/packages/flutter_tools/lib/src/doctor.dart +++ b/packages/flutter_tools/lib/src/doctor.dart
@@ -420,10 +420,10 @@ } abstract class IntelliJValidator extends DoctorValidator { - final String installPath; - IntelliJValidator(String title, this.installPath) : super(title); + final String installPath; + String get version; String get pluginsPath; @@ -644,10 +644,10 @@ } class ValidatorWithResult extends DoctorValidator { - final ValidationResult result; - ValidatorWithResult(String title, this.result) : super(title); + final ValidationResult result; + @override Future<ValidationResult> validate() async => result; }
diff --git a/packages/flutter_tools/lib/src/emulator.dart b/packages/flutter_tools/lib/src/emulator.dart index 42e63fe..51d0706 100644 --- a/packages/flutter_tools/lib/src/emulator.dart +++ b/packages/flutter_tools/lib/src/emulator.dart
@@ -277,10 +277,10 @@ } class CreateEmulatorResult { + CreateEmulatorResult(this.emulatorName, {this.success, this.output, this.error}); + final bool success; final String emulatorName; final String output; final String error; - - CreateEmulatorResult(this.emulatorName, {this.success, this.output, this.error}); }
diff --git a/packages/flutter_tools/lib/src/fuchsia/fuchsia_device.dart b/packages/flutter_tools/lib/src/fuchsia/fuchsia_device.dart index 0c02bcc..7609979 100644 --- a/packages/flutter_tools/lib/src/fuchsia/fuchsia_device.dart +++ b/packages/flutter_tools/lib/src/fuchsia/fuchsia_device.dart
@@ -10,10 +10,10 @@ /// Read the log for a particular device. class _FuchsiaLogReader extends DeviceLogReader { - FuchsiaDevice _device; - _FuchsiaLogReader(this._device); + FuchsiaDevice _device; + @override String get name => _device.name; Stream<String> _logLines;
diff --git a/packages/flutter_tools/lib/src/intellij/intellij.dart b/packages/flutter_tools/lib/src/intellij/intellij.dart index 03f2d0f..46278ba 100644 --- a/packages/flutter_tools/lib/src/intellij/intellij.dart +++ b/packages/flutter_tools/lib/src/intellij/intellij.dart
@@ -11,11 +11,11 @@ import '../doctor.dart'; class IntelliJPlugins { - static final Version kMinFlutterPluginVersion = Version(16, 0, 0); + IntelliJPlugins(this.pluginsPath); final String pluginsPath; - IntelliJPlugins(this.pluginsPath); + static final Version kMinFlutterPluginVersion = Version(16, 0, 0); void validatePackage( List<ValidationMessage> messages, List<String> packageNames, String title,
diff --git a/packages/flutter_tools/lib/src/ios/devices.dart b/packages/flutter_tools/lib/src/ios/devices.dart index d9f4e26..f567692 100644 --- a/packages/flutter_tools/lib/src/ios/devices.dart +++ b/packages/flutter_tools/lib/src/ios/devices.dart
@@ -440,11 +440,6 @@ } class _IOSDeviceLogReader extends DeviceLogReader { - // Matches a syslog line from the runner. - RegExp _runnerLineRegex; - // Matches a syslog line from any app. - RegExp _anyLineRegex; - _IOSDeviceLogReader(this.device, ApplicationPackage app) { _linesController = StreamController<String>.broadcast( onListen: _start, @@ -465,6 +460,11 @@ final IOSDevice device; + // Matches a syslog line from the runner. + RegExp _runnerLineRegex; + // Matches a syslog line from any app. + RegExp _anyLineRegex; + StreamController<String> _linesController; Process _process;
diff --git a/packages/flutter_tools/lib/src/ios/simulators.dart b/packages/flutter_tools/lib/src/ios/simulators.dart index 77dd9d4..ea830e3 100644 --- a/packages/flutter_tools/lib/src/ios/simulators.dart +++ b/packages/flutter_tools/lib/src/ios/simulators.dart
@@ -482,8 +482,6 @@ } class _IOSSimulatorLogReader extends DeviceLogReader { - String _appName; - _IOSSimulatorLogReader(this.device, IOSApp app) { _linesController = StreamController<String>.broadcast( onListen: _start, @@ -494,6 +492,8 @@ final IOSSimulator device; + String _appName; + StreamController<String> _linesController; // We log from two files: the device and the system log.
diff --git a/packages/flutter_tools/lib/src/plugins.dart b/packages/flutter_tools/lib/src/plugins.dart index 2b959c7..cd4827b 100644 --- a/packages/flutter_tools/lib/src/plugins.dart +++ b/packages/flutter_tools/lib/src/plugins.dart
@@ -22,12 +22,6 @@ } class Plugin { - final String name; - final String path; - final String androidPackage; - final String iosPrefix; - final String pluginClass; - Plugin({ this.name, this.path, @@ -53,6 +47,12 @@ pluginClass: pluginClass, ); } + + final String name; + final String path; + final String androidPackage; + final String iosPrefix; + final String pluginClass; } Plugin _pluginFromPubspec(String name, Uri packageRoot) {
diff --git a/packages/flutter_tools/lib/src/project.dart b/packages/flutter_tools/lib/src/project.dart index 0654611..3f94c80 100644 --- a/packages/flutter_tools/lib/src/project.dart +++ b/packages/flutter_tools/lib/src/project.dart
@@ -148,15 +148,15 @@ /// Instances will reflect the contents of the `ios/` sub-folder of /// Flutter applications and the `.ios/` sub-folder of Flutter modules. class IosProject { - static final RegExp _productBundleIdPattern = RegExp(r'^\s*PRODUCT_BUNDLE_IDENTIFIER\s*=\s*(.*);\s*$'); - static const String _productBundleIdVariable = r'$(PRODUCT_BUNDLE_IDENTIFIER)'; - static const String _hostAppBundleName = 'Runner'; - IosProject._(this.parent); /// The parent of this project. final FlutterProject parent; + static final RegExp _productBundleIdPattern = RegExp(r'^\s*PRODUCT_BUNDLE_IDENTIFIER\s*=\s*(.*);\s*$'); + static const String _productBundleIdVariable = r'$(PRODUCT_BUNDLE_IDENTIFIER)'; + static const String _hostAppBundleName = 'Runner'; + Directory get _ephemeralDirectory => parent.directory.childDirectory('.ios'); Directory get _editableDirectory => parent.directory.childDirectory('ios'); @@ -321,14 +321,14 @@ /// Instances will reflect the contents of the `android/` sub-folder of /// Flutter applications and the `.android/` sub-folder of Flutter modules. class AndroidProject { - static final RegExp _applicationIdPattern = RegExp('^\\s*applicationId\\s+[\'\"](.*)[\'\"]\\s*\$'); - static final RegExp _groupPattern = RegExp('^\\s*group\\s+[\'\"](.*)[\'\"]\\s*\$'); - AndroidProject._(this.parent); /// The parent of this project. final FlutterProject parent; + static final RegExp _applicationIdPattern = RegExp('^\\s*applicationId\\s+[\'\"](.*)[\'\"]\\s*\$'); + static final RegExp _groupPattern = RegExp('^\\s*group\\s+[\'\"](.*)[\'\"]\\s*\$'); + /// The Gradle root directory of the Android host app. This is the directory /// containing the `app/` subdirectory and the `settings.gradle` file that /// includes it in the overall Gradle project.
diff --git a/packages/flutter_tools/lib/src/tester/flutter_tester.dart b/packages/flutter_tools/lib/src/tester/flutter_tester.dart index 4e5ff5f..219d46b 100644 --- a/packages/flutter_tools/lib/src/tester/flutter_tester.dart +++ b/packages/flutter_tools/lib/src/tester/flutter_tester.dart
@@ -22,8 +22,6 @@ import '../version.dart'; class FlutterTesterApp extends ApplicationPackage { - final Directory _directory; - factory FlutterTesterApp.fromCurrentDirectory() { return FlutterTesterApp._(fs.currentDirectory); } @@ -32,6 +30,8 @@ : _directory = directory, super(id: directory.path); + final Directory _directory; + @override String get name => _directory.basename;
diff --git a/packages/flutter_tools/lib/src/version.dart b/packages/flutter_tools/lib/src/version.dart index 98612c0..da54493 100644 --- a/packages/flutter_tools/lib/src/version.dart +++ b/packages/flutter_tools/lib/src/version.dart
@@ -368,10 +368,6 @@ /// Contains data and load/save logic pertaining to Flutter version checks. @visibleForTesting class VersionCheckStamp { - /// The prefix of the stamp file where we cache Flutter version check data. - @visibleForTesting - static const String kFlutterVersionCheckStampFile = 'flutter_version_check'; - const VersionCheckStamp({ this.lastTimeVersionWasChecked, this.lastKnownRemoteVersion, @@ -382,6 +378,10 @@ final DateTime lastKnownRemoteVersion; final DateTime lastTimeWarningWasPrinted; + /// The prefix of the stamp file where we cache Flutter version check data. + @visibleForTesting + static const String kFlutterVersionCheckStampFile = 'flutter_version_check'; + static Future<VersionCheckStamp> load() async { final String versionCheckStamp = Cache.instance.getStampFor(kFlutterVersionCheckStampFile);
diff --git a/packages/flutter_tools/lib/src/vmservice.dart b/packages/flutter_tools/lib/src/vmservice.dart index 0fa50cb..e76b963 100644 --- a/packages/flutter_tools/lib/src/vmservice.dart +++ b/packages/flutter_tools/lib/src/vmservice.dart
@@ -559,7 +559,20 @@ } class ServiceEvent extends ServiceObject { - /// The possible 'kind' values. + ServiceEvent._empty(ServiceObjectOwner owner) : super._empty(owner); + + String _kind; + String get kind => _kind; + DateTime _timestamp; + DateTime get timestamp => _timestamp; + String _extensionKind; + String get extensionKind => _extensionKind; + Map<String, dynamic> _extensionData; + Map<String, dynamic> get extensionData => _extensionData; + List<Map<String, dynamic>> _timelineEvents; + List<Map<String, dynamic>> get timelineEvents => _timelineEvents; + + // The possible 'kind' values. static const String kVMUpdate = 'VMUpdate'; static const String kIsolateStart = 'IsolateStart'; static const String kIsolateRunnable = 'IsolateRunnable'; @@ -587,19 +600,6 @@ static const String kLogging = '_Logging'; static const String kExtension = 'Extension'; - ServiceEvent._empty(ServiceObjectOwner owner) : super._empty(owner); - - String _kind; - String get kind => _kind; - DateTime _timestamp; - DateTime get timestamp => _timestamp; - String _extensionKind; - String get extensionKind => _extensionKind; - Map<String, dynamic> _extensionData; - Map<String, dynamic> get extensionData => _extensionData; - List<Map<String, dynamic>> _timelineEvents; - List<Map<String, dynamic>> get timelineEvents => _timelineEvents; - @override void _update(Map<String, dynamic> map, bool mapIsRef) { _loaded = true;
diff --git a/packages/flutter_tools/lib/src/vmservice_record_replay.dart b/packages/flutter_tools/lib/src/vmservice_record_replay.dart index 49dd7c3..0126f87 100644 --- a/packages/flutter_tools/lib/src/vmservice_record_replay.dart +++ b/packages/flutter_tools/lib/src/vmservice_record_replay.dart
@@ -22,11 +22,6 @@ /// A [StreamChannel] that expects VM service (JSON-rpc) protocol messages and /// serializes all such messages to the file system for later playback. class RecordingVMServiceChannel extends DelegatingStreamChannel<String> { - final List<_Message> _messages = <_Message>[]; - - _RecordingStream _streamRecorder; - _RecordingSink _sinkRecorder; - RecordingVMServiceChannel(StreamChannel<String> delegate, Directory location) : super(delegate) { addShutdownHook(() async { @@ -41,6 +36,11 @@ }, ShutdownStage.SERIALIZE_RECORDING); } + final List<_Message> _messages = <_Message>[]; + + _RecordingStream _streamRecorder; + _RecordingSink _sinkRecorder; + @override Stream<String> get stream { _streamRecorder ??= _RecordingStream(super.stream, _messages); @@ -53,9 +53,6 @@ /// Base class for request and response JSON-rpc messages. abstract class _Message implements Comparable<_Message> { - final String type; - final Map<String, dynamic> data; - _Message(this.type, this.data); factory _Message.fromRecording(Map<String, dynamic> recordingData) { @@ -64,6 +61,9 @@ : _Response(recordingData[_kData]); } + final String type; + final Map<String, dynamic> data; + int get id => data[_kId]; /// Allows [JsonEncoder] to properly encode objects of this type. @@ -115,11 +115,6 @@ /// A helper class that monitors a [Stream] of VM service JSON-rpc responses /// and saves the responses to a recording. class _RecordingStream { - final Stream<String> _delegate; - final StreamController<String> _controller; - final List<_Message> _recording; - StreamSubscription<String> _subscription; - _RecordingStream(Stream<String> stream, this._recording) : _delegate = stream, _controller = stream.isBroadcast @@ -144,6 +139,11 @@ }; } + final Stream<String> _delegate; + final StreamController<String> _controller; + final List<_Message> _recording; + StreamSubscription<String> _subscription; + StreamSubscription<String> _listenToStream() { return _delegate.listen( (String element) { @@ -162,11 +162,11 @@ /// A [StreamSink] that monitors VM service JSON-rpc requests and saves the /// requests to a recording. class _RecordingSink implements StreamSink<String> { + _RecordingSink(this._delegate, this._recording); + final StreamSink<String> _delegate; final List<_Message> _recording; - _RecordingSink(this._delegate, this._recording); - @override Future<dynamic> close() => _delegate.close(); @@ -194,13 +194,13 @@ /// to its [StreamChannel.sink], looks up those requests in a recording, and /// replays the corresponding responses back from the recording. class ReplayVMServiceChannel extends StreamChannelMixin<String> { + ReplayVMServiceChannel(Directory location) + : _transactions = _loadTransactions(location); + final Map<int, _Transaction> _transactions; final StreamController<String> _controller = StreamController<String>(); _ReplaySink _replaySink; - ReplayVMServiceChannel(Directory location) - : _transactions = _loadTransactions(location); - static Map<int, _Transaction> _loadTransactions(Directory location) { final File file = _getManifest(location); final String jsonData = file.readAsStringSync(); @@ -250,11 +250,11 @@ } class _ReplaySink implements StreamSink<String> { + _ReplaySink(this.channel); + final ReplayVMServiceChannel channel; final Completer<Null> _completer = Completer<Null>(); - _ReplaySink(this.channel); - @override Future<dynamic> close() { _completer.complete();
diff --git a/packages/flutter_tools/lib/src/vscode/vscode.dart b/packages/flutter_tools/lib/src/vscode/vscode.dart index e92b9e3..3ed7586 100644 --- a/packages/flutter_tools/lib/src/vscode/vscode.dart +++ b/packages/flutter_tools/lib/src/vscode/vscode.dart
@@ -45,17 +45,6 @@ } } - final String directory; - final String extensionDirectory; - final Version version; - final String edition; - - static const String extensionIdentifier = 'Dart-Code.flutter'; - - bool _isValid = false; - Version _extensionVersion; - final List<String> _validationMessages = <String>[]; - factory VsCode.fromDirectory(String installPath, String extensionDirectory, { String edition }) { final String packageJsonPath = @@ -67,6 +56,17 @@ return VsCode._(installPath, extensionDirectory, version: version, edition: edition); } + final String directory; + final String extensionDirectory; + final Version version; + final String edition; + + static const String extensionIdentifier = 'Dart-Code.flutter'; + + bool _isValid = false; + Version _extensionVersion; + final List<String> _validationMessages = <String>[]; + bool get isValid => _isValid; String get productName => 'VS Code' + (edition != null ? ', $edition' : '');
diff --git a/packages/flutter_tools/lib/src/vscode/vscode_validator.dart b/packages/flutter_tools/lib/src/vscode/vscode_validator.dart index b93e1d0..3d95170 100644 --- a/packages/flutter_tools/lib/src/vscode/vscode_validator.dart +++ b/packages/flutter_tools/lib/src/vscode/vscode_validator.dart
@@ -9,11 +9,12 @@ import 'vscode.dart'; class VsCodeValidator extends DoctorValidator { - static const String extensionMarketplaceUrl = - 'https://marketplace.visualstudio.com/items?itemName=${VsCode.extensionIdentifier}'; + VsCodeValidator(this._vsCode) : super(_vsCode.productName); + final VsCode _vsCode; - VsCodeValidator(this._vsCode) : super(_vsCode.productName); + static const String extensionMarketplaceUrl = + 'https://marketplace.visualstudio.com/items?itemName=${VsCode.extensionIdentifier}'; static Iterable<DoctorValidator> get installedValidators { return VsCode
diff --git a/packages/flutter_tools/test/commands/doctor_test.dart b/packages/flutter_tools/test/commands/doctor_test.dart index 7e37463..ea49e34 100644 --- a/packages/flutter_tools/test/commands/doctor_test.dart +++ b/packages/flutter_tools/test/commands/doctor_test.dart
@@ -510,18 +510,17 @@ /// A doctor that takes any two validators. Used to check behavior when /// merging ValidationTypes (installed, missing, partial). class FakeSmallGroupDoctor extends Doctor { - List<DoctorValidator> _validators; FakeSmallGroupDoctor(DoctorValidator val1, DoctorValidator val2) { _validators = <DoctorValidator>[GroupedValidator(<DoctorValidator>[val1, val2])]; } + + List<DoctorValidator> _validators; + @override List<DoctorValidator> get validators => _validators; } class VsCodeValidatorTestTargets extends VsCodeValidator { - static final String validInstall = fs.path.join('test', 'data', 'vscode', 'application'); - static final String validExtensions = fs.path.join('test', 'data', 'vscode', 'extensions'); - static final String missingExtensions = fs.path.join('test', 'data', 'vscode', 'notExtensions'); VsCodeValidatorTestTargets._(String installDirectory, String extensionDirectory, {String edition}) : super(VsCode.fromDirectory(installDirectory, extensionDirectory, edition: edition)); @@ -533,4 +532,8 @@ static VsCodeValidatorTestTargets get installedWithoutExtension => VsCodeValidatorTestTargets._(validInstall, missingExtensions); + + static final String validInstall = fs.path.join('test', 'data', 'vscode', 'application'); + static final String validExtensions = fs.path.join('test', 'data', 'vscode', 'extensions'); + static final String missingExtensions = fs.path.join('test', 'data', 'vscode', 'notExtensions'); }
diff --git a/packages/flutter_tools/test/dart/pub_get_test.dart b/packages/flutter_tools/test/dart/pub_get_test.dart index 16e23f3..ec4773f 100644 --- a/packages/flutter_tools/test/dart/pub_get_test.dart +++ b/packages/flutter_tools/test/dart/pub_get_test.dart
@@ -251,13 +251,13 @@ } class MockDirectory implements Directory { - static bool findCache = false; - MockDirectory(this.path); @override final String path; + static bool findCache = false; + @override bool existsSync() => findCache && path.endsWith('.pub-cache');
diff --git a/packages/flutter_tools/test/devfs_test.dart b/packages/flutter_tools/test/devfs_test.dart index c834d02..d3c72bc 100644 --- a/packages/flutter_tools/test/devfs_test.dart +++ b/packages/flutter_tools/test/devfs_test.dart
@@ -424,14 +424,14 @@ } class MockVMService extends BasicMock implements VMService { - Uri _httpAddress; - HttpServer _server; - MockVM _vm; - MockVMService() { _vm = MockVM(this); } + Uri _httpAddress; + HttpServer _server; + MockVM _vm; + @override Uri get httpAddress => _httpAddress; @@ -468,14 +468,14 @@ } class MockVM implements VM { + MockVM(this._service); + final MockVMService _service; final Uri _baseUri = Uri.parse('file:///tmp/devfs/test'); bool _devFSExists = false; static const int kFileSystemAlreadyExists = 1001; - MockVM(this._service); - @override Future<Map<String, dynamic>> createDevFS(String fsName) async { _service.messages.add('create $fsName');
diff --git a/packages/flutter_tools/test/device_test.dart b/packages/flutter_tools/test/device_test.dart index 286ee49..db32c3d 100644 --- a/packages/flutter_tools/test/device_test.dart +++ b/packages/flutter_tools/test/device_test.dart
@@ -39,10 +39,10 @@ } class TestDeviceManager extends DeviceManager { - final List<Device> allDevices; - TestDeviceManager(this.allDevices); + final List<Device> allDevices; + @override Stream<Device> getAllConnectedDevices() { return Stream<Device>.fromIterable(allDevices); @@ -50,11 +50,11 @@ } class _MockDevice extends Device { + _MockDevice(this.name, String id) : super(id); + @override final String name; - _MockDevice(this.name, String id) : super(id); - @override void noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation); }
diff --git a/packages/flutter_tools/test/emulator_test.dart b/packages/flutter_tools/test/emulator_test.dart index 01c7d4c..0bb1499 100644 --- a/packages/flutter_tools/test/emulator_test.dart +++ b/packages/flutter_tools/test/emulator_test.dart
@@ -152,10 +152,10 @@ } class TestEmulatorManager extends EmulatorManager { - final List<Emulator> allEmulators; - TestEmulatorManager(this.allEmulators); + final List<Emulator> allEmulators; + @override Future<List<Emulator>> getAllAvailableEmulators() { return Future<List<Emulator>>.value(allEmulators);
diff --git a/packages/flutter_tools/test/hot_test.dart b/packages/flutter_tools/test/hot_test.dart index 9d92cd2..0094422 100644 --- a/packages/flutter_tools/test/hot_test.dart +++ b/packages/flutter_tools/test/hot_test.dart
@@ -135,10 +135,10 @@ } class TestHotRunnerConfig extends HotRunnerConfig { - bool successfulSetup; - TestHotRunnerConfig({@required this.successfulSetup}); + bool successfulSetup; + @override Future<bool> setupHotRestart() async { return successfulSetup;
diff --git a/packages/flutter_tools/test/protocol_discovery_test.dart b/packages/flutter_tools/test/protocol_discovery_test.dart index 0bd6606..d8499f2 100644 --- a/packages/flutter_tools/test/protocol_discovery_test.dart +++ b/packages/flutter_tools/test/protocol_discovery_test.dart
@@ -223,9 +223,10 @@ } class MockPortForwarder extends DevicePortForwarder { - final int availablePort; MockPortForwarder([this.availablePort]); + final int availablePort; + @override Future<int> forward(int devicePort, {int hostPort}) async { hostPort ??= 0;
diff --git a/packages/flutter_tools/test/src/mocks.dart b/packages/flutter_tools/test/src/mocks.dart index 5bcb4bc..eec77f1 100644 --- a/packages/flutter_tools/test/src/mocks.dart +++ b/packages/flutter_tools/test/src/mocks.dart
@@ -308,12 +308,12 @@ } class MockPollingDeviceDiscovery extends PollingDeviceDiscovery { + MockPollingDeviceDiscovery() : super('mock'); + final List<Device> _devices = <Device>[]; final StreamController<Device> _onAddedController = StreamController<Device>.broadcast(); final StreamController<Device> _onRemovedController = StreamController<Device>.broadcast(); - MockPollingDeviceDiscovery() : super('mock'); - @override Future<List<Device>> pollingGetDevices() async => _devices;