diff --git a/dev/benchmarks/microbenchmarks/lib/language/sync_star_semantics_bench.dart b/dev/benchmarks/microbenchmarks/lib/language/sync_star_semantics_bench.dart index 7b9a2f39e56..ab8d0983370 100644 --- a/dev/benchmarks/microbenchmarks/lib/language/sync_star_semantics_bench.dart +++ b/dev/benchmarks/microbenchmarks/lib/language/sync_star_semantics_bench.dart @@ -91,11 +91,7 @@ Iterable combineSemanticsInfoSyncStar(List combineSemanticsInfoList(List endTime - startTime; set endTime(int value) { _endTime = value; } - int get endTime { - if (_endTime == null) { - return 0; - } - return _endTime!; - } + int get endTime => _endTime ?? 0; String toJson() { return json.encode( diff --git a/dev/conductor/core/lib/src/version.dart b/dev/conductor/core/lib/src/version.dart index 00477d16252..7a873a9ec65 100644 --- a/dev/conductor/core/lib/src/version.dart +++ b/dev/conductor/core/lib/src/version.dart @@ -158,13 +158,10 @@ class Version { int nextZ = previousVersion.z; int? nextM = previousVersion.m; int? nextN = previousVersion.n; - if (nextVersionType == null) { - if (previousVersion.type == VersionType.latest || previousVersion.type == VersionType.gitDescribe) { - nextVersionType = VersionType.development; - } else { - nextVersionType = previousVersion.type; - } - } + nextVersionType ??= switch (previousVersion.type) { + VersionType.stable => VersionType.stable, + VersionType.latest || VersionType.gitDescribe || VersionType.development => VersionType.development, + }; switch (increment) { case 'x': diff --git a/dev/devicelab/bin/tasks/flavors_test.dart b/dev/devicelab/bin/tasks/flavors_test.dart index f5981f1adb8..3407b2f355f 100644 --- a/dev/devicelab/bin/tasks/flavors_test.dart +++ b/dev/devicelab/bin/tasks/flavors_test.dart @@ -32,11 +32,7 @@ Future main() async { final TaskResult? firstInstallFailure = testResults .firstWhereOrNull((TaskResult element) => element.failed); - if (firstInstallFailure != null) { - return firstInstallFailure; - } - - return TaskResult.success(null); + return firstInstallFailure ?? TaskResult.success(null); }, ); diff --git a/dev/devicelab/bin/tasks/flavors_test_ios.dart b/dev/devicelab/bin/tasks/flavors_test_ios.dart index 25767b9ee77..e306bf96672 100644 --- a/dev/devicelab/bin/tasks/flavors_test_ios.dart +++ b/dev/devicelab/bin/tasks/flavors_test_ios.dart @@ -32,11 +32,7 @@ Future main() async { final TaskResult? firstInstallFailure = testResults .firstWhereOrNull((TaskResult element) => element.failed); - if (firstInstallFailure != null) { - return firstInstallFailure; - } - - return TaskResult.success(null); + return firstInstallFailure ?? TaskResult.success(null); }, ); diff --git a/dev/devicelab/lib/framework/browser.dart b/dev/devicelab/lib/framework/browser.dart index a35f6ac0d85..bec06df2e25 100644 --- a/dev/devicelab/lib/framework/browser.dart +++ b/dev/devicelab/lib/framework/browser.dart @@ -572,12 +572,7 @@ class BlinkTraceEvent { /// Returns null if the value is null. int? _readInt(Map json, String key) { final num? jsonValue = json[key] as num?; - - if (jsonValue == null) { - return null; - } - - return jsonValue.toInt(); + return jsonValue?.toInt(); } /// Used by [Chrome.launch] to detect a glibc bug and retry launching the diff --git a/dev/devicelab/lib/tasks/perf_tests.dart b/dev/devicelab/lib/tasks/perf_tests.dart index cf3c0397340..96b90ef0936 100644 --- a/dev/devicelab/lib/tasks/perf_tests.dart +++ b/dev/devicelab/lib/tasks/perf_tests.dart @@ -1290,11 +1290,7 @@ class PerfTest { }) { return inDirectory(testDirectory, () async { late Device selectedDevice; - if (device != null) { - selectedDevice = device!; - } else { - selectedDevice = await devices.workingDevice; - } + selectedDevice = device ?? await devices.workingDevice; await selectedDevice.unlock(); final String deviceId = selectedDevice.deviceId; final String? localEngine = localEngineFromEnv; diff --git a/dev/integration_tests/android_semantics_testing/lib/src/matcher.dart b/dev/integration_tests/android_semantics_testing/lib/src/matcher.dart index f650ea769fd..ba757547ea7 100644 --- a/dev/integration_tests/android_semantics_testing/lib/src/matcher.dart +++ b/dev/integration_tests/android_semantics_testing/lib/src/matcher.dart @@ -223,10 +223,7 @@ class _AndroidSemanticsMatcher extends Matcher { Description describeMismatch(dynamic item, Description mismatchDescription, Map matchState, bool verbose) { final String? failure = matchState['failure'] as String?; - if (failure == null) { - return mismatchDescription.add('hasAndroidSemantics matcher does not complete successfully'); - } - return mismatchDescription.add(failure); + return mismatchDescription.add(failure ?? 'hasAndroidSemantics matcher does not complete successfully'); } bool _failWithMessage(String value, Map matchState) { diff --git a/dev/integration_tests/flutter_gallery/lib/demo/shrine/model/app_state_model.dart b/dev/integration_tests/flutter_gallery/lib/demo/shrine/model/app_state_model.dart index afcf905d70b..71ac5d763c7 100644 --- a/dev/integration_tests/flutter_gallery/lib/demo/shrine/model/app_state_model.dart +++ b/dev/integration_tests/flutter_gallery/lib/demo/shrine/model/app_state_model.dart @@ -62,12 +62,8 @@ class AppStateModel extends Model { // Adds a product to the cart. void addProductToCart(int productId) { - final int? value = _productsInCart[productId]; - if (value == null) { - _productsInCart[productId] = 1; - } else { - _productsInCart[productId] = value+1; - } + final int value = _productsInCart[productId] ?? 0; + _productsInCart[productId] = value + 1; notifyListeners(); } diff --git a/dev/tools/gen_defaults/bin/gen_defaults.dart b/dev/tools/gen_defaults/bin/gen_defaults.dart index f56afcfe948..5431e708f59 100644 --- a/dev/tools/gen_defaults/bin/gen_defaults.dart +++ b/dev/tools/gen_defaults/bin/gen_defaults.dart @@ -86,9 +86,7 @@ Future main(List args) async { final Map tokenFileTokens = _readTokenFile(tokenFile as File); final String version = tokenFileTokens['version'] as String; tokenFileTokens.remove('version'); - if (versionMap[version] == null) { - versionMap[version] = List.empty(growable: true); - } + versionMap[version] ??= []; versionMap[version]!.add(tokenFile.uri.pathSegments.last); tokens.addAll(tokenFileTokens); diff --git a/packages/flutter/lib/src/cupertino/colors.dart b/packages/flutter/lib/src/cupertino/colors.dart index cb17ce2fd03..0c84b427730 100644 --- a/packages/flutter/lib/src/cupertino/colors.dart +++ b/packages/flutter/lib/src/cupertino/colors.dart @@ -953,9 +953,6 @@ class CupertinoDynamicColor extends Color with Diagnosticable { /// * [resolve], which is similar to this function, but returns a /// non-nullable value, and does not allow a null `resolvable` color. static Color? maybeResolve(Color? resolvable, BuildContext context) { - if (resolvable == null) { - return null; - } return (resolvable is CupertinoDynamicColor) ? resolvable.resolveFrom(context) : resolvable; diff --git a/packages/flutter/lib/src/cupertino/date_picker.dart b/packages/flutter/lib/src/cupertino/date_picker.dart index 8d22bd17a01..1e0fe079a5f 100644 --- a/packages/flutter/lib/src/cupertino/date_picker.dart +++ b/packages/flutter/lib/src/cupertino/date_picker.dart @@ -684,10 +684,8 @@ class _CupertinoDatePickerDateTimeState extends State { // Lazily calculate the column width of the column being displayed only. double _getEstimatedColumnWidth(_PickerColumnType columnType) { - if (estimatedColumnWidths[columnType.index] == null) { - estimatedColumnWidths[columnType.index] = - CupertinoDatePicker._getColumnWidth(columnType, localizations, context, widget.showDayOfWeek); - } + estimatedColumnWidths[columnType.index] ??= + CupertinoDatePicker._getColumnWidth(columnType, localizations, context, widget.showDayOfWeek); return estimatedColumnWidths[columnType.index]!; } diff --git a/packages/flutter/lib/src/cupertino/interface_level.dart b/packages/flutter/lib/src/cupertino/interface_level.dart index e4de7829a17..8ddf2738731 100644 --- a/packages/flutter/lib/src/cupertino/interface_level.dart +++ b/packages/flutter/lib/src/cupertino/interface_level.dart @@ -94,10 +94,7 @@ class CupertinoUserInterfaceLevel extends InheritedWidget { /// [CupertinoUserInterfaceLevel] encloses the given context. static CupertinoUserInterfaceLevelData? maybeOf(BuildContext context) { final CupertinoUserInterfaceLevel? query = context.dependOnInheritedWidgetOfExactType(); - if (query != null) { - return query._data; - } - return null; + return query?._data; } @override diff --git a/packages/flutter/lib/src/foundation/diagnostics.dart b/packages/flutter/lib/src/foundation/diagnostics.dart index 4726acab83e..fdb00b22f3a 100644 --- a/packages/flutter/lib/src/foundation/diagnostics.dart +++ b/packages/flutter/lib/src/foundation/diagnostics.dart @@ -2257,10 +2257,7 @@ class EnumProperty extends DiagnosticsProperty { @override String valueToString({ TextTreeConfiguration? parentConfiguration }) { - if (value == null) { - return value.toString(); - } - return value!.name; + return value?.name ?? 'null'; } } diff --git a/packages/flutter/lib/src/foundation/persistent_hash_map.dart b/packages/flutter/lib/src/foundation/persistent_hash_map.dart index 1cd4e499b13..086a6889115 100644 --- a/packages/flutter/lib/src/foundation/persistent_hash_map.dart +++ b/packages/flutter/lib/src/foundation/persistent_hash_map.dart @@ -47,13 +47,9 @@ class PersistentHashMap { /// is not in the map. @pragma('dart2js:as:trust') V? operator[](K key) { - if (_root == null) { - return null; - } - // Unfortunately can not use unsafeCast(...) here because it leads // to worse code generation on VM. - return _root.get(0, key, key.hashCode) as V?; + return _root?.get(0, key, key.hashCode) as V?; } } diff --git a/packages/flutter/lib/src/gestures/recognizer.dart b/packages/flutter/lib/src/gestures/recognizer.dart index 9a9ecb4b9ae..d760f488f68 100644 --- a/packages/flutter/lib/src/gestures/recognizer.dart +++ b/packages/flutter/lib/src/gestures/recognizer.dart @@ -461,10 +461,7 @@ abstract class OneSequenceGestureRecognizer extends GestureRecognizer { } GestureArenaEntry _addPointerToArena(int pointer) { - if (_team != null) { - return _team!.add(pointer, this); - } - return GestureBinding.instance.gestureArena.add(pointer, this); + return _team?.add(pointer, this) ?? GestureBinding.instance.gestureArena.add(pointer, this); } /// Causes events related to the given pointer ID to be routed to this recognizer. diff --git a/packages/flutter/lib/src/material/drawer.dart b/packages/flutter/lib/src/material/drawer.dart index ced09710b31..dc12c4b5408 100644 --- a/packages/flutter/lib/src/material/drawer.dart +++ b/packages/flutter/lib/src/material/drawer.dart @@ -560,10 +560,8 @@ class DrawerControllerState extends State with SingleTickerPro double get _width { final RenderBox? box = _drawerKey.currentContext?.findRenderObject() as RenderBox?; - if (box != null) { - return box.size.width; - } - return _kWidth; // drawer not being shown currently + // return _kWidth if drawer not being shown currently + return box?.size.width ?? _kWidth; } bool _previouslyOpened = false; diff --git a/packages/flutter/lib/src/material/popup_menu.dart b/packages/flutter/lib/src/material/popup_menu.dart index dc332249c8e..fdddc102824 100644 --- a/packages/flutter/lib/src/material/popup_menu.dart +++ b/packages/flutter/lib/src/material/popup_menu.dart @@ -154,10 +154,7 @@ class _RenderMenuItem extends RenderShiftedBox { @override Size computeDryLayout(BoxConstraints constraints) { - if (child == null) { - return Size.zero; - } - return child!.getDryLayout(constraints); + return child?.getDryLayout(constraints) ?? Size.zero; } @override diff --git a/packages/flutter/lib/src/material/stepper.dart b/packages/flutter/lib/src/material/stepper.dart index 23a59c1e72d..e1071a1a986 100644 --- a/packages/flutter/lib/src/material/stepper.dart +++ b/packages/flutter/lib/src/material/stepper.dart @@ -442,10 +442,8 @@ class _StepperState extends State with TickerProviderStateMixin { if (isActive) MaterialState.selected else MaterialState.disabled, }; final Color? resolvedConnectorColor = widget.connectorColor?.resolve(states); - if (resolvedConnectorColor != null) { - return resolvedConnectorColor; - } - return isActive ? colorScheme.primary : Colors.grey.shade400; + + return resolvedConnectorColor ?? (isActive ? colorScheme.primary : Colors.grey.shade400); } Widget _buildLine(bool visible, bool isActive) { diff --git a/packages/flutter/lib/src/painting/border_radius.dart b/packages/flutter/lib/src/painting/border_radius.dart index 0c23b0a7d92..eaed56be8b4 100644 --- a/packages/flutter/lib/src/painting/border_radius.dart +++ b/packages/flutter/lib/src/painting/border_radius.dart @@ -238,13 +238,7 @@ abstract class BorderRadiusGeometry { if (visual != null && logical != null) { return '$visual + $logical'; } - if (visual != null) { - return visual; - } - if (logical != null) { - return logical; - } - return 'BorderRadius.zero'; + return visual ?? logical ?? 'BorderRadius.zero'; } @override diff --git a/packages/flutter/lib/src/painting/borders.dart b/packages/flutter/lib/src/painting/borders.dart index dc67e200129..6d488e27d8e 100644 --- a/packages/flutter/lib/src/painting/borders.dart +++ b/packages/flutter/lib/src/painting/borders.dart @@ -510,13 +510,7 @@ abstract class ShapeBorder { if (identical(a, b)) { return a; } - ShapeBorder? result; - if (b != null) { - result = b.lerpFrom(a, t); - } - if (result == null && a != null) { - result = a.lerpTo(b, t); - } + final ShapeBorder? result = b?.lerpFrom(a, t) ?? a?.lerpTo(b, t); return result ?? (t < 0.5 ? a : b); } @@ -700,13 +694,7 @@ abstract class OutlinedBorder extends ShapeBorder { if (identical(a, b)) { return a; } - ShapeBorder? result; - if (b != null) { - result = b.lerpFrom(a, t); - } - if (result == null && a != null) { - result = a.lerpTo(b, t); - } + final ShapeBorder? result = b?.lerpFrom(a, t) ?? a?.lerpTo(b, t); return result as OutlinedBorder? ?? (t < 0.5 ? a : b); } } diff --git a/packages/flutter/lib/src/rendering/proxy_box.dart b/packages/flutter/lib/src/rendering/proxy_box.dart index ee183a51d3b..ee7d767f7b2 100644 --- a/packages/flutter/lib/src/rendering/proxy_box.dart +++ b/packages/flutter/lib/src/rendering/proxy_box.dart @@ -468,10 +468,7 @@ class RenderAspectRatio extends RenderProxyBox { if (height.isFinite) { return height * _aspectRatio; } - if (child != null) { - return child!.getMinIntrinsicWidth(height); - } - return 0.0; + return child?.getMinIntrinsicWidth(height) ?? 0.0; } @override @@ -479,10 +476,7 @@ class RenderAspectRatio extends RenderProxyBox { if (height.isFinite) { return height * _aspectRatio; } - if (child != null) { - return child!.getMaxIntrinsicWidth(height); - } - return 0.0; + return child?.getMaxIntrinsicWidth(height) ?? 0.0; } @override @@ -490,10 +484,7 @@ class RenderAspectRatio extends RenderProxyBox { if (width.isFinite) { return width / _aspectRatio; } - if (child != null) { - return child!.getMinIntrinsicHeight(width); - } - return 0.0; + return child?.getMinIntrinsicHeight(width) ?? 0.0; } @override @@ -501,10 +492,7 @@ class RenderAspectRatio extends RenderProxyBox { if (width.isFinite) { return width / _aspectRatio; } - if (child != null) { - return child!.getMaxIntrinsicHeight(width); - } - return 0.0; + return child?.getMaxIntrinsicHeight(width) ?? 0.0; } Size _applyAspectRatio(BoxConstraints constraints) { diff --git a/packages/flutter/lib/src/widgets/disposable_build_context.dart b/packages/flutter/lib/src/widgets/disposable_build_context.dart index 64ff92dc98d..eaf5ba331a0 100644 --- a/packages/flutter/lib/src/widgets/disposable_build_context.dart +++ b/packages/flutter/lib/src/widgets/disposable_build_context.dart @@ -51,10 +51,7 @@ class DisposableBuildContext { /// Otherwise, asserts the [_state] is still mounted and returns its context. BuildContext? get context { assert(_debugValidate()); - if (_state == null) { - return null; - } - return _state!.context; + return _state?.context; } /// Called from asserts or tests to determine whether this object is in a diff --git a/packages/flutter/lib/src/widgets/draggable_scrollable_sheet.dart b/packages/flutter/lib/src/widgets/draggable_scrollable_sheet.dart index ce8cbd45299..6ada84d1c3b 100644 --- a/packages/flutter/lib/src/widgets/draggable_scrollable_sheet.dart +++ b/packages/flutter/lib/src/widgets/draggable_scrollable_sheet.dart @@ -1039,10 +1039,7 @@ class DraggableScrollableActuator extends StatefulWidget { /// otherwise. static bool reset(BuildContext context) { final _InheritedResetNotifier? notifier = context.dependOnInheritedWidgetOfExactType<_InheritedResetNotifier>(); - if (notifier == null) { - return false; - } - return notifier._sendReset(); + return notifier?._sendReset() ?? false; } @override diff --git a/packages/flutter/lib/src/widgets/navigator.dart b/packages/flutter/lib/src/widgets/navigator.dart index 4dc79a3cc48..4e94bfa0ef5 100644 --- a/packages/flutter/lib/src/widgets/navigator.dart +++ b/packages/flutter/lib/src/widgets/navigator.dart @@ -578,10 +578,7 @@ abstract class Route { /// rendered. It is even possible for the route to be active but for the stateful /// widgets within the route to not be instantiated. See [ModalRoute.maintainState]. bool get isActive { - if (_navigator == null) { - return false; - } - return _navigator!._firstRouteEntryWhereOrNull(_RouteEntry.isRoutePredicate(this))?.isPresent ?? false; + return _navigator?._firstRouteEntryWhereOrNull(_RouteEntry.isRoutePredicate(this))?.isPresent ?? false; } } diff --git a/packages/flutter/lib/src/widgets/router.dart b/packages/flutter/lib/src/widgets/router.dart index 5541f92e7c1..ebb64d2ff61 100644 --- a/packages/flutter/lib/src/widgets/router.dart +++ b/packages/flutter/lib/src/widgets/router.dart @@ -64,10 +64,7 @@ class RouteInformation { 'This feature was deprecated after v3.8.0-3.0.pre.' ) String get location { - if (_location != null) { - return _location; - } - return Uri.decodeComponent( + return _location ?? Uri.decodeComponent( Uri( path: uri.path.isEmpty ? '/' : uri.path, queryParameters: uri.queryParametersAll.isEmpty ? null : uri.queryParametersAll, @@ -1562,10 +1559,7 @@ mixin PopNavigatorRouterDelegateMixin on RouterDelegate { @override Future popRoute() { final NavigatorState? navigator = navigatorKey?.currentState; - if (navigator == null) { - return SynchronousFuture(false); - } - return navigator.maybePop(); + return navigator?.maybePop() ?? SynchronousFuture(false); } } diff --git a/packages/flutter/lib/src/widgets/scroll_physics.dart b/packages/flutter/lib/src/widgets/scroll_physics.dart index 322d4281343..b3a6ec8b220 100644 --- a/packages/flutter/lib/src/widgets/scroll_physics.dart +++ b/packages/flutter/lib/src/widgets/scroll_physics.dart @@ -190,10 +190,7 @@ class ScrollPhysics { /// reference to it to use later, as the values may update, may not update, or /// may update to reflect an entirely unrelated scrollable. double applyPhysicsToUserOffset(ScrollMetrics position, double offset) { - if (parent == null) { - return offset; - } - return parent!.applyPhysicsToUserOffset(position, offset); + return parent?.applyPhysicsToUserOffset(position, offset) ?? offset; } /// Whether the scrollable should let the user adjust the scroll offset, for @@ -297,10 +294,7 @@ class ScrollPhysics { /// scrolling back from being overscrolled, if for some reason the position /// ends up overscrolled. double applyBoundaryConditions(ScrollMetrics position, double value) { - if (parent == null) { - return 0.0; - } - return parent!.applyBoundaryConditions(position, value); + return parent?.applyBoundaryConditions(position, value) ?? 0.0; } /// Describes what the scroll position should be given new viewport dimensions. @@ -394,10 +388,7 @@ class ScrollPhysics { // https://github.com/flutter/flutter/issues/120340 // https://github.com/flutter/flutter/issues/109675 Simulation? createBallisticSimulation(ScrollMetrics position, double velocity) { - if (parent == null) { - return null; - } - return parent!.createBallisticSimulation(position, velocity); + return parent?.createBallisticSimulation(position, velocity); } static final SpringDescription _kDefaultSpring = SpringDescription.withDampingRatio( @@ -467,10 +458,7 @@ class ScrollPhysics { /// /// By default, physics for platforms other than iOS doesn't carry momentum. double carriedMomentum(double existingVelocity) { - if (parent == null) { - return 0.0; - } - return parent!.carriedMomentum(existingVelocity); + return parent?.carriedMomentum(existingVelocity) ?? 0.0; } /// The minimum amount of pixel distance drags must move by to start motion diff --git a/packages/flutter/lib/src/widgets/selectable_region.dart b/packages/flutter/lib/src/widgets/selectable_region.dart index b69fb49aad0..30759236d27 100644 --- a/packages/flutter/lib/src/widgets/selectable_region.dart +++ b/packages/flutter/lib/src/widgets/selectable_region.dart @@ -2059,10 +2059,7 @@ abstract class MultiSelectableSelectionContainerDelegate extends SelectionContai final List selectionRectsWithinDrawableArea = currSelectableSelectionRects.map((Rect selectionRect) { final Matrix4 transform = getTransformFrom(selectables[index]); final Rect localRect = MatrixUtils.transformRect(transform, selectionRect); - if (drawableArea != null) { - return drawableArea.intersect(localRect); - } - return localRect; + return drawableArea?.intersect(localRect) ?? localRect; }).where((Rect selectionRect) { return selectionRect.isFinite && !selectionRect.isEmpty; }).toList(); diff --git a/packages/flutter/lib/src/widgets/single_child_scroll_view.dart b/packages/flutter/lib/src/widgets/single_child_scroll_view.dart index 6fec4cb8762..14bc311e36a 100644 --- a/packages/flutter/lib/src/widgets/single_child_scroll_view.dart +++ b/packages/flutter/lib/src/widgets/single_child_scroll_view.dart @@ -435,34 +435,22 @@ class _RenderSingleChildViewport extends RenderBox with RenderObjectWithChildMix @override double computeMinIntrinsicWidth(double height) { - if (child != null) { - return child!.getMinIntrinsicWidth(height); - } - return 0.0; + return child?.getMinIntrinsicWidth(height) ?? 0.0; } @override double computeMaxIntrinsicWidth(double height) { - if (child != null) { - return child!.getMaxIntrinsicWidth(height); - } - return 0.0; + return child?.getMaxIntrinsicWidth(height) ?? 0.0; } @override double computeMinIntrinsicHeight(double width) { - if (child != null) { - return child!.getMinIntrinsicHeight(width); - } - return 0.0; + return child?.getMinIntrinsicHeight(width) ?? 0.0; } @override double computeMaxIntrinsicHeight(double width) { - if (child != null) { - return child!.getMaxIntrinsicHeight(width); - } - return 0.0; + return child?.getMaxIntrinsicHeight(width) ?? 0.0; } // We don't override computeDistanceToActualBaseline(), because we diff --git a/packages/flutter/lib/src/widgets/widget_inspector.dart b/packages/flutter/lib/src/widgets/widget_inspector.dart index 11e758e7bb6..c2322d0b3a3 100644 --- a/packages/flutter/lib/src/widgets/widget_inspector.dart +++ b/packages/flutter/lib/src/widgets/widget_inspector.dart @@ -732,12 +732,7 @@ class InspectorReferenceData { int count = 1; /// The value. - Object? get value { - if (_ref != null) { - return _ref!.target; - } - return _value; - } + Object? get value => _ref?.target ?? _value; } // Production implementation of [WidgetInspectorService]. diff --git a/packages/flutter/test/cupertino/text_selection_toolbar_test.dart b/packages/flutter/test/cupertino/text_selection_toolbar_test.dart index bf46a864b7c..5d9717d258e 100644 --- a/packages/flutter/test/cupertino/text_selection_toolbar_test.dart +++ b/packages/flutter/test/cupertino/text_selection_toolbar_test.dart @@ -471,12 +471,7 @@ void main() { // Theme brightness is preferred, otherwise MediaQuery brightness is // used. If both are null, defaults to light. - late final Brightness effectiveBrightness; - if (themeBrightness != null) { - effectiveBrightness = themeBrightness; - } else { - effectiveBrightness = mediaBrightness ?? Brightness.light; - } + final Brightness effectiveBrightness = themeBrightness ?? mediaBrightness ?? Brightness.light; expect( text.style!.color!.value, diff --git a/packages/flutter/test/material/app_test.dart b/packages/flutter/test/material/app_test.dart index 4cae541dd04..d72d990fbd4 100644 --- a/packages/flutter/test/material/app_test.dart +++ b/packages/flutter/test/material/app_test.dart @@ -23,10 +23,7 @@ class StateMarkerState extends State { @override Widget build(BuildContext context) { - if (widget.child != null) { - return widget.child!; - } - return Container(); + return widget.child ?? Container(); } } diff --git a/packages/flutter/test/material/tabs_test.dart b/packages/flutter/test/material/tabs_test.dart index 8cee1e5bfc2..518f36ba7a3 100644 --- a/packages/flutter/test/material/tabs_test.dart +++ b/packages/flutter/test/material/tabs_test.dart @@ -44,10 +44,7 @@ class StateMarkerState extends State { @override Widget build(BuildContext context) { - if (widget.child != null) { - return widget.child!; - } - return Container(); + return widget.child ?? Container(); } } diff --git a/packages/flutter/test/material/tooltip_test.dart b/packages/flutter/test/material/tooltip_test.dart index 2783b29a8e9..d038bf99d3f 100644 --- a/packages/flutter/test/material/tooltip_test.dart +++ b/packages/flutter/test/material/tooltip_test.dart @@ -3128,8 +3128,5 @@ Future _testGestureTap(WidgetTester tester, Finder tooltip) async { } SemanticsNode _findDebugSemantics(RenderObject object) { - if (object.debugSemantics != null) { - return object.debugSemantics!; - } - return _findDebugSemantics(object.parent!); + return object.debugSemantics ?? _findDebugSemantics(object.parent!); } diff --git a/packages/flutter/test/material/tooltip_theme_test.dart b/packages/flutter/test/material/tooltip_theme_test.dart index 56a356db85d..a0e984be840 100644 --- a/packages/flutter/test/material/tooltip_theme_test.dart +++ b/packages/flutter/test/material/tooltip_theme_test.dart @@ -1495,8 +1495,5 @@ void main() { } SemanticsNode findDebugSemantics(RenderObject object) { - if (object.debugSemantics != null) { - return object.debugSemantics!; - } - return findDebugSemantics(object.parent!); + return object.debugSemantics ?? findDebugSemantics(object.parent!); } diff --git a/packages/flutter/test/rendering/binding_pipeline_manifold_test.dart b/packages/flutter/test/rendering/binding_pipeline_manifold_test.dart index 81d79a5a82e..2ac4b2b62b2 100644 --- a/packages/flutter/test/rendering/binding_pipeline_manifold_test.dart +++ b/packages/flutter/test/rendering/binding_pipeline_manifold_test.dart @@ -59,10 +59,7 @@ class MyTestRenderingFlutterBinding extends TestRenderingFlutterBinding { static MyTestRenderingFlutterBinding? _instance; static MyTestRenderingFlutterBinding ensureInitialized() { - if (_instance != null) { - return _instance!; - } - return MyTestRenderingFlutterBinding(); + return _instance ?? MyTestRenderingFlutterBinding(); } @override diff --git a/packages/flutter/test/rendering/proxy_box_test.dart b/packages/flutter/test/rendering/proxy_box_test.dart index 12f7a2729bd..e3a3802c8c7 100644 --- a/packages/flutter/test/rendering/proxy_box_test.dart +++ b/packages/flutter/test/rendering/proxy_box_test.dart @@ -1055,10 +1055,7 @@ class ConditionalRepaintBoundary extends RenderProxyBox { @override OffsetLayer updateCompositedLayer({required covariant OffsetLayer? oldLayer}) { - if (offsetLayerFactory != null) { - return offsetLayerFactory!.call(oldLayer); - } - return super.updateCompositedLayer(oldLayer: oldLayer); + return offsetLayerFactory?.call(oldLayer) ?? super.updateCompositedLayer(oldLayer: oldLayer); } @override diff --git a/packages/flutter/test/rendering/rendering_tester.dart b/packages/flutter/test/rendering/rendering_tester.dart index d3aafafca56..14d16e07166 100644 --- a/packages/flutter/test/rendering/rendering_tester.dart +++ b/packages/flutter/test/rendering/rendering_tester.dart @@ -88,10 +88,7 @@ class TestRenderingFlutterBinding extends BindingBase with SchedulerBinding, Ser /// idempotent; calling it a second time will just return the /// previously-created instance. static TestRenderingFlutterBinding ensureInitialized({ VoidCallback? onErrors }) { - if (_instance != null) { - return _instance!; - } - return TestRenderingFlutterBinding(onErrors: onErrors); + return _instance ?? TestRenderingFlutterBinding(onErrors: onErrors); } final List _errors = []; diff --git a/packages/flutter/test/widgets/reparent_state_test.dart b/packages/flutter/test/widgets/reparent_state_test.dart index a14505a877b..b11d4b999ea 100644 --- a/packages/flutter/test/widgets/reparent_state_test.dart +++ b/packages/flutter/test/widgets/reparent_state_test.dart @@ -19,10 +19,7 @@ class StateMarkerState extends State { @override Widget build(BuildContext context) { - if (widget.child != null) { - return widget.child!; - } - return Container(); + return widget.child ?? Container(); } } diff --git a/packages/flutter/test/widgets/router_test.dart b/packages/flutter/test/widgets/router_test.dart index 01a4afbb78a..c3fb19ecd5d 100644 --- a/packages/flutter/test/widgets/router_test.dart +++ b/packages/flutter/test/widgets/router_test.dart @@ -50,10 +50,7 @@ void main() { final SimpleAsyncRouteInformationParser parser = SimpleAsyncRouteInformationParser(); final SimpleAsyncRouterDelegate delegate = SimpleAsyncRouterDelegate( builder: (BuildContext context, RouteInformation? information) { - if (information == null) { - return const Text('waiting'); - } - return Text(information.uri.toString()); + return Text(information?.uri.toString() ?? 'waiting'); }, ); addTearDown(delegate.dispose); @@ -97,10 +94,7 @@ void main() { final CompleterRouteInformationParser parser = CompleterRouteInformationParser(); final SimpleAsyncRouterDelegate delegate = SimpleAsyncRouterDelegate( builder: (BuildContext context, RouteInformation? information) { - if (information == null) { - return const Text('waiting'); - } - return Text(information.uri.toString()); + return Text(information?.uri.toString() ?? 'waiting'); }, ); addTearDown(delegate.dispose); diff --git a/packages/flutter/test/widgets/routes_test.dart b/packages/flutter/test/widgets/routes_test.dart index 9d1023a2c5f..49508884e74 100644 --- a/packages/flutter/test/widgets/routes_test.dart +++ b/packages/flutter/test/widgets/routes_test.dart @@ -2080,12 +2080,8 @@ class _TestDialogRouteWithCustomBarrierCurve extends PopupRoute { final Color? barrierColor; @override - Curve get barrierCurve { - if (_barrierCurve == null) { - return super.barrierCurve; - } - return _barrierCurve; - } + Curve get barrierCurve => _barrierCurve ?? super.barrierCurve; + final Curve? _barrierCurve; @override diff --git a/packages/flutter_test/lib/src/binding.dart b/packages/flutter_test/lib/src/binding.dart index 250c2059404..b9c68addffa 100644 --- a/packages/flutter_test/lib/src/binding.dart +++ b/packages/flutter_test/lib/src/binding.dart @@ -366,10 +366,7 @@ abstract class TestWidgetsFlutterBinding extends BindingBase /// /// This is called automatically by [testWidgets]. static TestWidgetsFlutterBinding ensureInitialized([@visibleForTesting Map? environment]) { - if (_instance != null) { - return _instance!; - } - return binding.ensureInitialized(environment); + return _instance ?? binding.ensureInitialized(environment); } @override diff --git a/packages/flutter_tools/lib/src/android/android_sdk.dart b/packages/flutter_tools/lib/src/android/android_sdk.dart index 03f525db4ff..d3654ffcefe 100644 --- a/packages/flutter_tools/lib/src/android/android_sdk.dart +++ b/packages/flutter_tools/lib/src/android/android_sdk.dart @@ -521,11 +521,7 @@ class AndroidSdk { final String executable = globals.platform.isWindows ? 'sdkmanager.bat' : 'sdkmanager'; - final String? path = getCmdlineToolsPath(executable, skipOldTools: true); - if (path != null) { - return path; - } - return null; + return getCmdlineToolsPath(executable, skipOldTools: true); } /// Returns the version of the Android SDK manager tool or null if not found. diff --git a/packages/flutter_tools/lib/src/android/java.dart b/packages/flutter_tools/lib/src/android/java.dart index 8830ef69dda..47fa7d9f612 100644 --- a/packages/flutter_tools/lib/src/android/java.dart +++ b/packages/flutter_tools/lib/src/android/java.dart @@ -163,11 +163,7 @@ class Java { RegExp(r'java\s+(?\d+(\.\d+)?(\.\d+)?)\s+\d\d\d\d-\d\d-\d\d'); final RegExpMatch? match = secondJdkVersionRegex.firstMatch(versionLines[0]); if (match != null) { - final Version? parsedVersion = Version.parse(match.namedGroup('version')); - if (parsedVersion == null) { - return null; - } - return parsedVersion; + return Version.parse(match.namedGroup('version')); } _logger.printWarning(_formatJavaVersionWarning(rawVersionOutput)); return null; diff --git a/packages/flutter_tools/lib/src/cache.dart b/packages/flutter_tools/lib/src/cache.dart index 5a03827cb3e..6abae46c8f8 100644 --- a/packages/flutter_tools/lib/src/cache.dart +++ b/packages/flutter_tools/lib/src/cache.dart @@ -557,11 +557,9 @@ class Cache { /// Return the top-level directory in the cache; this is `bin/cache`. Directory getRoot() { - if (_rootOverride != null) { - return _fileSystem.directory(_fileSystem.path.join(_rootOverride.path, 'bin', 'cache')); - } else { - return _fileSystem.directory(_fileSystem.path.join(flutterRoot!, 'bin', 'cache')); - } + return _fileSystem.directory( + _fileSystem.path.join(_rootOverride?.path ?? flutterRoot!, 'bin', 'cache'), + ); } String getHostPlatformArchName() { diff --git a/packages/flutter_tools/lib/src/commands/analyze_base.dart b/packages/flutter_tools/lib/src/commands/analyze_base.dart index 44dcf7cff76..19377ff6b66 100644 --- a/packages/flutter_tools/lib/src/commands/analyze_base.dart +++ b/packages/flutter_tools/lib/src/commands/analyze_base.dart @@ -84,10 +84,7 @@ abstract class AnalyzeBase { bool get isFlutterRepo => argResults['flutter-repo'] as bool; String get sdkPath { final String? dartSdk = argResults['dart-sdk'] as String?; - if (dartSdk != null) { - return dartSdk; - } - return artifacts.getArtifactPath(Artifact.engineDartSdkPath); + return dartSdk ?? artifacts.getArtifactPath(Artifact.engineDartSdkPath); } bool get isBenchmarking => argResults['benchmark'] as bool; String? get protocolTrafficLog => argResults['protocol-traffic-log'] as String?; diff --git a/packages/flutter_tools/lib/src/commands/packages.dart b/packages/flutter_tools/lib/src/commands/packages.dart index e9217782d7b..c6c3eab196b 100644 --- a/packages/flutter_tools/lib/src/commands/packages.dart +++ b/packages/flutter_tools/lib/src/commands/packages.dart @@ -399,14 +399,7 @@ class PackagesGetCommand extends FlutterCommand { return findPlugins(rootProject, throwOnError: false); })(); - late final String? _androidEmbeddingVersion = (() { - final FlutterProject? rootProject = _rootProject; - if (rootProject == null) { - return null; - } - - return rootProject.android.getEmbeddingVersion().toString().split('.').last; - })(); + late final String? _androidEmbeddingVersion = _rootProject?.android.getEmbeddingVersion().toString().split('.').last; /// The pub packages usage values are incorrect since these are calculated/sent /// before pub get completes. This needs to be performed after dependency resolution. diff --git a/packages/flutter_tools/lib/src/flutter_project_metadata.dart b/packages/flutter_tools/lib/src/flutter_project_metadata.dart index c4c1e9146d1..7a9284c2f2e 100644 --- a/packages/flutter_tools/lib/src/flutter_project_metadata.dart +++ b/packages/flutter_tools/lib/src/flutter_project_metadata.dart @@ -224,10 +224,7 @@ ${migrateConfig.getOutputFileString()}'''; /// Finds the fallback revision to use when no base revision is found in the migrate config. String getFallbackBaseRevision(Logger logger, FlutterVersion flutterVersion) { // Use the .metadata file if it exists. - if (versionRevision != null) { - return versionRevision!; - } - return flutterVersion.frameworkRevision; + return versionRevision ?? flutterVersion.frameworkRevision; } } diff --git a/packages/flutter_tools/lib/src/ios/devices.dart b/packages/flutter_tools/lib/src/ios/devices.dart index 6682872855d..4ed1025f2e2 100644 --- a/packages/flutter_tools/lib/src/ios/devices.dart +++ b/packages/flutter_tools/lib/src/ios/devices.dart @@ -1178,12 +1178,7 @@ class IOSDeviceLogReader extends DeviceLogReader { bool isWirelesslyConnected = false, bool isCoreDevice = false, }) { - final int sdkVersion; - if (majorSdkVersion != null) { - sdkVersion = majorSdkVersion; - } else { - sdkVersion = useSyslog ? 12 : 13; - } + final int sdkVersion = majorSdkVersion ?? (useSyslog ? 12 : 13); return IOSDeviceLogReader._( iMobileDevice, sdkVersion, '1234', 'test', isWirelesslyConnected, isCoreDevice, 'Runner', usingCISystem); } diff --git a/packages/flutter_tools/lib/src/ios/ios_deploy.dart b/packages/flutter_tools/lib/src/ios/ios_deploy.dart index a4cf23ffa54..501e420ac16 100644 --- a/packages/flutter_tools/lib/src/ios/ios_deploy.dart +++ b/packages/flutter_tools/lib/src/ios/ios_deploy.dart @@ -637,12 +637,7 @@ class IOSDeployDebugger { ); } - if (_stdinWriteFuture != null) { - _stdinWriteFuture = _stdinWriteFuture!.then((_) => writeln()); - } else { - _stdinWriteFuture = writeln(); - } - + _stdinWriteFuture = _stdinWriteFuture?.then((_) => writeln()) ?? writeln(); return _stdinWriteFuture; } diff --git a/packages/flutter_tools/lib/src/ios/mac.dart b/packages/flutter_tools/lib/src/ios/mac.dart index 58ec824bb1c..9da2f15e264 100644 --- a/packages/flutter_tools/lib/src/ios/mac.dart +++ b/packages/flutter_tools/lib/src/ios/mac.dart @@ -847,12 +847,7 @@ void _parseIssueInStdout(XcodeBuildExecution xcodeBuildExecution, Logger logger, String? _parseMissingPlatform(String message) { final RegExp pattern = RegExp(r'error:(.*?) is not installed\. To use with Xcode, first download and install the platform'); - final RegExpMatch? match = pattern.firstMatch(message); - if (match != null) { - final String? version = match.group(1); - return version; - } - return null; + return pattern.firstMatch(message)?.group(1); } // The result of [_handleXCResultIssue]. diff --git a/packages/flutter_tools/lib/src/version.dart b/packages/flutter_tools/lib/src/version.dart index c2af8566ddb..98011830527 100644 --- a/packages/flutter_tools/lib/src/version.dart +++ b/packages/flutter_tools/lib/src/version.dart @@ -717,11 +717,7 @@ class VersionUpstreamValidator { // URLs without ".git" suffix will remain unaffected. static final RegExp _patternUrlDotGit = RegExp(r'(.*)(\.git)$'); static String stripDotGit(String url) { - final RegExpMatch? match = _patternUrlDotGit.firstMatch(url); - if (match == null) { - return url; - } - return match.group(1)!; + return _patternUrlDotGit.firstMatch(url)?.group(1)! ?? url; } } diff --git a/packages/flutter_tools/lib/src/xcode_project.dart b/packages/flutter_tools/lib/src/xcode_project.dart index afc544bb9d7..16defd560f4 100644 --- a/packages/flutter_tools/lib/src/xcode_project.dart +++ b/packages/flutter_tools/lib/src/xcode_project.dart @@ -329,10 +329,7 @@ class IosProject extends XcodeBasedProject { Future _getTeamIdentifier(XcodeProjectBuildContext buildContext) async { final Map? buildSettings = await _buildSettingsForXcodeProjectBuildContext(buildContext); - if (buildSettings != null) { - return buildSettings[kTeamIdKey]; - } - return null; + return buildSettings?[kTeamIdKey]; } Future> _getAssociatedDomains(XcodeProjectBuildContext buildContext) async { diff --git a/packages/flutter_tools/test/general.shard/device_test.dart b/packages/flutter_tools/test/general.shard/device_test.dart index d3623591668..e5f31eeef7d 100644 --- a/packages/flutter_tools/test/general.shard/device_test.dart +++ b/packages/flutter_tools/test/general.shard/device_test.dart @@ -1130,10 +1130,7 @@ class TestDeviceDiscoverySupportFilter extends DeviceDiscoverySupportFilter { @override bool isDeviceSupportedForProject(Device device) { - if (isAlwaysSupportedForProjectOverride != null) { - return isAlwaysSupportedForProjectOverride!; - } - return super.isDeviceSupportedForProject(device); + return isAlwaysSupportedForProjectOverride ?? super.isDeviceSupportedForProject(device); } } diff --git a/packages/flutter_tools/test/src/io.dart b/packages/flutter_tools/test/src/io.dart index db4eb37e7fc..415ac12a9cc 100644 --- a/packages/flutter_tools/test/src/io.dart +++ b/packages/flutter_tools/test/src/io.dart @@ -24,90 +24,60 @@ class FlutterIOOverrides extends io.IOOverrides { @override io.Directory createDirectory(String path) { - if (_fileSystemDelegate == null) { - return super.createDirectory(path); - } - return _fileSystemDelegate.directory(path); + return _fileSystemDelegate?.directory(path) ?? super.createDirectory(path); } @override io.File createFile(String path) { - if (_fileSystemDelegate == null) { - return super.createFile(path); - } - return _fileSystemDelegate.file(path); + return _fileSystemDelegate?.file(path) ?? super.createFile(path); } @override io.Link createLink(String path) { - if (_fileSystemDelegate == null) { - return super.createLink(path); - } - return _fileSystemDelegate.link(path); + return _fileSystemDelegate?.link(path) ?? super.createLink(path); } @override Stream fsWatch(String path, int events, bool recursive) { - if (_fileSystemDelegate == null) { - return super.fsWatch(path, events, recursive); - } - return _fileSystemDelegate.file(path).watch(events: events, recursive: recursive); + return _fileSystemDelegate?.file(path).watch(events: events, recursive: recursive) + ?? super.fsWatch(path, events, recursive); } @override bool fsWatchIsSupported() { - if (_fileSystemDelegate == null) { - return super.fsWatchIsSupported(); - } - return _fileSystemDelegate.isWatchSupported; + return _fileSystemDelegate?.isWatchSupported ?? super.fsWatchIsSupported(); } @override Future fseGetType(String path, bool followLinks) { - if (_fileSystemDelegate == null) { - return super.fseGetType(path, followLinks); - } - return _fileSystemDelegate.type(path, followLinks: followLinks); + return _fileSystemDelegate?.type(path, followLinks: followLinks) + ?? super.fseGetType(path, followLinks); } @override FileSystemEntityType fseGetTypeSync(String path, bool followLinks) { - if (_fileSystemDelegate == null) { - return super.fseGetTypeSync(path, followLinks); - } - return _fileSystemDelegate.typeSync(path, followLinks: followLinks); + return _fileSystemDelegate?.typeSync(path, followLinks: followLinks) + ?? super.fseGetTypeSync(path, followLinks); } @override Future fseIdentical(String path1, String path2) { - if (_fileSystemDelegate == null) { - return super.fseIdentical(path1, path2); - } - return _fileSystemDelegate.identical(path1, path2); + return _fileSystemDelegate?.identical(path1, path2) ?? super.fseIdentical(path1, path2); } @override bool fseIdenticalSync(String path1, String path2) { - if (_fileSystemDelegate == null) { - return super.fseIdenticalSync(path1, path2); - } - return _fileSystemDelegate.identicalSync(path1, path2); + return _fileSystemDelegate?.identicalSync(path1, path2) ?? super.fseIdenticalSync(path1, path2); } @override io.Directory getCurrentDirectory() { - if (_fileSystemDelegate == null) { - return super.getCurrentDirectory(); - } - return _fileSystemDelegate.currentDirectory; + return _fileSystemDelegate?.currentDirectory ?? super.getCurrentDirectory(); } @override io.Directory getSystemTempDirectory() { - if (_fileSystemDelegate == null) { - return super.getSystemTempDirectory(); - } - return _fileSystemDelegate.systemTempDirectory; + return _fileSystemDelegate?.systemTempDirectory ?? super.getSystemTempDirectory(); } @override @@ -120,17 +90,11 @@ class FlutterIOOverrides extends io.IOOverrides { @override Future stat(String path) { - if (_fileSystemDelegate == null) { - return super.stat(path); - } - return _fileSystemDelegate.stat(path); + return _fileSystemDelegate?.stat(path) ?? super.stat(path); } @override FileStat statSync(String path) { - if (_fileSystemDelegate == null) { - return super.statSync(path); - } - return _fileSystemDelegate.statSync(path); + return _fileSystemDelegate?.statSync(path) ?? super.statSync(path); } }