use conditional assignment (#9252)
diff --git a/examples/flutter_gallery/lib/gallery/syntax_highlighter.dart b/examples/flutter_gallery/lib/gallery/syntax_highlighter.dart index a534897..51319ea 100644 --- a/examples/flutter_gallery/lib/gallery/syntax_highlighter.dart +++ b/examples/flutter_gallery/lib/gallery/syntax_highlighter.dart
@@ -60,9 +60,7 @@ class DartSyntaxHighlighter extends SyntaxHighlighter { DartSyntaxHighlighter([this._style]) { _spans = <_HighlightSpan>[]; - - if (_style == null) - _style = SyntaxHighlighterStyle.darkThemeStyle(); + _style ??= SyntaxHighlighterStyle.darkThemeStyle(); } SyntaxHighlighterStyle _style;
diff --git a/examples/layers/widgets/spinning_mixed.dart b/examples/layers/widgets/spinning_mixed.dart index 0ffefaf..0e053f1 100644 --- a/examples/layers/widgets/spinning_mixed.dart +++ b/examples/layers/widgets/spinning_mixed.dart
@@ -78,8 +78,7 @@ RenderTransform transformBox; void rotate(Duration timeStamp) { - if (timeBase == null) - timeBase = timeStamp; + timeBase ??= timeStamp; final double delta = (timeStamp - timeBase).inMicroseconds.toDouble() / Duration.MICROSECONDS_PER_SECOND; // radians transformBox.setIdentity();
diff --git a/packages/flutter/lib/src/painting/box_painter.dart b/packages/flutter/lib/src/painting/box_painter.dart index dc6aa67..db59932 100644 --- a/packages/flutter/lib/src/painting/box_painter.dart +++ b/packages/flutter/lib/src/painting/box_painter.dart
@@ -577,10 +577,8 @@ static List<BoxShadow> lerpList(List<BoxShadow> a, List<BoxShadow> b, double t) { if (a == null && b == null) return null; - if (a == null) - a = <BoxShadow>[]; - if (b == null) - b = <BoxShadow>[]; + a ??= <BoxShadow>[]; + b ??= <BoxShadow>[]; final List<BoxShadow> result = <BoxShadow>[]; final int commonLength = math.min(a.length, b.length); for (int i = 0; i < commonLength; ++i)
diff --git a/packages/flutter/lib/src/rendering/box.dart b/packages/flutter/lib/src/rendering/box.dart index 28e2888..dafd827 100644 --- a/packages/flutter/lib/src/rendering/box.dart +++ b/packages/flutter/lib/src/rendering/box.dart
@@ -1482,8 +1482,7 @@ @mustCallSuper double getDistanceToActualBaseline(TextBaseline baseline) { assert(_debugDoingBaseline); - if (_cachedBaselines == null) - _cachedBaselines = <TextBaseline, double>{}; + _cachedBaselines ??= <TextBaseline, double>{}; _cachedBaselines.putIfAbsent(baseline, () => computeDistanceToActualBaseline(baseline)); return _cachedBaselines[baseline]; }
diff --git a/packages/flutter/lib/src/rendering/layer.dart b/packages/flutter/lib/src/rendering/layer.dart index 53b5ac4..3788655 100644 --- a/packages/flutter/lib/src/rendering/layer.dart +++ b/packages/flutter/lib/src/rendering/layer.dart
@@ -203,8 +203,7 @@ if (_lastChild != null) _lastChild._nextSibling = child; _lastChild = child; - if (_firstChild == null) - _firstChild = child; + _firstChild ??= child; } void _remove(Layer child) {
diff --git a/packages/flutter/lib/src/rendering/object.dart b/packages/flutter/lib/src/rendering/object.dart index 9af6048..b29a204 100644 --- a/packages/flutter/lib/src/rendering/object.dart +++ b/packages/flutter/lib/src/rendering/object.dart
@@ -2697,8 +2697,7 @@ _firstChildParentData.previousSibling = child; } _firstChild = child; - if (_lastChild == null) - _lastChild = child; + _lastChild ??= child; } else { assert(_firstChild != null); assert(_lastChild != null);
diff --git a/packages/flutter/lib/src/scheduler/ticker.dart b/packages/flutter/lib/src/scheduler/ticker.dart index 82ea376..ea83031 100644 --- a/packages/flutter/lib/src/scheduler/ticker.dart +++ b/packages/flutter/lib/src/scheduler/ticker.dart
@@ -199,8 +199,7 @@ assert(scheduled); _animationId = null; - if (_startTime == null) - _startTime = timeStamp; + _startTime ??= timeStamp; _onTick(timeStamp - _startTime);
diff --git a/packages/flutter/lib/src/widgets/focus_manager.dart b/packages/flutter/lib/src/widgets/focus_manager.dart index 4bf9d3e..5a197bd 100644 --- a/packages/flutter/lib/src/widgets/focus_manager.dart +++ b/packages/flutter/lib/src/widgets/focus_manager.dart
@@ -132,8 +132,7 @@ if (_firstChild != null) _firstChild._previousSibling = child; _firstChild = child; - if (_lastChild == null) - _lastChild = child; + _lastChild ??= child; child._updateManager(_manager); }
diff --git a/packages/flutter/test/gestures/gesture_binding_test.dart b/packages/flutter/test/gestures/gesture_binding_test.dart index 9954707..b720151 100644 --- a/packages/flutter/test/gestures/gesture_binding_test.dart +++ b/packages/flutter/test/gestures/gesture_binding_test.dart
@@ -24,8 +24,7 @@ TestGestureFlutterBinding _binding = new TestGestureFlutterBinding(); void ensureTestGestureBinding() { - if (_binding == null) - _binding = new TestGestureFlutterBinding(); + _binding ??= new TestGestureFlutterBinding(); assert(GestureBinding.instance != null); }
diff --git a/packages/flutter_tools/lib/src/android/android_device.dart b/packages/flutter_tools/lib/src/android/android_device.dart index 0a08b1b..40ab664 100644 --- a/packages/flutter_tools/lib/src/android/android_device.dart +++ b/packages/flutter_tools/lib/src/android/android_device.dart
@@ -430,12 +430,7 @@ } @override - DevicePortForwarder get portForwarder { - if (_portForwarder == null) - _portForwarder = new _AndroidDevicePortForwarder(this); - - return _portForwarder; - } + DevicePortForwarder get portForwarder => _portForwarder ??= new _AndroidDevicePortForwarder(this); static final RegExp _timeRegExp = new RegExp(r'^\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d{3}', multiLine: true);
diff --git a/packages/flutter_tools/lib/src/base/os.dart b/packages/flutter_tools/lib/src/base/os.dart index 65968aa..dc97811 100644 --- a/packages/flutter_tools/lib/src/base/os.dart +++ b/packages/flutter_tools/lib/src/base/os.dart
@@ -116,8 +116,7 @@ .trim()} ${results[2].stdout.trim()}"; } } - if (_name == null) - _name = super.name; + _name ??= super.name; } return _name; }
diff --git a/packages/flutter_tools/lib/src/cache.dart b/packages/flutter_tools/lib/src/cache.dart index 82846c6..a414421 100644 --- a/packages/flutter_tools/lib/src/cache.dart +++ b/packages/flutter_tools/lib/src/cache.dart
@@ -86,12 +86,7 @@ static String _dartSdkVersion; - static String get dartSdkVersion { - if (_dartSdkVersion == null) { - _dartSdkVersion = platform.version; - } - return _dartSdkVersion; - } + static String get dartSdkVersion => _dartSdkVersion ??= platform.version; static String _engineRevision;
diff --git a/packages/flutter_tools/lib/src/commands/daemon.dart b/packages/flutter_tools/lib/src/commands/daemon.dart index 6c7e0eb..16da917 100644 --- a/packages/flutter_tools/lib/src/commands/daemon.dart +++ b/packages/flutter_tools/lib/src/commands/daemon.dart
@@ -724,8 +724,7 @@ } dynamic _runInZone(AppDomain domain, dynamic method()) { - if (_logger == null) - _logger = new _AppRunLogger(domain, this, logToStdout: logToStdout); + _logger ??= new _AppRunLogger(domain, this, logToStdout: logToStdout); final AppContext appContext = new AppContext(); appContext.setVariable(Logger, _logger);
diff --git a/packages/flutter_tools/lib/src/dart/pub.dart b/packages/flutter_tools/lib/src/dart/pub.dart index 8f64421..7cafa18 100644 --- a/packages/flutter_tools/lib/src/dart/pub.dart +++ b/packages/flutter_tools/lib/src/dart/pub.dart
@@ -34,8 +34,7 @@ bool offline: false, bool checkLastModified: true }) async { - if (directory == null) - directory = fs.currentDirectory.path; + directory ??= fs.currentDirectory.path; final File pubSpecYaml = fs.file(fs.path.join(directory, 'pubspec.yaml')); final File dotPackages = fs.file(fs.path.join(directory, '.packages'));
diff --git a/packages/flutter_tools/lib/src/device.dart b/packages/flutter_tools/lib/src/device.dart index c910c2c..6ad3b4b 100644 --- a/packages/flutter_tools/lib/src/device.dart +++ b/packages/flutter_tools/lib/src/device.dart
@@ -97,8 +97,7 @@ void startPolling() { if (_timer == null) { - if (_items == null) - _items = new ItemListNotifier<Device>(); + _items ??= new ItemListNotifier<Device>(); _timer = new Timer.periodic(_pollingDuration, (Timer timer) { _items.updateWithNewList(pollingGetDevices()); }); @@ -112,20 +111,17 @@ @override List<Device> get devices { - if (_items == null) - _items = new ItemListNotifier<Device>.from(pollingGetDevices()); + _items ??= new ItemListNotifier<Device>.from(pollingGetDevices()); return _items.items; } Stream<Device> get onAdded { - if (_items == null) - _items = new ItemListNotifier<Device>(); + _items ??= new ItemListNotifier<Device>(); return _items.onAdded; } Stream<Device> get onRemoved { - if (_items == null) - _items = new ItemListNotifier<Device>(); + _items ??= new ItemListNotifier<Device>(); return _items.onRemoved; }
diff --git a/packages/flutter_tools/lib/src/ios/devices.dart b/packages/flutter_tools/lib/src/ios/devices.dart index 36291ab..8f642db 100644 --- a/packages/flutter_tools/lib/src/ios/devices.dart +++ b/packages/flutter_tools/lib/src/ios/devices.dart
@@ -357,12 +357,7 @@ } @override - DevicePortForwarder get portForwarder { - if (_portForwarder == null) - _portForwarder = new _IOSDevicePortForwarder(this); - - return _portForwarder; - } + DevicePortForwarder get portForwarder => _portForwarder ??= new _IOSDevicePortForwarder(this); @override void clearLogs() {
diff --git a/packages/flutter_tools/lib/src/ios/simulators.dart b/packages/flutter_tools/lib/src/ios/simulators.dart index 75e2129..3ecd761 100644 --- a/packages/flutter_tools/lib/src/ios/simulators.dart +++ b/packages/flutter_tools/lib/src/ios/simulators.dart
@@ -565,12 +565,7 @@ } @override - DevicePortForwarder get portForwarder { - if (_portForwarder == null) - _portForwarder = new _IOSSimulatorDevicePortForwarder(this); - - return _portForwarder; - } + DevicePortForwarder get portForwarder => _portForwarder ??= new _IOSSimulatorDevicePortForwarder(this); @override void clearLogs() {
diff --git a/packages/flutter_tools/lib/src/resident_runner.dart b/packages/flutter_tools/lib/src/resident_runner.dart index f7188f9..94ab4bc3 100644 --- a/packages/flutter_tools/lib/src/resident_runner.dart +++ b/packages/flutter_tools/lib/src/resident_runner.dart
@@ -406,8 +406,7 @@ /// Given the value of the --target option, return the path of the Dart file /// where the app's main function should be. String findMainDartFile([String target]) { - if (target == null) - target = ''; + target ??= ''; final String targetPath = fs.path.absolute(target); if (fs.isDirectorySync(targetPath)) return fs.path.join(targetPath, 'lib', 'main.dart');
diff --git a/packages/flutter_tools/lib/src/runner/flutter_command_runner.dart b/packages/flutter_tools/lib/src/runner/flutter_command_runner.dart index c9c6838..99f74fe 100644 --- a/packages/flutter_tools/lib/src/runner/flutter_command_runner.dart +++ b/packages/flutter_tools/lib/src/runner/flutter_command_runner.dart
@@ -286,8 +286,7 @@ engineSourcePath = null; } - if (engineSourcePath == null) - engineSourcePath = _tryEnginePath(fs.path.join(Cache.flutterRoot, '../engine/src')); + engineSourcePath ??= _tryEnginePath(fs.path.join(Cache.flutterRoot, '../engine/src')); if (engineSourcePath == null) { printError('Unable to detect local Flutter engine build directory.\n' @@ -327,8 +326,7 @@ } static void initFlutterRoot() { - if (Cache.flutterRoot == null) - Cache.flutterRoot = _defaultFlutterRoot; + Cache.flutterRoot ??= _defaultFlutterRoot; } /// Get all pub packages in the Flutter repo.
diff --git a/packages/flutter_tools/lib/src/vmservice.dart b/packages/flutter_tools/lib/src/vmservice.dart index bd70231..d9afbfd 100644 --- a/packages/flutter_tools/lib/src/vmservice.dart +++ b/packages/flutter_tools/lib/src/vmservice.dart
@@ -266,11 +266,9 @@ serviceObject = new Isolate._empty(owner.vm); break; } - if (serviceObject == null) { - // If we don't have a model object for this service object type, as a - // fallback return a ServiceMap object. - serviceObject = new ServiceMap._empty(owner); - } + // If we don't have a model object for this service object type, as a + // fallback return a ServiceMap object. + serviceObject ??= new ServiceMap._empty(owner); // We have now constructed an emtpy service object, call update to // populate it. serviceObject.update(map);
diff --git a/packages/flutter_tools/lib/src/vmservice_record_replay.dart b/packages/flutter_tools/lib/src/vmservice_record_replay.dart index 2b47e1c..bfde734 100644 --- a/packages/flutter_tools/lib/src/vmservice_record_replay.dart +++ b/packages/flutter_tools/lib/src/vmservice_record_replay.dart
@@ -43,19 +43,12 @@ @override Stream<String> get stream { - if (_streamRecorder == null) { - _streamRecorder = new _RecordingStream(super.stream, _messages); - } + _streamRecorder ??= new _RecordingStream(super.stream, _messages); return _streamRecorder.stream; } @override - StreamSink<String> get sink { - if (_sinkRecorder == null) { - _sinkRecorder = new _RecordingSink(super.sink, _messages); - } - return _sinkRecorder; - } + StreamSink<String> get sink => _sinkRecorder ??= new _RecordingSink(super.sink, _messages); } /// Base class for request and response JSON-rpc messages. @@ -250,11 +243,7 @@ } @override - StreamSink<String> get sink { - if (_replaySink == null) - _replaySink = new _ReplaySink(this); - return _replaySink; - } + StreamSink<String> get sink => _replaySink ??= new _ReplaySink(this); @override Stream<String> get stream => _controller.stream;