Prefer void to null (#22977) * Future<void> main * Future<void>.delayed * prefer_void_to_Null * address review comments
diff --git a/examples/catalog/bin/screenshot_test.dart.template b/examples/catalog/bin/screenshot_test.dart.template index 6492439..63fb285 100644 --- a/examples/catalog/bin/screenshot_test.dart.template +++ b/examples/catalog/bin/screenshot_test.dart.template
@@ -26,7 +26,7 @@ for (String path in paths) { await driver.waitUntilNoTransientCallbacks(); // TBD: when #11021 has been resolved, this shouldn't be necessary. - await new Future<Null>.delayed(const Duration(milliseconds: 500)); + await new Future<void>.delayed(const Duration(milliseconds: 500)); final List<int> pixels = await driver.screenshot(); final File file = new File(path); await file.writeAsBytes(pixels);
diff --git a/examples/catalog/test/expansion_tile_sample_test.dart b/examples/catalog/test/expansion_tile_sample_test.dart index 2a6bcde..619a0ba 100644 --- a/examples/catalog/test/expansion_tile_sample_test.dart +++ b/examples/catalog/test/expansion_tile_sample_test.dart
@@ -22,12 +22,12 @@ } } - Future<Null> scrollUpOneEntry() async { + Future<void> scrollUpOneEntry() async { await tester.dragFrom(const Offset(200.0, 200.0), const Offset(0.0, -88.00)); await tester.pumpAndSettle(); } - Future<Null> tapEntry(String title) async { + Future<void> tapEntry(String title) async { await tester.tap(find.text(title)); await tester.pumpAndSettle(); }
diff --git a/examples/flutter_gallery/lib/demo/material/bottom_app_bar_demo.dart b/examples/flutter_gallery/lib/demo/material/bottom_app_bar_demo.dart index bf327f0..0b1a272 100644 --- a/examples/flutter_gallery/lib/demo/material/bottom_app_bar_demo.dart +++ b/examples/flutter_gallery/lib/demo/material/bottom_app_bar_demo.dart
@@ -351,7 +351,7 @@ IconButton( icon: const Icon(Icons.menu), onPressed: () { - showModalBottomSheet<Null>( + showModalBottomSheet<void>( context: context, builder: (BuildContext context) => const _DemoDrawer(), );
diff --git a/examples/flutter_gallery/lib/demo/material/date_and_time_picker_demo.dart b/examples/flutter_gallery/lib/demo/material/date_and_time_picker_demo.dart index 64701fe..ab9763e 100644 --- a/examples/flutter_gallery/lib/demo/material/date_and_time_picker_demo.dart +++ b/examples/flutter_gallery/lib/demo/material/date_and_time_picker_demo.dart
@@ -64,7 +64,7 @@ final ValueChanged<DateTime> selectDate; final ValueChanged<TimeOfDay> selectTime; - Future<Null> _selectDate(BuildContext context) async { + Future<void> _selectDate(BuildContext context) async { final DateTime picked = await showDatePicker( context: context, initialDate: selectedDate, @@ -75,7 +75,7 @@ selectDate(picked); } - Future<Null> _selectTime(BuildContext context) async { + Future<void> _selectTime(BuildContext context) async { final TimeOfDay picked = await showTimePicker( context: context, initialTime: selectedTime
diff --git a/examples/flutter_gallery/lib/demo/material/dialog_demo.dart b/examples/flutter_gallery/lib/demo/material/dialog_demo.dart index 27c7bff..73c5e83 100644 --- a/examples/flutter_gallery/lib/demo/material/dialog_demo.dart +++ b/examples/flutter_gallery/lib/demo/material/dialog_demo.dart
@@ -180,7 +180,7 @@ context: context, initialTime: _selectedTime ) - .then<Null>((TimeOfDay value) { + .then<void>((TimeOfDay value) { if (value != null && value != _selectedTime) { _selectedTime = value; _scaffoldKey.currentState.showSnackBar(SnackBar(
diff --git a/examples/flutter_gallery/lib/demo/material/full_screen_dialog_demo.dart b/examples/flutter_gallery/lib/demo/material/full_screen_dialog_demo.dart index 9d268fe..9c5fc2c 100644 --- a/examples/flutter_gallery/lib/demo/material/full_screen_dialog_demo.dart +++ b/examples/flutter_gallery/lib/demo/material/full_screen_dialog_demo.dart
@@ -49,7 +49,7 @@ firstDate: date.subtract(const Duration(days: 30)), lastDate: date.add(const Duration(days: 30)) ) - .then<Null>((DateTime value) { + .then<void>((DateTime value) { if (value != null) onChanged(DateTime(value.year, value.month, value.day, time.hour, time.minute)); }); @@ -76,7 +76,7 @@ context: context, initialTime: time ) - .then<Null>((TimeOfDay value) { + .then<void>((TimeOfDay value) { if (value != null) onChanged(DateTime(date.year, date.month, date.day, value.hour, value.minute)); });
diff --git a/examples/flutter_gallery/lib/demo/material/list_demo.dart b/examples/flutter_gallery/lib/demo/material/list_demo.dart index 0f35f96..d47c226 100644 --- a/examples/flutter_gallery/lib/demo/material/list_demo.dart +++ b/examples/flutter_gallery/lib/demo/material/list_demo.dart
@@ -32,7 +32,7 @@ class _ListDemoState extends State<ListDemo> { static final GlobalKey<ScaffoldState> scaffoldKey = GlobalKey<ScaffoldState>(); - PersistentBottomSheetController<Null> _bottomSheet; + PersistentBottomSheetController<void> _bottomSheet; _MaterialListType _itemType = _MaterialListType.threeLine; bool _dense = false; bool _showAvatars = true; @@ -51,7 +51,7 @@ } void _showConfigurationSheet() { - final PersistentBottomSheetController<Null> bottomSheet = scaffoldKey.currentState.showBottomSheet((BuildContext bottomSheetContext) { + final PersistentBottomSheetController<void> bottomSheet = scaffoldKey.currentState.showBottomSheet<void>((BuildContext bottomSheetContext) { return Container( decoration: const BoxDecoration( border: Border(top: BorderSide(color: Colors.black26)),
diff --git a/examples/flutter_gallery/lib/demo/material/overscroll_demo.dart b/examples/flutter_gallery/lib/demo/material/overscroll_demo.dart index 5863444..028b1fc 100644 --- a/examples/flutter_gallery/lib/demo/material/overscroll_demo.dart +++ b/examples/flutter_gallery/lib/demo/material/overscroll_demo.dart
@@ -26,10 +26,10 @@ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N' ]; - Future<Null> _handleRefresh() { - final Completer<Null> completer = Completer<Null>(); - Timer(const Duration(seconds: 3), () { completer.complete(null); }); - return completer.future.then<Null>((_) { + Future<void> _handleRefresh() { + final Completer<void> completer = Completer<void>(); + Timer(const Duration(seconds: 3), () { completer.complete(); }); + return completer.future.then<void>((_) { _scaffoldKey.currentState?.showSnackBar(SnackBar( content: const Text('Refresh complete'), action: SnackBarAction(
diff --git a/examples/flutter_gallery/lib/demo/material/persistent_bottom_sheet_demo.dart b/examples/flutter_gallery/lib/demo/material/persistent_bottom_sheet_demo.dart index b244989..40ac589 100644 --- a/examples/flutter_gallery/lib/demo/material/persistent_bottom_sheet_demo.dart +++ b/examples/flutter_gallery/lib/demo/material/persistent_bottom_sheet_demo.dart
@@ -28,7 +28,7 @@ setState(() { // disable the button _showBottomSheetCallback = null; }); - _scaffoldKey.currentState.showBottomSheet<Null>((BuildContext context) { + _scaffoldKey.currentState.showBottomSheet<void>((BuildContext context) { final ThemeData themeData = Theme.of(context); return Container( decoration: BoxDecoration(
diff --git a/examples/flutter_gallery/lib/demo/material/reorderable_list_demo.dart b/examples/flutter_gallery/lib/demo/material/reorderable_list_demo.dart index 4cda720..f296128 100644 --- a/examples/flutter_gallery/lib/demo/material/reorderable_list_demo.dart +++ b/examples/flutter_gallery/lib/demo/material/reorderable_list_demo.dart
@@ -39,7 +39,7 @@ class _ListDemoState extends State<ReorderableListDemo> { static final GlobalKey<ScaffoldState> scaffoldKey = GlobalKey<ScaffoldState>(); - PersistentBottomSheetController<Null> _bottomSheet; + PersistentBottomSheetController<void> _bottomSheet; _ReorderableListType _itemType = _ReorderableListType.threeLine; bool _reverseSort = false; final List<_ListItem> _items = <String>[ @@ -58,7 +58,7 @@ void _showConfigurationSheet() { setState(() { - _bottomSheet = scaffoldKey.currentState.showBottomSheet((BuildContext bottomSheetContext) { + _bottomSheet = scaffoldKey.currentState.showBottomSheet<void>((BuildContext bottomSheetContext) { return DecoratedBox( decoration: const BoxDecoration( border: Border(top: BorderSide(color: Colors.black26)),
diff --git a/examples/flutter_gallery/lib/demo/material/tabs_fab_demo.dart b/examples/flutter_gallery/lib/demo/material/tabs_fab_demo.dart index 0ebb592..6f09cb8 100644 --- a/examples/flutter_gallery/lib/demo/material/tabs_fab_demo.dart +++ b/examples/flutter_gallery/lib/demo/material/tabs_fab_demo.dart
@@ -69,7 +69,7 @@ } void _showExplanatoryText() { - _scaffoldKey.currentState.showBottomSheet<Null>((BuildContext context) { + _scaffoldKey.currentState.showBottomSheet<void>((BuildContext context) { return Container( decoration: BoxDecoration( border: Border(top: BorderSide(color: Theme.of(context).dividerColor))
diff --git a/examples/flutter_gallery/lib/demo/shrine/shrine_home.dart b/examples/flutter_gallery/lib/demo/shrine/shrine_home.dart index 9382df9..a7aa943 100644 --- a/examples/flutter_gallery/lib/demo/shrine/shrine_home.dart +++ b/examples/flutter_gallery/lib/demo/shrine/shrine_home.dart
@@ -362,7 +362,7 @@ static final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>(debugLabel: 'Shrine Home'); static final _ShrineGridDelegate gridDelegate = _ShrineGridDelegate(); - Future<Null> _showOrderPage(Product product) async { + Future<void> _showOrderPage(Product product) async { final Order order = _shoppingCart[product] ?? Order(product: product); final Order completedOrder = await Navigator.push(context, ShrineOrderRoute( order: order,
diff --git a/examples/flutter_gallery/lib/demo/video_demo.dart b/examples/flutter_gallery/lib/demo/video_demo.dart index a100591..b4851bd 100644 --- a/examples/flutter_gallery/lib/demo/video_demo.dart +++ b/examples/flutter_gallery/lib/demo/video_demo.dart
@@ -66,7 +66,7 @@ pageBuilder: fullScreenRoutePageBuilder, ); - route.completed.then((void result) { + route.completed.then((void value) { controller.setVolume(0.0); }); @@ -272,7 +272,7 @@ }); final Widget child; - final Completer<Null> connectedCompleter; + final Completer<void> connectedCompleter; final GlobalKey<ScaffoldState> scaffoldKey; @override @@ -362,14 +362,14 @@ ); final GlobalKey<ScaffoldState> scaffoldKey = GlobalKey<ScaffoldState>(); - final Completer<Null> connectedCompleter = Completer<Null>(); + final Completer<void> connectedCompleter = Completer<void>(); bool isSupported = true; @override void initState() { super.initState(); - Future<Null> initController(VideoPlayerController controller) async { + Future<void> initController(VideoPlayerController controller) async { controller.setLooping(true); controller.setVolume(0.0); controller.play();
diff --git a/examples/flutter_gallery/lib/gallery/demo.dart b/examples/flutter_gallery/lib/gallery/demo.dart index c6a5eda..12afd7d 100644 --- a/examples/flutter_gallery/lib/gallery/demo.dart +++ b/examples/flutter_gallery/lib/gallery/demo.dart
@@ -138,7 +138,7 @@ @override void didChangeDependencies() { - getExampleCode(widget.exampleCodeTag, DefaultAssetBundle.of(context)).then<Null>((String code) { + getExampleCode(widget.exampleCodeTag, DefaultAssetBundle.of(context)).then<void>((String code) { if (mounted) { setState(() { _exampleCode = code ?? 'Example code not found';
diff --git a/examples/flutter_gallery/lib/gallery/example_code_parser.dart b/examples/flutter_gallery/lib/gallery/example_code_parser.dart index 6a834bc..7f50292 100644 --- a/examples/flutter_gallery/lib/gallery/example_code_parser.dart +++ b/examples/flutter_gallery/lib/gallery/example_code_parser.dart
@@ -17,7 +17,7 @@ return _exampleCode[tag]; } -Future<Null> _parseExampleCode(AssetBundle bundle) async { +Future<void> _parseExampleCode(AssetBundle bundle) async { final String code = await bundle.loadString('lib/gallery/example_code.dart') ?? '// lib/gallery/example_code.dart not found\n'; _exampleCode = <String, String>{};
diff --git a/examples/flutter_gallery/test/live_smoketest.dart b/examples/flutter_gallery/test/live_smoketest.dart index 8bab93d..c64be04 100644 --- a/examples/flutter_gallery/test/live_smoketest.dart +++ b/examples/flutter_gallery/test/live_smoketest.dart
@@ -39,7 +39,7 @@ 'Video', ]; -Future<Null> main() async { +Future<void> main() async { try { // Verify that _kUnsynchronizedDemos and _kSkippedDemos identify // demos that actually exist. @@ -89,8 +89,8 @@ bool frameSync = true; /// Waits until at the end of a frame the provided [condition] is [true]. - Future<Null> _waitUntilFrame(bool condition(), [Completer<Null> completer]) { - completer ??= Completer<Null>(); + Future<void> _waitUntilFrame(bool condition(), [Completer<void> completer]) { + completer ??= Completer<void>(); if (!condition()) { SchedulerBinding.instance.addPostFrameCallback((Duration timestamp) { _waitUntilFrame(condition, completer); @@ -112,11 +112,11 @@ } @override - Future<Null> tap(Finder finder, { int pointer }) async { + Future<void> tap(Finder finder, { int pointer }) async { await super.tap(await _waitForElement(finder), pointer: pointer); } - Future<Null> scrollIntoView(Finder finder, {double alignment}) async { + Future<void> scrollIntoView(Finder finder, {double alignment}) async { final Finder target = await _waitForElement(finder); await Scrollable.ensureVisible(target.evaluate().single, duration: const Duration(milliseconds: 100), alignment: alignment); }
diff --git a/examples/flutter_gallery/test/smoke_test.dart b/examples/flutter_gallery/test/smoke_test.dart index df480fc..9eb65f5 100644 --- a/examples/flutter_gallery/test/smoke_test.dart +++ b/examples/flutter_gallery/test/smoke_test.dart
@@ -46,7 +46,7 @@ } } -Future<Null> smokeDemo(WidgetTester tester, GalleryDemo demo) async { +Future<void> smokeDemo(WidgetTester tester, GalleryDemo demo) async { // Don't use pumpUntilNoTransientCallbacks in this function, because some of // the smoketests have infinitely-running animations (e.g. the progress // indicators demo). @@ -94,7 +94,7 @@ await tester.pump(const Duration(milliseconds: 400)); // Wait until it has finished. } -Future<Null> smokeOptionsPage(WidgetTester tester) async { +Future<void> smokeOptionsPage(WidgetTester tester) async { final Finder showOptionsPageButton = find.byTooltip('Toggle options page'); // Show the options page @@ -133,7 +133,7 @@ await tester.pumpAndSettle(); } -Future<Null> smokeGallery(WidgetTester tester) async { +Future<void> smokeGallery(WidgetTester tester) async { bool sendFeedbackButtonPressed = false; await tester.pumpWidget(
diff --git a/examples/flutter_gallery/test_driver/scroll_perf_test.dart b/examples/flutter_gallery/test_driver/scroll_perf_test.dart index 07a0b7f..0f1f2cb 100644 --- a/examples/flutter_gallery/test_driver/scroll_perf_test.dart +++ b/examples/flutter_gallery/test_driver/scroll_perf_test.dart
@@ -31,13 +31,13 @@ // Scroll down for (int i = 0; i < 5; i++) { await driver.scroll(demoList, 0.0, -300.0, const Duration(milliseconds: 300)); - await Future<Null>.delayed(const Duration(milliseconds: 500)); + await Future<void>.delayed(const Duration(milliseconds: 500)); } // Scroll up for (int i = 0; i < 5; i++) { await driver.scroll(demoList, 0.0, 300.0, const Duration(milliseconds: 300)); - await Future<Null>.delayed(const Duration(milliseconds: 500)); + await Future<void>.delayed(const Duration(milliseconds: 500)); } });
diff --git a/examples/flutter_gallery/test_driver/transitions_perf_test.dart b/examples/flutter_gallery/test_driver/transitions_perf_test.dart index 9e6da3b..440e332 100644 --- a/examples/flutter_gallery/test_driver/transitions_perf_test.dart +++ b/examples/flutter_gallery/test_driver/transitions_perf_test.dart
@@ -55,7 +55,7 @@ /// Extracts event data from [events] recorded by timeline, validates it, turns /// it into a histogram, and saves to a JSON file. -Future<Null> saveDurationsHistogram(List<Map<String, dynamic>> events, String outputPath) async { +Future<void> saveDurationsHistogram(List<Map<String, dynamic>> events, String outputPath) async { final Map<String, List<int>> durations = <String, List<int>>{}; Map<String, dynamic> startEvent; @@ -121,7 +121,7 @@ /// Scrolls each demo menu item into view, launches it, then returns to the /// home screen twice. -Future<Null> runDemos(List<String> demos, FlutterDriver driver) async { +Future<void> runDemos(List<String> demos, FlutterDriver driver) async { final SerializableFinder demoList = find.byValueKey('GalleryDemoList'); String currentDemoCategory;
diff --git a/examples/flutter_gallery/test_memory/back_button.dart b/examples/flutter_gallery/test_memory/back_button.dart index c8f2e11..9efc776 100644 --- a/examples/flutter_gallery/test_memory/back_button.dart +++ b/examples/flutter_gallery/test_memory/back_button.dart
@@ -30,7 +30,7 @@ Future<void> main() async { runApp(const GalleryApp()); await endOfAnimation(); - await Future<Null>.delayed(const Duration(milliseconds: 50)); + await Future<void>.delayed(const Duration(milliseconds: 50)); debugPrint('==== MEMORY BENCHMARK ==== READY ===='); WidgetsBinding.instance.addObserver(LifecycleObserver()); }
diff --git a/examples/flutter_gallery/test_memory/memory_nav.dart b/examples/flutter_gallery/test_memory/memory_nav.dart index fc64fda..b5aad66 100644 --- a/examples/flutter_gallery/test_memory/memory_nav.dart +++ b/examples/flutter_gallery/test_memory/memory_nav.dart
@@ -36,7 +36,7 @@ ), )); await SchedulerBinding.instance.endOfFrame; - await Future<Null>.delayed(const Duration(milliseconds: 50)); + await Future<void>.delayed(const Duration(milliseconds: 50)); debugPrint('==== MEMORY BENCHMARK ==== READY ===='); await ready.future; @@ -55,12 +55,12 @@ debugPrint('Navigating...'); await controller.tap(find.text('Material')); - await Future<Null>.delayed(const Duration(milliseconds: 150)); + await Future<void>.delayed(const Duration(milliseconds: 150)); final Finder demoList = find.byKey(const Key('GalleryDemoList')); final Finder demoItem = find.text('Text fields'); do { await controller.drag(demoList, const Offset(0.0, -300.0)); - await Future<Null>.delayed(const Duration(milliseconds: 20)); + await Future<void>.delayed(const Duration(milliseconds: 20)); } while (!demoItem.precache()); // Ensure that the center of the "Text fields" item is visible
diff --git a/examples/layers/services/isolate.dart b/examples/layers/services/isolate.dart index d7bfae7..5c689d6 100644 --- a/examples/layers/services/isolate.dart +++ b/examples/layers/services/isolate.dart
@@ -136,12 +136,12 @@ // isolates do not have access to the root bundle. However, the loading // process is asynchronous, so the UI will not block while the file is // loaded. - rootBundle.loadString('services/data.json').then<Null>((String data) { + rootBundle.loadString('services/data.json').then<void>((String data) { if (isRunning) { final CalculationMessage message = CalculationMessage(data, _receivePort.sendPort); // Spawn an isolate to JSON-parse the file contents. The JSON parsing // is synchronous, so if done in the main isolate, the UI would block. - Isolate.spawn<CalculationMessage>(_calculate, message).then<Null>((Isolate isolate) { + Isolate.spawn<CalculationMessage>(_calculate, message).then<void>((Isolate isolate) { if (!isRunning) { isolate.kill(priority: Isolate.immediate); } else {
diff --git a/examples/layers/test/gestures_test.dart b/examples/layers/test/gestures_test.dart index c37b1d2..1b09663 100644 --- a/examples/layers/test/gestures_test.dart +++ b/examples/layers/test/gestures_test.dart
@@ -16,7 +16,7 @@ final Finder finder = find.byType(GestureDemo); MaterialColor getSwatch() => tester.state<GestureDemoState>(finder).swatch; - Future<Null> tap() async { + Future<void> tap() async { final Offset topLeft = tester.getTopLeft(finder); await tester.tapAt(tester.getSize(finder).center(topLeft)); await tester.pump(const Duration(seconds: 1));
diff --git a/examples/platform_channel/lib/main.dart b/examples/platform_channel/lib/main.dart index 8739a01..48eddc8 100644 --- a/examples/platform_channel/lib/main.dart +++ b/examples/platform_channel/lib/main.dart
@@ -21,7 +21,7 @@ String _batteryLevel = 'Battery level: unknown.'; String _chargingStatus = 'Battery status: unknown.'; - Future<Null> _getBatteryLevel() async { + Future<void> _getBatteryLevel() async { String batteryLevel; try { final int result = await methodChannel.invokeMethod('getBatteryLevel');
diff --git a/examples/platform_channel_swift/lib/main.dart b/examples/platform_channel_swift/lib/main.dart index 8739a01..48eddc8 100644 --- a/examples/platform_channel_swift/lib/main.dart +++ b/examples/platform_channel_swift/lib/main.dart
@@ -21,7 +21,7 @@ String _batteryLevel = 'Battery level: unknown.'; String _chargingStatus = 'Battery status: unknown.'; - Future<Null> _getBatteryLevel() async { + Future<void> _getBatteryLevel() async { String batteryLevel; try { final int result = await methodChannel.invokeMethod('getBatteryLevel');
diff --git a/examples/platform_view/lib/main.dart b/examples/platform_view/lib/main.dart index 9a66c01..4778d68 100644 --- a/examples/platform_view/lib/main.dart +++ b/examples/platform_view/lib/main.dart
@@ -45,7 +45,7 @@ }); } - Future<Null> _launchPlatformCount() async { + Future<void> _launchPlatformCount() async { final int platformCounter = await _methodChannel.invokeMethod('switchView', _counter); setState(() {
diff --git a/examples/stocks/lib/stock_data.dart b/examples/stocks/lib/stock_data.dart index e8d98db..3e08482 100644 --- a/examples/stocks/lib/stock_data.dart +++ b/examples/stocks/lib/stock_data.dart
@@ -77,7 +77,7 @@ static bool actuallyFetchData = true; void _fetchNextChunk() { - _httpClient.get(_urlToFetch(_nextChunk++)).then<Null>((http.Response response) { + _httpClient.get(_urlToFetch(_nextChunk++)).then<void>((http.Response response) { final String json = response.body; if (json == null) { debugPrint('Failed to load stock data chunk ${_nextChunk - 1}');
diff --git a/examples/stocks/lib/stock_home.dart b/examples/stocks/lib/stock_home.dart index 323850d..c77134e 100644 --- a/examples/stocks/lib/stock_home.dart +++ b/examples/stocks/lib/stock_home.dart
@@ -263,7 +263,7 @@ Navigator.pushNamed(context, '/stock:${stock.symbol}'); }, onShow: (Stock stock) { - _scaffoldKey.currentState.showBottomSheet<Null>((BuildContext context) => StockSymbolBottomSheet(stock: stock)); + _scaffoldKey.currentState.showBottomSheet<void>((BuildContext context) => StockSymbolBottomSheet(stock: stock)); }, ); }
diff --git a/examples/stocks/test_driver/scroll_perf_test.dart b/examples/stocks/test_driver/scroll_perf_test.dart index e8a8591..eb5a23c 100644 --- a/examples/stocks/test_driver/scroll_perf_test.dart +++ b/examples/stocks/test_driver/scroll_perf_test.dart
@@ -29,13 +29,13 @@ // Scroll down for (int i = 0; i < 5; i++) { await driver.scroll(stockList, 0.0, -300.0, const Duration(milliseconds: 300)); - await Future<Null>.delayed(const Duration(milliseconds: 500)); + await Future<void>.delayed(const Duration(milliseconds: 500)); } // Scroll up for (int i = 0; i < 5; i++) { await driver.scroll(stockList, 0.0, 300.0, const Duration(milliseconds: 300)); - await Future<Null>.delayed(const Duration(milliseconds: 500)); + await Future<void>.delayed(const Duration(milliseconds: 500)); } });
diff --git a/packages/flutter/lib/src/animation/animation_controller.dart b/packages/flutter/lib/src/animation/animation_controller.dart index f418065..587a541 100644 --- a/packages/flutter/lib/src/animation/animation_controller.dart +++ b/packages/flutter/lib/src/animation/animation_controller.dart
@@ -615,7 +615,7 @@ _simulation = simulation; _lastElapsedDuration = Duration.zero; _value = simulation.x(0.0).clamp(lowerBound, upperBound); - final Future<Null> result = _ticker.start(); + final TickerFuture result = _ticker.start(); _status = (_direction == _AnimationDirection.forward) ? AnimationStatus.forward : AnimationStatus.reverse;
diff --git a/packages/flutter/lib/src/cupertino/button.dart b/packages/flutter/lib/src/cupertino/button.dart index 323d2c6..912f4af 100644 --- a/packages/flutter/lib/src/cupertino/button.dart +++ b/packages/flutter/lib/src/cupertino/button.dart
@@ -2,8 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import 'dart:async'; - import 'package:flutter/foundation.dart'; import 'package:flutter/widgets.dart'; @@ -188,10 +186,10 @@ if (_animationController.isAnimating) return; final bool wasHeldDown = _buttonHeldDown; - final Future<Null> ticker = _buttonHeldDown + final TickerFuture ticker = _buttonHeldDown ? _animationController.animateTo(1.0, duration: kFadeOutDuration) : _animationController.animateTo(0.0, duration: kFadeInDuration); - ticker.then<void>((Null value) { + ticker.then<void>((void value) { if (mounted && wasHeldDown != _buttonHeldDown) _animate(); });
diff --git a/packages/flutter/lib/src/foundation/basic_types.dart b/packages/flutter/lib/src/foundation/basic_types.dart index 285e40a..73637cd 100644 --- a/packages/flutter/lib/src/foundation/basic_types.dart +++ b/packages/flutter/lib/src/foundation/basic_types.dart
@@ -47,7 +47,7 @@ /// * [VoidCallback], a synchronous version of this signature. /// * [AsyncValueGetter], a signature for asynchronous getters. /// * [AsyncValueSetter], a signature for asynchronous setters. -typedef AsyncCallback = Future<Null> Function(); +typedef AsyncCallback = Future<void> Function(); /// Signature for callbacks that report that a value has been set and return a /// [Future] that completes when the value has been saved. @@ -56,7 +56,7 @@ /// /// * [ValueSetter], a synchronous version of this signature. /// * [AsyncValueGetter], the getter equivalent of this signature. -typedef AsyncValueSetter<T> = Future<Null> Function(T value); +typedef AsyncValueSetter<T> = Future<void> Function(T value); /// Signature for callbacks that are to asynchronously report a value on demand. ///
diff --git a/packages/flutter/lib/src/foundation/binding.dart b/packages/flutter/lib/src/foundation/binding.dart index e08df20..56555d3 100644 --- a/packages/flutter/lib/src/foundation/binding.dart +++ b/packages/flutter/lib/src/foundation/binding.dart
@@ -172,12 +172,12 @@ /// /// The [Future] returned by the `callback` argument is returned by [lockEvents]. @protected - Future<Null> lockEvents(Future<Null> callback()) { + Future<void> lockEvents(Future<void> callback()) { developer.Timeline.startSync('Lock events'); assert(callback != null); _lockCount += 1; - final Future<Null> future = callback(); + final Future<void> future = callback(); assert(future != null, 'The lockEvents() callback returned null; it should return a Future<Null> that completes when the lock is to expire.'); future.whenComplete(() { _lockCount -= 1; @@ -216,7 +216,7 @@ /// /// Subclasses (binding classes) should override [performReassemble] to react /// to this method being called. This method itself should not be overridden. - Future<Null> reassembleApplication() { + Future<void> reassembleApplication() { return lockEvents(performReassemble); } @@ -232,9 +232,9 @@ /// Do not call this method directly. Instead, use [reassembleApplication]. @mustCallSuper @protected - Future<Null> performReassemble() { + Future<void> performReassemble() { FlutterError.resetErrorCount(); - return Future<Null>.value(); + return Future<void>.value(); } /// Registers a service extension method with the given name (full @@ -467,6 +467,6 @@ } /// Terminate the Flutter application. -Future<Null> _exitApplication() async { +Future<void> _exitApplication() async { exit(0); }
diff --git a/packages/flutter/lib/src/foundation/diagnostics.dart b/packages/flutter/lib/src/foundation/diagnostics.dart index 4f90f82..a996103 100644 --- a/packages/flutter/lib/src/foundation/diagnostics.dart +++ b/packages/flutter/lib/src/foundation/diagnostics.dart
@@ -664,7 +664,7 @@ }) { assert(style != null); assert(level != null); - return DiagnosticsProperty<Null>( + return DiagnosticsProperty<void>( '', null, description: message, @@ -1033,7 +1033,7 @@ /// * [DiagnosticsNode.message], which serves the same role for messages /// without a clear property name. /// * [StringProperty], which is a better fit for properties with string values. -class MessageProperty extends DiagnosticsProperty<Null> { +class MessageProperty extends DiagnosticsProperty<void> { /// Create a diagnostics property that displays a message. /// /// Messages have no concrete [value] (so [value] will return null). The
diff --git a/packages/flutter/lib/src/foundation/print.dart b/packages/flutter/lib/src/foundation/print.dart index 434dbb2..5b15e4e 100644 --- a/packages/flutter/lib/src/foundation/print.dart +++ b/packages/flutter/lib/src/foundation/print.dart
@@ -54,7 +54,7 @@ const Duration _kDebugPrintPauseTime = Duration(seconds: 1); final Queue<String> _debugPrintBuffer = Queue<String>(); final Stopwatch _debugPrintStopwatch = Stopwatch(); -Completer<Null> _debugPrintCompleter; +Completer<void> _debugPrintCompleter; bool _debugPrintScheduled = false; void _debugPrintTask() { _debugPrintScheduled = false; @@ -72,7 +72,7 @@ _debugPrintScheduled = true; _debugPrintedCharacters = 0; Timer(_kDebugPrintPauseTime, _debugPrintTask); - _debugPrintCompleter ??= Completer<Null>(); + _debugPrintCompleter ??= Completer<void>(); } else { _debugPrintStopwatch.start(); _debugPrintCompleter?.complete(); @@ -83,7 +83,7 @@ /// A Future that resolves when there is no longer any buffered content being /// printed by [debugPrintThrottled] (which is the default implementation for /// [debugPrint], which is used to report errors to the console). -Future<Null> get debugPrintDone => _debugPrintCompleter?.future ?? Future<Null>.value(); +Future<void> get debugPrintDone => _debugPrintCompleter?.future ?? Future<void>.value(); final RegExp _indentPattern = RegExp('^ *(?:[-+*] |[0-9]+[.):] )?'); enum _WordWrapParseMode { inSpace, inWord, atBreak }
diff --git a/packages/flutter/lib/src/material/about.dart b/packages/flutter/lib/src/material/about.dart index 3348ee0..59f078d 100644 --- a/packages/flutter/lib/src/material/about.dart +++ b/packages/flutter/lib/src/material/about.dart
@@ -379,7 +379,7 @@ final List<Widget> _licenses = <Widget>[]; bool _loaded = false; - Future<Null> _initLicenses() async { + Future<void> _initLicenses() async { final Flow flow = Flow.begin(); Timeline.timeSync('_initLicenses()', () { }, flow: flow); await for (LicenseEntry license in LicenseRegistry.licenses) {
diff --git a/packages/flutter/lib/src/material/feedback.dart b/packages/flutter/lib/src/material/feedback.dart index 0576e4a..5dbe0a4 100644 --- a/packages/flutter/lib/src/material/feedback.dart +++ b/packages/flutter/lib/src/material/feedback.dart
@@ -87,14 +87,14 @@ /// /// * [wrapForTap] to trigger platform-specific feedback before executing a /// [GestureTapCallback]. - static Future<Null> forTap(BuildContext context) async { + static Future<void> forTap(BuildContext context) async { context.findRenderObject().sendSemanticsEvent(const TapSemanticEvent()); switch (_platform(context)) { case TargetPlatform.android: case TargetPlatform.fuchsia: return SystemSound.play(SystemSoundType.click); default: - return Future<Null>.value(); + return Future<void>.value(); } } @@ -126,14 +126,14 @@ /// /// * [wrapForLongPress] to trigger platform-specific feedback before /// executing a [GestureLongPressCallback]. - static Future<Null> forLongPress(BuildContext context) { + static Future<void> forLongPress(BuildContext context) { context.findRenderObject().sendSemanticsEvent(const LongPressSemanticsEvent()); switch (_platform(context)) { case TargetPlatform.android: case TargetPlatform.fuchsia: return HapticFeedback.vibrate(); default: - return Future<Null>.value(); + return Future<void>.value(); } }
diff --git a/packages/flutter/lib/src/material/ink_well.dart b/packages/flutter/lib/src/material/ink_well.dart index 84eb5dd..4c6ef4c 100644 --- a/packages/flutter/lib/src/material/ink_well.dart +++ b/packages/flutter/lib/src/material/ink_well.dart
@@ -405,7 +405,7 @@ } } -class _InkResponseState<T extends InkResponse> extends State<T> with AutomaticKeepAliveClientMixin { +class _InkResponseState<T extends InkResponse> extends State<T> with AutomaticKeepAliveClientMixin<T> { Set<InteractiveInkFeature> _splashes; InteractiveInkFeature _currentSplash; InkHighlight _lastHighlight;
diff --git a/packages/flutter/lib/src/material/popup_menu.dart b/packages/flutter/lib/src/material/popup_menu.dart index 74bfb99..9685f55 100644 --- a/packages/flutter/lib/src/material/popup_menu.dart +++ b/packages/flutter/lib/src/material/popup_menu.dart
@@ -106,7 +106,7 @@ final double height; @override - bool represents(dynamic value) => false; + bool represents(Null value) => false; @override _PopupMenuDividerState createState() => _PopupMenuDividerState();
diff --git a/packages/flutter/lib/src/material/refresh_indicator.dart b/packages/flutter/lib/src/material/refresh_indicator.dart index 3a3602b..17a211f 100644 --- a/packages/flutter/lib/src/material/refresh_indicator.dart +++ b/packages/flutter/lib/src/material/refresh_indicator.dart
@@ -137,7 +137,7 @@ /// Contains the state for a [RefreshIndicator]. This class can be used to /// programmatically show the refresh indicator, see the [show] method. -class RefreshIndicatorState extends State<RefreshIndicator> with TickerProviderStateMixin { +class RefreshIndicatorState extends State<RefreshIndicator> with TickerProviderStateMixin<RefreshIndicator> { AnimationController _positionController; AnimationController _scaleController; Animation<double> _positionFactor; @@ -328,7 +328,7 @@ _mode = _RefreshIndicatorMode.snap; _positionController .animateTo(1.0 / _kDragSizeFactorLimit, duration: _kIndicatorSnapDuration) - .then<void>((Null value) { + .then<void>((void value) { if (mounted && _mode == _RefreshIndicatorMode.snap) { assert(widget.onRefresh != null); setState(() {
diff --git a/packages/flutter/lib/src/material/reorderable_list.dart b/packages/flutter/lib/src/material/reorderable_list.dart index 68d2ca7..67503af 100644 --- a/packages/flutter/lib/src/material/reorderable_list.dart +++ b/packages/flutter/lib/src/material/reorderable_list.dart
@@ -159,7 +159,7 @@ _ReorderableListContentState createState() => _ReorderableListContentState(); } -class _ReorderableListContentState extends State<_ReorderableListContent> with TickerProviderStateMixin { +class _ReorderableListContentState extends State<_ReorderableListContent> with TickerProviderStateMixin<_ReorderableListContent> { // The extent along the [widget.scrollDirection] axis to allow a child to // drop into when the user reorders list children. @@ -301,7 +301,7 @@ scrollOffset < bottomOffset ? bottomOffset : topOffset, duration: _scrollAnimationDuration, curve: Curves.easeInOut, - ).then((Null none) { + ).then((void value) { setState(() { _scrolling = false; });
diff --git a/packages/flutter/lib/src/material/scaffold.dart b/packages/flutter/lib/src/material/scaffold.dart index 1bffd4c..d655425 100644 --- a/packages/flutter/lib/src/material/scaffold.dart +++ b/packages/flutter/lib/src/material/scaffold.dart
@@ -1192,7 +1192,7 @@ _snackBarController.value = 0.0; completer.complete(reason); } else { - _snackBarController.reverse().then<void>((Null _) { + _snackBarController.reverse().then<void>((void value) { assert(mounted); if (!completer.isCompleted) completer.complete(reason);
diff --git a/packages/flutter/lib/src/material/tabs.dart b/packages/flutter/lib/src/material/tabs.dart index 0669315..c2ef5cb 100644 --- a/packages/flutter/lib/src/material/tabs.dart +++ b/packages/flutter/lib/src/material/tabs.dart
@@ -1118,12 +1118,12 @@ } } - Future<Null> _warpToCurrentIndex() async { + Future<void> _warpToCurrentIndex() async { if (!mounted) - return Future<Null>.value(); + return Future<void>.value(); if (_pageController.page == _currentIndex.toDouble()) - return Future<Null>.value(); + return Future<void>.value(); final int previousIndex = _controller.previousIndex; if ((_currentIndex - previousIndex).abs() == 1) @@ -1147,7 +1147,7 @@ await _pageController.animateToPage(_currentIndex, duration: kTabScrollDuration, curve: Curves.ease); if (!mounted) - return Future<Null>.value(); + return Future<void>.value(); setState(() { _warpUnderwayCount -= 1;
diff --git a/packages/flutter/lib/src/painting/image_stream.dart b/packages/flutter/lib/src/painting/image_stream.dart index 57dd522..4c0b0c4 100644 --- a/packages/flutter/lib/src/painting/image_stream.dart +++ b/packages/flutter/lib/src/painting/image_stream.dart
@@ -493,7 +493,7 @@ return timestamp - _shownTimestamp >= _frameDuration; } - Future<Null> _decodeNextFrameAndSchedule() async { + Future<void> _decodeNextFrameAndSchedule() async { try { _nextFrame = await _codec.getNextFrame(); } catch (exception, stack) {
diff --git a/packages/flutter/lib/src/rendering/binding.dart b/packages/flutter/lib/src/rendering/binding.dart index 5f8bef1..c67eb26a 100644 --- a/packages/flutter/lib/src/rendering/binding.dart +++ b/packages/flutter/lib/src/rendering/binding.dart
@@ -61,7 +61,7 @@ getter: () async => debugPaintSizeEnabled, setter: (bool value) { if (debugPaintSizeEnabled == value) - return Future<Null>.value(); + return Future<void>.value(); debugPaintSizeEnabled = value; return _forceRepaint(); }, @@ -71,7 +71,7 @@ getter: () async => debugPaintBaselinesEnabled, setter: (bool value) { if (debugPaintBaselinesEnabled == value) - return Future<Null>.value(); + return Future<void>.value(); debugPaintBaselinesEnabled = value; return _forceRepaint(); }, @@ -84,7 +84,7 @@ debugRepaintRainbowEnabled = value; if (repaint) return _forceRepaint(); - return Future<Null>.value(); + return Future<void>.value(); }, ); registerSignalServiceExtension( @@ -290,7 +290,7 @@ } @override - Future<Null> performReassemble() async { + Future<void> performReassemble() async { await super.performReassemble(); Timeline.startSync('Dirty Render Tree', arguments: timelineWhitelistArguments); try { @@ -310,7 +310,7 @@ super.hitTest(result, position); // ignore: abstract_super_member_reference } - Future<Null> _forceRepaint() { + Future<void> _forceRepaint() { RenderObjectVisitor visitor; visitor = (RenderObject child) { child.markNeedsPaint();
diff --git a/packages/flutter/lib/src/rendering/platform_view.dart b/packages/flutter/lib/src/rendering/platform_view.dart index d1af55b..93f6e12 100644 --- a/packages/flutter/lib/src/rendering/platform_view.dart +++ b/packages/flutter/lib/src/rendering/platform_view.dart
@@ -151,7 +151,7 @@ Size _currentAndroidViewSize; - Future<Null> _sizePlatformView() async { + Future<void> _sizePlatformView() async { // Android virtual displays cannot have a zero size. // Trying to size it to 0 crashes the app, which was happening when starting the app // with a locked screen (see: https://github.com/flutter/flutter/issues/20456).
diff --git a/packages/flutter/lib/src/rendering/viewport_offset.dart b/packages/flutter/lib/src/rendering/viewport_offset.dart index 60cb227..341a1ac 100644 --- a/packages/flutter/lib/src/rendering/viewport_offset.dart +++ b/packages/flutter/lib/src/rendering/viewport_offset.dart
@@ -176,7 +176,7 @@ /// /// The duration must not be zero. To jump to a particular value without an /// animation, use [jumpTo]. - Future<Null> animateTo(double to, { + Future<void> animateTo(double to, { @required Duration duration, @required Curve curve, }); @@ -252,10 +252,10 @@ } @override - Future<Null> animateTo(double to, { + Future<void> animateTo(double to, { @required Duration duration, @required Curve curve, - }) async => null; + }) async { } @override ScrollDirection get userScrollDirection => ScrollDirection.idle;
diff --git a/packages/flutter/lib/src/scheduler/binding.dart b/packages/flutter/lib/src/scheduler/binding.dart index 98a6c2a..0fe49d0 100644 --- a/packages/flutter/lib/src/scheduler/binding.dart +++ b/packages/flutter/lib/src/scheduler/binding.dart
@@ -579,7 +579,7 @@ _postFrameCallbacks.add(callback); } - Completer<Null> _nextFrameCompleter; + Completer<void> _nextFrameCompleter; /// Returns a Future that completes after the frame completes. /// @@ -590,11 +590,11 @@ /// If the device's screen is currently turned off, this may wait a very long /// time, since frames are not scheduled while the device's screen is turned /// off. - Future<Null> get endOfFrame { + Future<void> get endOfFrame { if (_nextFrameCompleter == null) { if (schedulerPhase == SchedulerPhase.idle) scheduleFrame(); - _nextFrameCompleter = Completer<Null>(); + _nextFrameCompleter = Completer<void>(); addPostFrameCallback((Duration timeStamp) { _nextFrameCompleter.complete(); _nextFrameCompleter = null;
diff --git a/packages/flutter/lib/src/scheduler/ticker.dart b/packages/flutter/lib/src/scheduler/ticker.dart index cd4d77b..4ebc1cf 100644 --- a/packages/flutter/lib/src/scheduler/ticker.dart +++ b/packages/flutter/lib/src/scheduler/ticker.dart
@@ -347,7 +347,7 @@ /// /// To run a callback when either this future resolves or when the ticker is /// canceled, use [whenCompleteOrCancel]. -class TickerFuture implements Future<Null> { +class TickerFuture implements Future<void> { TickerFuture._(); /// Creates a [TickerFuture] instance that represents an already-complete @@ -361,8 +361,8 @@ _complete(); } - final Completer<Null> _primaryCompleter = Completer<Null>(); - Completer<Null> _secondaryCompleter; + final Completer<void> _primaryCompleter = Completer<void>(); + Completer<void> _secondaryCompleter; bool _completed; // null means unresolved, true means complete, false means canceled void _complete() { @@ -385,11 +385,10 @@ /// future, so even if the [orCancel] property is accessed, canceling the /// ticker will not cause an uncaught exception in the current zone. void whenCompleteOrCancel(VoidCallback callback) { - Null thunk(dynamic value) { + void thunk(dynamic value) { callback(); - return null; } - orCancel.then<Null>(thunk, onError: thunk); + orCancel.then<void>(thunk, onError: thunk); } /// A future that resolves when this future resolves or throws when the ticker @@ -400,12 +399,12 @@ /// corresponding ticker is canceled, then the [Future] returned by this /// getter will complete with an error, and if that error is not caught, there /// will be an uncaught exception in the current zone. - Future<Null> get orCancel { + Future<void> get orCancel { if (_secondaryCompleter == null) { - _secondaryCompleter = Completer<Null>(); + _secondaryCompleter = Completer<void>(); if (_completed != null) { if (_completed) { - _secondaryCompleter.complete(null); + _secondaryCompleter.complete(); } else { _secondaryCompleter.completeError(const TickerCanceled()); } @@ -415,27 +414,27 @@ } @override - Stream<Null> asStream() { + Stream<void> asStream() { return _primaryCompleter.future.asStream(); } @override - Future<Null> catchError(Function onError, { bool test(dynamic error) }) { + Future<void> catchError(Function onError, { bool test(dynamic error) }) { return _primaryCompleter.future.catchError(onError, test: test); } @override - Future<E> then<E>(dynamic f(Null value), { Function onError }) { + Future<E> then<E>(dynamic f(void value), { Function onError }) { return _primaryCompleter.future.then<E>(f, onError: onError); } @override - Future<Null> timeout(Duration timeLimit, { dynamic onTimeout() }) { + Future<void> timeout(Duration timeLimit, { dynamic onTimeout() }) { return _primaryCompleter.future.timeout(timeLimit, onTimeout: onTimeout); } @override - Future<Null> whenComplete(dynamic action()) { + Future<void> whenComplete(dynamic action()) { return _primaryCompleter.future.whenComplete(action); }
diff --git a/packages/flutter/lib/src/semantics/semantics_service.dart b/packages/flutter/lib/src/semantics/semantics_service.dart index 5d6fb25..e2aeaf1 100644 --- a/packages/flutter/lib/src/semantics/semantics_service.dart +++ b/packages/flutter/lib/src/semantics/semantics_service.dart
@@ -27,7 +27,7 @@ /// /// For example a camera application can use this method to make accessibility /// announcements regarding objects in the viewfinder. - static Future<Null> announce(String message, TextDirection textDirection) async { + static Future<void> announce(String message, TextDirection textDirection) async { final AnnounceSemanticsEvent event = AnnounceSemanticsEvent(message, textDirection); await SystemChannels.accessibility.send(event.toMap()); } @@ -36,7 +36,7 @@ /// /// Currently only honored on Android. The contents of [message] will be /// read by TalkBack. - static Future<Null> tooltip(String message) async { + static Future<void> tooltip(String message) async { final TooltipSemanticsEvent event = TooltipSemanticsEvent(message); await SystemChannels.accessibility.send(event.toMap()); }
diff --git a/packages/flutter/lib/src/services/clipboard.dart b/packages/flutter/lib/src/services/clipboard.dart index 13bc929..aba3761 100644 --- a/packages/flutter/lib/src/services/clipboard.dart +++ b/packages/flutter/lib/src/services/clipboard.dart
@@ -33,7 +33,7 @@ static const String kTextPlain = 'text/plain'; /// Stores the given clipboard data on the clipboard. - static Future<Null> setData(ClipboardData data) async { + static Future<void> setData(ClipboardData data) async { await SystemChannels.platform.invokeMethod( 'Clipboard.setData', <String, dynamic>{
diff --git a/packages/flutter/lib/src/services/haptic_feedback.dart b/packages/flutter/lib/src/services/haptic_feedback.dart index 067781d..f2759ae 100644 --- a/packages/flutter/lib/src/services/haptic_feedback.dart +++ b/packages/flutter/lib/src/services/haptic_feedback.dart
@@ -20,7 +20,7 @@ /// /// On Android, this uses the platform haptic feedback API to simulate a /// response to a long press (`HapticFeedbackConstants.LONG_PRESS`). - static Future<Null> vibrate() async { + static Future<void> vibrate() async { await SystemChannels.platform.invokeMethod('HapticFeedback.vibrate'); } @@ -31,7 +31,7 @@ /// below 10. /// /// On Android, this uses `HapticFeedbackConstants.VIRTUAL_KEY`. - static Future<Null> lightImpact() async { + static Future<void> lightImpact() async { await SystemChannels.platform.invokeMethod( 'HapticFeedback.vibrate', 'HapticFeedbackType.lightImpact', @@ -45,7 +45,7 @@ /// below 10. /// /// On Android, this uses `HapticFeedbackConstants.KEYBOARD_TAP`. - static Future<Null> mediumImpact() async { + static Future<void> mediumImpact() async { await SystemChannels.platform.invokeMethod( 'HapticFeedback.vibrate', 'HapticFeedbackType.mediumImpact', @@ -60,7 +60,7 @@ /// /// On Android, this uses `HapticFeedbackConstants.CONTEXT_CLICK` on API levels /// 23 and above. This call has no effects on Android API levels below 23. - static Future<Null> heavyImpact() async { + static Future<void> heavyImpact() async { await SystemChannels.platform.invokeMethod( 'HapticFeedback.vibrate', 'HapticFeedbackType.heavyImpact', @@ -73,7 +73,7 @@ /// This call has no effects on iOS versions below 10. /// /// On Android, this uses `HapticFeedbackConstants.CLOCK_TICK`. - static Future<Null> selectionClick() async { + static Future<void> selectionClick() async { await SystemChannels.platform.invokeMethod( 'HapticFeedback.vibrate', 'HapticFeedbackType.selectionClick',
diff --git a/packages/flutter/lib/src/services/platform_messages.dart b/packages/flutter/lib/src/services/platform_messages.dart index ef26456..c05d9ac 100644 --- a/packages/flutter/lib/src/services/platform_messages.dart +++ b/packages/flutter/lib/src/services/platform_messages.dart
@@ -58,7 +58,7 @@ /// from [Window.onPlatformMessage]. /// /// To register a handler for a given message channel, see [setMessageHandler]. - static Future<Null> handlePlatformMessage( + static Future<void> handlePlatformMessage( String channel, ByteData data, ui.PlatformMessageResponseCallback callback) async { ByteData response; try {
diff --git a/packages/flutter/lib/src/services/system_navigator.dart b/packages/flutter/lib/src/services/system_navigator.dart index 036601e..a938673 100644 --- a/packages/flutter/lib/src/services/system_navigator.dart +++ b/packages/flutter/lib/src/services/system_navigator.dart
@@ -19,7 +19,7 @@ /// This method should be preferred over calling `dart:io`'s [exit] method, as /// the latter may cause the underlying platform to act as if the application /// had crashed. - static Future<Null> pop() async { + static Future<void> pop() async { await SystemChannels.platform.invokeMethod('SystemNavigator.pop'); } }
diff --git a/packages/flutter/lib/src/services/system_sound.dart b/packages/flutter/lib/src/services/system_sound.dart index 80b833b..528964a 100644 --- a/packages/flutter/lib/src/services/system_sound.dart +++ b/packages/flutter/lib/src/services/system_sound.dart
@@ -19,7 +19,7 @@ /// Play the specified system sound. If that sound is not present on the /// system, the call is ignored. - static Future<Null> play(SystemSoundType type) async { + static Future<void> play(SystemSoundType type) async { await SystemChannels.platform.invokeMethod( 'SystemSound.play', type.toString(),
diff --git a/packages/flutter/lib/src/widgets/animated_list.dart b/packages/flutter/lib/src/widgets/animated_list.dart index b44f471..037f358 100644 --- a/packages/flutter/lib/src/widgets/animated_list.dart +++ b/packages/flutter/lib/src/widgets/animated_list.dart
@@ -205,7 +205,7 @@ /// /// [AnimatedList] item input handlers can also refer to their [AnimatedListState] /// with the static [AnimatedList.of] method. -class AnimatedListState extends State<AnimatedList> with TickerProviderStateMixin { +class AnimatedListState extends State<AnimatedList> with TickerProviderStateMixin<AnimatedList> { final List<_ActiveItem> _incomingItems = <_ActiveItem>[]; final List<_ActiveItem> _outgoingItems = <_ActiveItem>[]; int _itemsCount = 0; @@ -297,7 +297,7 @@ _itemsCount += 1; }); - controller.forward().then<void>((Null value) { + controller.forward().then<void>((_) { _removeActiveItemAt(_incomingItems, incomingItem.itemIndex).controller.dispose(); }); } @@ -332,7 +332,7 @@ ..sort(); }); - controller.reverse().then<void>((Null value) { + controller.reverse().then<void>((void value) { _removeActiveItemAt(_outgoingItems, outgoingItem.itemIndex).controller.dispose(); // Decrement the incoming and outgoing item indices to account
diff --git a/packages/flutter/lib/src/widgets/binding.dart b/packages/flutter/lib/src/widgets/binding.dart index 463909f..0a5a141 100644 --- a/packages/flutter/lib/src/widgets/binding.dart +++ b/packages/flutter/lib/src/widgets/binding.dart
@@ -283,7 +283,7 @@ Future<bool>.value(WidgetsApp.showPerformanceOverlayOverride), setter: (bool value) { if (WidgetsApp.showPerformanceOverlayOverride == value) - return Future<Null>.value(); + return Future<void>.value(); WidgetsApp.showPerformanceOverlayOverride = value; return _forceRebuild(); }, @@ -296,7 +296,7 @@ getter: () => Future<bool>.value(WidgetsApp.debugAllowBannerOverride), setter: (bool value) { if (WidgetsApp.debugAllowBannerOverride == value) - return Future<Null>.value(); + return Future<void>.value(); WidgetsApp.debugAllowBannerOverride = value; return _forceRebuild(); }, @@ -318,12 +318,12 @@ }()); } - Future<Null> _forceRebuild() { + Future<void> _forceRebuild() { if (renderViewElement != null) { buildOwner.reassemble(renderViewElement); return endOfFrame; } - return Future<Null>.value(); + return Future<void>.value(); } /// The [BuildOwner] in charge of executing the build pipeline for the @@ -443,7 +443,7 @@ /// This method exposes the `popRoute` notification from /// [SystemChannels.navigation]. @protected - Future<Null> handlePopRoute() async { + Future<void> handlePopRoute() async { for (WidgetsBindingObserver observer in List<WidgetsBindingObserver>.from(_observers)) { if (await observer.didPopRoute()) return; @@ -463,7 +463,7 @@ /// [SystemChannels.navigation]. @protected @mustCallSuper - Future<Null> handlePushRoute(String route) async { + Future<void> handlePushRoute(String route) async { for (WidgetsBindingObserver observer in List<WidgetsBindingObserver>.from(_observers)) { if (await observer.didPushRoute(route)) return; @@ -477,7 +477,7 @@ case 'pushRoute': return handlePushRoute(methodCall.arguments); } - return Future<Null>.value(); + return Future<dynamic>.value(); } @override @@ -500,7 +500,7 @@ observer.didHaveMemoryPressure(); } - Future<Null> _handleSystemMessage(Object systemMessage) async { + Future<void> _handleSystemMessage(Object systemMessage) async { final Map<String, dynamic> message = systemMessage; final String type = message['type']; switch (type) { @@ -508,7 +508,7 @@ handleMemoryPressure(); break; } - return null; + return; } bool _needToReportFirstFrame = true; @@ -699,11 +699,11 @@ } @override - Future<Null> performReassemble() { + Future<void> performReassemble() { deferFirstFrameReport(); if (renderViewElement != null) buildOwner.reassemble(renderViewElement); - return super.performReassemble().then((Null value) { + return super.performReassemble().then((void value) { allowFirstFrameReport(); }); }
diff --git a/packages/flutter/lib/src/widgets/drag_target.dart b/packages/flutter/lib/src/widgets/drag_target.dart index ba289f5..6c3be3e 100644 --- a/packages/flutter/lib/src/widgets/drag_target.dart +++ b/packages/flutter/lib/src/widgets/drag_target.dart
@@ -593,14 +593,12 @@ _enteredTargets.add(target); return target.didEnter(this); }, - orElse: _null + orElse: () => null ); _activeTarget = newTarget; } - static Null _null() => null; - Iterable<_DragTargetState<T>> _getDragTargets(List<HitTestEntry> path) sync* { // Look for the RenderBoxes that corresponds to the hit target (the hit target // widgets build RenderMetaData boxes for us for this purpose).
diff --git a/packages/flutter/lib/src/widgets/editable_text.dart b/packages/flutter/lib/src/widgets/editable_text.dart index 3c79cc6..96785c0 100644 --- a/packages/flutter/lib/src/widgets/editable_text.dart +++ b/packages/flutter/lib/src/widgets/editable_text.dart
@@ -427,7 +427,7 @@ } /// State for a [EditableText]. -class EditableTextState extends State<EditableText> with AutomaticKeepAliveClientMixin, WidgetsBindingObserver implements TextInputClient, TextSelectionDelegate { +class EditableTextState extends State<EditableText> with AutomaticKeepAliveClientMixin<EditableText>, WidgetsBindingObserver implements TextInputClient, TextSelectionDelegate { Timer _cursorTimer; final ValueNotifier<bool> _showCursor = ValueNotifier<bool>(false); final GlobalKey _editableKey = GlobalKey();
diff --git a/packages/flutter/lib/src/widgets/image.dart b/packages/flutter/lib/src/widgets/image.dart index 91e87ef..6901b7e 100644 --- a/packages/flutter/lib/src/widgets/image.dart +++ b/packages/flutter/lib/src/widgets/image.dart
@@ -71,14 +71,14 @@ /// See also: /// /// * [ImageCache], which holds images that may be reused. -Future<Null> precacheImage( +Future<void> precacheImage( ImageProvider provider, BuildContext context, { Size size, ImageErrorListener onError, }) { final ImageConfiguration config = createLocalImageConfiguration(context, size: size); - final Completer<Null> completer = Completer<Null>(); + final Completer<void> completer = Completer<void>(); final ImageStream stream = provider.resolve(config); void listener(ImageInfo image, bool sync) { completer.complete(); @@ -98,7 +98,7 @@ } } stream.addListener(listener, onError: errorListener); - completer.future.then<void>((Null _) { stream.removeListener(listener); }); + completer.future.then<void>((void value) { stream.removeListener(listener); }); return completer.future; }
diff --git a/packages/flutter/lib/src/widgets/implicit_animations.dart b/packages/flutter/lib/src/widgets/implicit_animations.dart index 7332c88..768ae34 100644 --- a/packages/flutter/lib/src/widgets/implicit_animations.dart +++ b/packages/flutter/lib/src/widgets/implicit_animations.dart
@@ -257,7 +257,7 @@ /// Subclasses must implement the [forEachTween] method to allow /// [ImplicitlyAnimatedWidgetState] to iterate through the subclasses' widget's /// fields and animate them. -abstract class ImplicitlyAnimatedWidgetState<T extends ImplicitlyAnimatedWidget> extends State<T> with SingleTickerProviderStateMixin { +abstract class ImplicitlyAnimatedWidgetState<T extends ImplicitlyAnimatedWidget> extends State<T> with SingleTickerProviderStateMixin<T> { /// The animation controller driving this widget's implicit animations. @protected AnimationController get controller => _controller;
diff --git a/packages/flutter/lib/src/widgets/nested_scroll_view.dart b/packages/flutter/lib/src/widgets/nested_scroll_view.dart index 9d7d98e..fe60582 100644 --- a/packages/flutter/lib/src/widgets/nested_scroll_view.dart +++ b/packages/flutter/lib/src/widgets/nested_scroll_view.dart
@@ -704,7 +704,7 @@ _outerPosition.updateCanDrag(maxInnerExtent); } - Future<Null> animateTo(double to, { + Future<void> animateTo(double to, { @required Duration duration, @required Curve curve, }) async { @@ -713,7 +713,7 @@ duration, curve, ); - final List<Future<Null>> resultFutures = <Future<Null>>[outerActivity.done]; + final List<Future<void>> resultFutures = <Future<void>>[outerActivity.done]; beginActivity( outerActivity, (_NestedScrollPosition position) { @@ -726,7 +726,7 @@ return innerActivity; }, ); - await Future.wait<Null>(resultFutures); + await Future.wait<void>(resultFutures); } void jumpTo(double to) { @@ -1070,7 +1070,7 @@ } @override - Future<Null> animateTo(double to, { + Future<void> animateTo(double to, { @required Duration duration, @required Curve curve, }) {
diff --git a/packages/flutter/lib/src/widgets/page_view.dart b/packages/flutter/lib/src/widgets/page_view.dart index 6629a80..371cd58 100644 --- a/packages/flutter/lib/src/widgets/page_view.dart +++ b/packages/flutter/lib/src/widgets/page_view.dart
@@ -111,7 +111,7 @@ /// The returned [Future] resolves when the animation completes. /// /// The `duration` and `curve` arguments must not be null. - Future<Null> animateToPage(int page, { + Future<void> animateToPage(int page, { @required Duration duration, @required Curve curve, }) { @@ -138,7 +138,7 @@ /// The returned [Future] resolves when the animation completes. /// /// The `duration` and `curve` arguments must not be null. - Future<Null> nextPage({ @required Duration duration, @required Curve curve }) { + Future<void> nextPage({ @required Duration duration, @required Curve curve }) { return animateToPage(page.round() + 1, duration: duration, curve: curve); } @@ -148,7 +148,7 @@ /// The returned [Future] resolves when the animation completes. /// /// The `duration` and `curve` arguments must not be null. - Future<Null> previousPage({ @required Duration duration, @required Curve curve }) { + Future<void> previousPage({ @required Duration duration, @required Curve curve }) { return animateToPage(page.round() - 1, duration: duration, curve: curve); }
diff --git a/packages/flutter/lib/src/widgets/scroll_activity.dart b/packages/flutter/lib/src/widgets/scroll_activity.dart index 4fbb9b9..eb56302 100644 --- a/packages/flutter/lib/src/widgets/scroll_activity.dart +++ b/packages/flutter/lib/src/widgets/scroll_activity.dart
@@ -601,7 +601,7 @@ assert(duration > Duration.zero), assert(curve != null), super(delegate) { - _completer = Completer<Null>(); + _completer = Completer<void>(); _controller = AnimationController.unbounded( value: from, debugLabel: '$runtimeType', @@ -612,7 +612,7 @@ .whenComplete(_end); // won't trigger if we dispose _controller first } - Completer<Null> _completer; + Completer<void> _completer; AnimationController _controller; /// A [Future] that completes when the activity stops. @@ -620,7 +620,7 @@ /// For example, this [Future] will complete if the animation reaches the end /// or if the user interacts with the scroll view in way that causes the /// animation to stop before it reaches the end. - Future<Null> get done => _completer.future; + Future<void> get done => _completer.future; @override double get velocity => _controller.velocity;
diff --git a/packages/flutter/lib/src/widgets/scroll_controller.dart b/packages/flutter/lib/src/widgets/scroll_controller.dart index abaf543..b862cf1 100644 --- a/packages/flutter/lib/src/widgets/scroll_controller.dart +++ b/packages/flutter/lib/src/widgets/scroll_controller.dart
@@ -142,15 +142,15 @@ /// /// The duration must not be zero. To jump to a particular value without an /// animation, use [jumpTo]. - Future<Null> animateTo(double offset, { + Future<void> animateTo(double offset, { @required Duration duration, @required Curve curve, }) { assert(_positions.isNotEmpty, 'ScrollController not attached to any scroll views.'); - final List<Future<Null>> animations = List<Future<Null>>(_positions.length); + final List<Future<void>> animations = List<Future<void>>(_positions.length); for (int i = 0; i < _positions.length; i += 1) animations[i] = _positions[i].animateTo(offset, duration: duration, curve: curve); - return Future.wait<Null>(animations).then<Null>((List<Null> _) => null); + return Future.wait<void>(animations).then<void>((List<void> _) => null); } /// Jumps the scroll position from its current value to the given value,
diff --git a/packages/flutter/lib/src/widgets/scroll_position.dart b/packages/flutter/lib/src/widgets/scroll_position.dart index 9048442..b550e15 100644 --- a/packages/flutter/lib/src/widgets/scroll_position.dart +++ b/packages/flutter/lib/src/widgets/scroll_position.dart
@@ -488,7 +488,7 @@ /// Animates the position such that the given object is as visible as possible /// by just scrolling this position. - Future<Null> ensureVisible(RenderObject object, { + Future<void> ensureVisible(RenderObject object, { double alignment = 0.0, Duration duration = Duration.zero, Curve curve = Curves.ease, @@ -500,11 +500,11 @@ final double target = viewport.getOffsetToReveal(object, alignment).offset.clamp(minScrollExtent, maxScrollExtent); if (target == pixels) - return Future<Null>.value(); + return Future<void>.value(); if (duration == Duration.zero) { jumpTo(target); - return Future<Null>.value(); + return Future<void>.value(); } return animateTo(target, duration: duration, curve: curve); @@ -545,7 +545,7 @@ /// /// The animation is typically handled by an [DrivenScrollActivity]. @override - Future<Null> animateTo(double to, { + Future<void> animateTo(double to, { @required Duration duration, @required Curve curve, });
diff --git a/packages/flutter/lib/src/widgets/scroll_position_with_single_context.dart b/packages/flutter/lib/src/widgets/scroll_position_with_single_context.dart index bd7ab34..2b691fd 100644 --- a/packages/flutter/lib/src/widgets/scroll_position_with_single_context.dart +++ b/packages/flutter/lib/src/widgets/scroll_position_with_single_context.dart
@@ -169,14 +169,14 @@ } @override - Future<Null> animateTo(double to, { + Future<void> animateTo(double to, { @required Duration duration, @required Curve curve, }) { if (nearEqual(to, pixels, physics.tolerance.distance)) { // Skip the animation, go straight to the position as we are already close. jumpTo(to); - return Future<Null>.value(); + return Future<void>.value(); } final DrivenScrollActivity activity = DrivenScrollActivity(
diff --git a/packages/flutter/lib/src/widgets/scrollable.dart b/packages/flutter/lib/src/widgets/scrollable.dart index 0f019bc..e5fb058 100644 --- a/packages/flutter/lib/src/widgets/scrollable.dart +++ b/packages/flutter/lib/src/widgets/scrollable.dart
@@ -209,12 +209,12 @@ /// Scrolls the scrollables that enclose the given context so as to make the /// given context visible. - static Future<Null> ensureVisible(BuildContext context, { + static Future<void> ensureVisible(BuildContext context, { double alignment = 0.0, Duration duration = Duration.zero, Curve curve = Curves.ease, }) { - final List<Future<Null>> futures = <Future<Null>>[]; + final List<Future<void>> futures = <Future<void>>[]; ScrollableState scrollable = Scrollable.of(context); while (scrollable != null) { @@ -229,10 +229,10 @@ } if (futures.isEmpty || duration == Duration.zero) - return Future<Null>.value(); + return Future<void>.value(); if (futures.length == 1) return futures.single; - return Future.wait<Null>(futures).then<Null>((List<Null> _) => null); + return Future.wait<void>(futures).then<void>((List<void> _) => null); } }
diff --git a/packages/flutter/lib/src/widgets/sliver_persistent_header.dart b/packages/flutter/lib/src/widgets/sliver_persistent_header.dart index 9719280..d87857c 100644 --- a/packages/flutter/lib/src/widgets/sliver_persistent_header.dart +++ b/packages/flutter/lib/src/widgets/sliver_persistent_header.dart
@@ -207,13 +207,13 @@ } @override - void insertChildRenderObject(covariant RenderObject child, Null slot) { + void insertChildRenderObject(covariant RenderObject child, dynamic slot) { assert(renderObject.debugValidateChild(child)); renderObject.child = child; } @override - void moveChildRenderObject(covariant RenderObject child, Null slot) { + void moveChildRenderObject(covariant RenderObject child, dynamic slot) { assert(false); }
diff --git a/packages/flutter/lib/src/widgets/text_selection.dart b/packages/flutter/lib/src/widgets/text_selection.dart index f2019c2..7e2a85f 100644 --- a/packages/flutter/lib/src/widgets/text_selection.dart +++ b/packages/flutter/lib/src/widgets/text_selection.dart
@@ -176,7 +176,7 @@ /// asynchronous. Race conditions may exist with this API as currently /// implemented. // TODO(ianh): https://github.com/flutter/flutter/issues/11427 - Future<Null> handlePaste(TextSelectionDelegate delegate) async { + Future<void> handlePaste(TextSelectionDelegate delegate) async { final TextEditingValue value = delegate.textEditingValue; // Snapshot the input before using `await`. final ClipboardData data = await Clipboard.getData(Clipboard.kTextPlain); if (data != null) {
diff --git a/packages/flutter/lib/src/widgets/widget_inspector.dart b/packages/flutter/lib/src/widgets/widget_inspector.dart index 3ea2f6f..dc8b442 100644 --- a/packages/flutter/lib/src/widgets/widget_inspector.dart +++ b/packages/flutter/lib/src/widgets/widget_inspector.dart
@@ -910,13 +910,13 @@ /// /// This is expensive and should not be called except during development. @protected - Future<Null> forceRebuild() { + Future<void> forceRebuild() { final WidgetsBinding binding = WidgetsBinding.instance; if (binding.renderViewElement != null) { binding.buildOwner.reassemble(binding.renderViewElement); return binding.endOfFrame; } - return Future<Null>.value(); + return Future<void>.value(); } /// Called to register service extensions. @@ -937,7 +937,7 @@ getter: () async => WidgetsApp.debugShowWidgetInspectorOverride, setter: (bool value) { if (WidgetsApp.debugShowWidgetInspectorOverride == value) { - return Future<Null>.value(); + return Future<void>.value(); } WidgetsApp.debugShowWidgetInspectorOverride = value; return forceRebuild();
diff --git a/packages/flutter/test/animation/futures_test.dart b/packages/flutter/test/animation/futures_test.dart index 2e552f9..23eb35a 100644 --- a/packages/flutter/test/animation/futures_test.dart +++ b/packages/flutter/test/animation/futures_test.dart
@@ -22,7 +22,7 @@ vsync: const TestVSync(), ); final List<String> log = <String>[]; - Future<Null> runTest() async { + Future<void> runTest() async { log.add('a'); // t=0 await controller1.forward(); // starts at t=0 again log.add('b'); // wants to end at t=100 but missed frames until t=150 @@ -32,7 +32,7 @@ log.add('d'); // wants to end at t=1099 but missed frames until t=1200 } log.add('start'); - runTest().then((Null value) { + runTest().then((void value) { log.add('end'); }); await tester.pump(); // t=0 @@ -71,7 +71,7 @@ vsync: const TestVSync(), ); final List<String> log = <String>[]; - Future<Null> runTest() async { + Future<void> runTest() async { log.add('a'); // t=0 await controller1.forward().orCancel; // starts at t=0 again log.add('b'); // wants to end at t=100 but missed frames until t=150 @@ -81,7 +81,7 @@ log.add('d'); // wants to end at t=1099 but missed frames until t=1200 } log.add('start'); - runTest().then((Null value) { + runTest().then((void value) { log.add('end'); }); await tester.pump(); // t=0 @@ -112,7 +112,7 @@ vsync: const TestVSync(), ); final List<String> log = <String>[]; - Future<Null> runTest() async { + Future<void> runTest() async { try { log.add('start'); await controller1.forward().orCancel; @@ -121,7 +121,7 @@ log.add('caught'); } } - runTest().then((Null value) { + runTest().then((void value) { log.add('end'); }); await tester.pump(); // start ticker @@ -172,10 +172,10 @@ final TickerFuture f = controller1.forward(); await tester.pump(); // start ticker await tester.pump(const Duration(milliseconds: 200)); // end ticker - expect(await f.asStream().single, isNull); + expect(f.asStream().single, isInstanceOf<Future<void>>()); await f.catchError((dynamic e) { throw 'do not reach'; }); - expect(await f.then<bool>((Null value) => true), isTrue); - expect(await f.whenComplete(() => false), isNull); - expect(await f.timeout(const Duration(seconds: 5)), isNull); + expect(await f.then<bool>((_) => true), isTrue); + expect(f.whenComplete(() => false), isInstanceOf<Future<void>>()); + expect(f.timeout(const Duration(seconds: 5)), isInstanceOf<Future<void>>()); }); }
diff --git a/packages/flutter/test/cupertino/bottom_tab_bar_test.dart b/packages/flutter/test/cupertino/bottom_tab_bar_test.dart index 54dc0b9..ca54528 100644 --- a/packages/flutter/test/cupertino/bottom_tab_bar_test.dart +++ b/packages/flutter/test/cupertino/bottom_tab_bar_test.dart
@@ -8,7 +8,7 @@ import '../painting/mocks_for_image_cache.dart'; import '../widgets/semantics_tester.dart'; -Future<Null> pumpWidgetWithBoilerplate(WidgetTester tester, Widget widget) async { +Future<void> pumpWidgetWithBoilerplate(WidgetTester tester, Widget widget) async { await tester.pumpWidget( Directionality( textDirection: TextDirection.ltr,
diff --git a/packages/flutter/test/engine/task_order_test.dart b/packages/flutter/test/engine/task_order_test.dart index f29acf6..eef26fc 100644 --- a/packages/flutter/test/engine/task_order_test.dart +++ b/packages/flutter/test/engine/task_order_test.dart
@@ -13,7 +13,7 @@ tasks.add(1); // Flush 0 microtasks. - await Future<Null>.delayed(Duration.zero); + await Future<void>.delayed(Duration.zero); scheduleMicrotask(() { tasks.add(3); @@ -25,7 +25,7 @@ tasks.add(2); // Flush 2 microtasks. - await Future<Null>.delayed(Duration.zero); + await Future<void>.delayed(Duration.zero); scheduleMicrotask(() { tasks.add(6); @@ -40,7 +40,7 @@ tasks.add(5); // Flush 3 microtasks. - await Future<Null>.delayed(Duration.zero); + await Future<void>.delayed(Duration.zero); tasks.add(9);
diff --git a/packages/flutter/test/foundation/error_reporting_test.dart b/packages/flutter/test/foundation/error_reporting_test.dart index 28dab80..db224bf 100644 --- a/packages/flutter/test/foundation/error_reporting_test.dart +++ b/packages/flutter/test/foundation/error_reporting_test.dart
@@ -38,7 +38,7 @@ return await Future<StackTrace>.sync(() => StackTrace.current); } -Future<Null> main() async { +Future<void> main() async { final List<String> console = <String>[]; final StackTrace sampleStack = await getSampleStack();
diff --git a/packages/flutter/test/foundation/reassemble_test.dart b/packages/flutter/test/foundation/reassemble_test.dart index f686ba3..1808b6c 100644 --- a/packages/flutter/test/foundation/reassemble_test.dart +++ b/packages/flutter/test/foundation/reassemble_test.dart
@@ -11,7 +11,7 @@ bool wasLocked; @override - Future<Null> performReassemble() async { + Future<void> performReassemble() async { wasLocked = locked; return super.performReassemble(); }
diff --git a/packages/flutter/test/foundation/service_extensions_test.dart b/packages/flutter/test/foundation/service_extensions_test.dart index e2ca5b9..b5d4b5c 100644 --- a/packages/flutter/test/foundation/service_extensions_test.dart +++ b/packages/flutter/test/foundation/service_extensions_test.dart
@@ -43,7 +43,7 @@ int reassembled = 0; bool pendingReassemble = false; @override - Future<Null> performReassemble() { + Future<void> performReassemble() { reassembled += 1; pendingReassemble = true; return super.performReassemble(); @@ -54,7 +54,7 @@ void scheduleFrame() { frameScheduled = true; } - Future<Null> doFrame() async { + Future<void> doFrame() async { frameScheduled = false; if (ui.window.onBeginFrame != null) ui.window.onBeginFrame(Duration.zero); @@ -74,8 +74,8 @@ pendingReassemble = false; } - Future<Null> flushMicrotasks() { - final Completer<Null> completer = Completer<Null>(); + Future<void> flushMicrotasks() { + final Completer<void> completer = Completer<void>(); Timer.run(completer.complete); return completer.future; }
diff --git a/packages/flutter/test/foundation/synchronous_future_test.dart b/packages/flutter/test/foundation/synchronous_future_test.dart index a768a21..d69546b 100644 --- a/packages/flutter/test/foundation/synchronous_future_test.dart +++ b/packages/flutter/test/foundation/synchronous_future_test.dart
@@ -12,13 +12,13 @@ final Future<int> future = SynchronousFuture<int>(42); int result; - future.then<Null>((int value) { result = value; }); + future.then<void>((int value) { result = value; }); expect(result, equals(42)); result = null; final Future<int> futureWithTimeout = future.timeout(const Duration(milliseconds: 1)); - futureWithTimeout.then<Null>((int value) { result = value; }); + futureWithTimeout.then<void>((int value) { result = value; }); expect(result, isNull); await futureWithTimeout; expect(result, equals(42));
diff --git a/packages/flutter/test/gestures/locking_test.dart b/packages/flutter/test/gestures/locking_test.dart index 8bb75b5..3de144a 100644 --- a/packages/flutter/test/gestures/locking_test.dart +++ b/packages/flutter/test/gestures/locking_test.dart
@@ -29,7 +29,7 @@ ] ); - Future<Null> test(VoidCallback callback) { + Future<void> test(VoidCallback callback) { assert(callback != null); return _binding.lockEvents(() async { ui.window.onPointerDataPacket(packet);
diff --git a/packages/flutter/test/material/chip_test.dart b/packages/flutter/test/material/chip_test.dart index 8870443..f73e2fd 100644 --- a/packages/flutter/test/material/chip_test.dart +++ b/packages/flutter/test/material/chip_test.dart
@@ -81,7 +81,7 @@ /// further constraining the size of its child, the label widget. /// Optionally, adding an avatar or delete icon to the chip should not /// cause the chip or label to exceed its constrained height. -Future<Null> _testConstrainedLabel( +Future<void> _testConstrainedLabel( WidgetTester tester, { CircleAvatar avatar, VoidCallback onDeleted,
diff --git a/packages/flutter/test/material/date_picker_test.dart b/packages/flutter/test/material/date_picker_test.dart index 920449a..ca5f19b 100644 --- a/packages/flutter/test/material/date_picker_test.dart +++ b/packages/flutter/test/material/date_picker_test.dart
@@ -127,7 +127,7 @@ await tester.pump(const Duration(seconds: 5)); }); - Future<Null> preparePicker(WidgetTester tester, Future<Null> callback(Future<DateTime> date)) async { + Future<void> preparePicker(WidgetTester tester, Future<void> callback(Future<DateTime> date)) async { BuildContext buttonContext; await tester.pumpWidget(MaterialApp( home: Material(
diff --git a/packages/flutter/test/material/dropdown_test.dart b/packages/flutter/test/material/dropdown_test.dart index 4c2bf8f..486ce20 100644 --- a/packages/flutter/test/material/dropdown_test.dart +++ b/packages/flutter/test/material/dropdown_test.dart
@@ -585,7 +585,7 @@ Rect buttonRect; Rect menuRect; - Future<Null> popUpAndDown(Widget frame) async { + Future<void> popUpAndDown(Widget frame) async { await tester.pumpWidget(frame); await tester.tap(find.byType(dropdownButtonType)); await tester.pumpAndSettle();
diff --git a/packages/flutter/test/material/flexible_space_bar_collapse_mode_test.dart b/packages/flutter/test/material/flexible_space_bar_collapse_mode_test.dart index 8786e03..6ba8384 100644 --- a/packages/flutter/test/material/flexible_space_bar_collapse_mode_test.dart +++ b/packages/flutter/test/material/flexible_space_bar_collapse_mode_test.dart
@@ -243,7 +243,7 @@ }); } -Future<Null> slowDrag(WidgetTester tester, Key widget, Offset offset) async { +Future<void> slowDrag(WidgetTester tester, Key widget, Offset offset) async { final Offset target = tester.getCenter(find.byKey(widget)); final TestGesture gesture = await tester.startGesture(target); await gesture.moveBy(offset);
diff --git a/packages/flutter/test/material/ink_well_test.dart b/packages/flutter/test/material/ink_well_test.dart index 89ba576..0ae9410 100644 --- a/packages/flutter/test/material/ink_well_test.dart +++ b/packages/flutter/test/material/ink_well_test.dart
@@ -155,7 +155,7 @@ }); testWidgets('splashing survives scrolling when keep-alive is enabled', (WidgetTester tester) async { - Future<Null> runTest(bool keepAlive) async { + Future<void> runTest(bool keepAlive) async { await tester.pumpWidget( Directionality( textDirection: TextDirection.ltr,
diff --git a/packages/flutter/test/material/modal_bottom_sheet_test.dart b/packages/flutter/test/material/modal_bottom_sheet_test.dart index e9594e2..8123958 100644 --- a/packages/flutter/test/material/modal_bottom_sheet_test.dart +++ b/packages/flutter/test/material/modal_bottom_sheet_test.dart
@@ -26,11 +26,10 @@ expect(find.text('BottomSheet'), findsNothing); bool showBottomSheetThenCalled = false; - showModalBottomSheet<Null>( + showModalBottomSheet<void>( context: savedContext, builder: (BuildContext context) => const Text('BottomSheet') - ).then<void>((Null result) { - expectSync(result, isNull); + ).then<void>((void value) { showBottomSheetThenCalled = true; }); @@ -48,11 +47,10 @@ expect(find.text('BottomSheet'), findsNothing); showBottomSheetThenCalled = false; - showModalBottomSheet<Null>( + showModalBottomSheet<void>( context: savedContext, builder: (BuildContext context) => const Text('BottomSheet'), - ).then<void>((Null result) { - expectSync(result, isNull); + ).then<void>((void value) { showBottomSheetThenCalled = true; }); await tester.pump(); // bottom sheet show animation starts @@ -83,7 +81,7 @@ expect(showBottomSheetThenCalled, isFalse); expect(find.text('BottomSheet'), findsNothing); - scaffoldKey.currentState.showBottomSheet<Null>((BuildContext context) { + scaffoldKey.currentState.showBottomSheet<void>((BuildContext context) { return Container( margin: const EdgeInsets.all(40.0), child: const Text('BottomSheet') @@ -137,7 +135,7 @@ ) )); - scaffoldKey.currentState.showBottomSheet<Null>((BuildContext context) { + scaffoldKey.currentState.showBottomSheet<void>((BuildContext context) { return Container( margin: const EdgeInsets.all(40.0), child: const Text('BottomSheet')
diff --git a/packages/flutter/test/material/persistent_bottom_sheet_test.dart b/packages/flutter/test/material/persistent_bottom_sheet_test.dart index c880aee..388b5b2 100644 --- a/packages/flutter/test/material/persistent_bottom_sheet_test.dart +++ b/packages/flutter/test/material/persistent_bottom_sheet_test.dart
@@ -8,7 +8,7 @@ void main() { testWidgets('Verify that a BottomSheet can be rebuilt with ScaffoldFeatureController.setState()', (WidgetTester tester) async { final GlobalKey<ScaffoldState> scaffoldKey = GlobalKey<ScaffoldState>(); - PersistentBottomSheetController<Null> bottomSheet; + PersistentBottomSheetController<void> bottomSheet; int buildCount = 0; await tester.pumpWidget(MaterialApp( @@ -18,7 +18,7 @@ ) )); - bottomSheet = scaffoldKey.currentState.showBottomSheet<Null>((_) { + bottomSheet = scaffoldKey.currentState.showBottomSheet<void>((_) { return Builder( builder: (BuildContext context) { buildCount += 1; @@ -45,7 +45,7 @@ ) )); - scaffoldKey.currentState.showBottomSheet<Null>((BuildContext context) { + scaffoldKey.currentState.showBottomSheet<void>((BuildContext context) { return ListView( shrinkWrap: true, primary: false, @@ -76,7 +76,7 @@ )); int buildCount = 0; - showBottomSheet<Null>( + showBottomSheet<void>( context: key.currentContext, builder: (BuildContext context) { return Builder( @@ -114,7 +114,7 @@ await tester.pump(); - showBottomSheet<Null>( + showBottomSheet<void>( context: scaffoldContext, builder: (BuildContext context) { bottomSheetContext = context;
diff --git a/packages/flutter/test/material/popup_menu_test.dart b/packages/flutter/test/material/popup_menu_test.dart index 3352a7b..eba243b 100644 --- a/packages/flutter/test/material/popup_menu_test.dart +++ b/packages/flutter/test/material/popup_menu_test.dart
@@ -224,8 +224,8 @@ || widgetType == '_PopupMenu'; // for old versions of Dart that don't reify method type arguments }; - Future<Null> openMenu(TextDirection textDirection, Alignment alignment) async { - return TestAsyncUtils.guard(() async { + Future<void> openMenu(TextDirection textDirection, Alignment alignment) async { + return TestAsyncUtils.guard<void>(() async { await tester.pumpWidget(Container()); // reset in case we had a menu up already await tester.pumpWidget(TestApp( textDirection: textDirection, @@ -239,14 +239,14 @@ }); } - Future<Null> testPositioningDown( + Future<void> testPositioningDown( WidgetTester tester, TextDirection textDirection, Alignment alignment, TextDirection growthDirection, Rect startRect, ) { - return TestAsyncUtils.guard(() async { + return TestAsyncUtils.guard<void>(() async { await openMenu(textDirection, alignment); Rect rect = tester.getRect(find.byWidgetPredicate(popupMenu)); expect(rect, startRect); @@ -296,14 +296,14 @@ }); } - Future<Null> testPositioningDownThenUp( + Future<void> testPositioningDownThenUp( WidgetTester tester, TextDirection textDirection, Alignment alignment, TextDirection growthDirection, Rect startRect, ) { - return TestAsyncUtils.guard(() async { + return TestAsyncUtils.guard<void>(() async { await openMenu(textDirection, alignment); Rect rect = tester.getRect(find.byWidgetPredicate(popupMenu)); expect(rect, startRect);
diff --git a/packages/flutter/test/material/scaffold_test.dart b/packages/flutter/test/material/scaffold_test.dart index 4c23e53..aadc34d 100644 --- a/packages/flutter/test/material/scaffold_test.dart +++ b/packages/flutter/test/material/scaffold_test.dart
@@ -306,7 +306,7 @@ builder: (BuildContext context) { return GestureDetector( onTap: () { - Scaffold.of(context).showBottomSheet<Null>((BuildContext context) { + Scaffold.of(context).showBottomSheet<void>((BuildContext context) { return Container( key: sheetKey, color: Colors.blue[500], @@ -390,7 +390,7 @@ }); group('back arrow', () { - Future<Null> expectBackIcon(WidgetTester tester, TargetPlatform platform, IconData expectedIcon) async { + Future<void> expectBackIcon(WidgetTester tester, TargetPlatform platform, IconData expectedIcon) async { final GlobalKey rootKey = GlobalKey(); final Map<String, WidgetBuilder> routes = <String, WidgetBuilder>{ '/': (_) => Container(key: rootKey, child: const Text('Home')), @@ -425,7 +425,7 @@ }); group('close button', () { - Future<Null> expectCloseIcon(WidgetTester tester, TargetPlatform platform, IconData expectedIcon, PageRoute<void> routeBuilder()) async { + Future<void> expectCloseIcon(WidgetTester tester, TargetPlatform platform, IconData expectedIcon, PageRoute<void> routeBuilder()) async { await tester.pumpWidget( MaterialApp( theme: ThemeData(platform: platform),
diff --git a/packages/flutter/test/material/slider_test.dart b/packages/flutter/test/material/slider_test.dart index 6db6c61..bf4cec3 100644 --- a/packages/flutter/test/material/slider_test.dart +++ b/packages/flutter/test/material/slider_test.dart
@@ -1013,7 +1013,7 @@ ); } - Future<Null> testReparenting(bool reparent) async { + Future<void> testReparenting(bool reparent) async { final RenderBox sliderBox = tester.firstRenderObject<RenderBox>(find.byType(Slider)); final Offset center = tester.getCenter(find.byType(Slider)); // Move to 0.0. @@ -1276,7 +1276,7 @@ ); } - Future<Null> expectValueIndicator({ + Future<void> expectValueIndicator({ bool isVisible, SliderThemeData theme, int divisions,
diff --git a/packages/flutter/test/material/snack_bar_test.dart b/packages/flutter/test/material/snack_bar_test.dart index 1ecbb22..cf1d55d 100644 --- a/packages/flutter/test/material/snack_bar_test.dart +++ b/packages/flutter/test/material/snack_bar_test.dart
@@ -425,7 +425,7 @@ actionPressed = true; } ), - )).closed.then<Null>((SnackBarClosedReason reason) { + )).closed.then<void>((SnackBarClosedReason reason) { closedReason = reason; }); },
diff --git a/packages/flutter/test/material/text_field_test.dart b/packages/flutter/test/material/text_field_test.dart index b12527a..2a32484 100644 --- a/packages/flutter/test/material/text_field_test.dart +++ b/packages/flutter/test/material/text_field_test.dart
@@ -100,7 +100,7 @@ ); } -Future<Null> skipPastScrollingAnimation(WidgetTester tester) async { +Future<void> skipPastScrollingAnimation(WidgetTester tester) async { await tester.pump(); await tester.pump(const Duration(milliseconds: 200)); } @@ -212,7 +212,7 @@ final RenderBox inputBox = findTextFieldBox(); final Size emptyInputSize = inputBox.size; - Future<Null> checkText(String testValue) async { + Future<void> checkText(String testValue) async { return TestAsyncUtils.guard(() async { await tester.enterText(find.byType(TextField), testValue); // Check that the onChanged event handler fired. @@ -246,7 +246,7 @@ final EditableTextState editableText = tester.state(find.byType(EditableText)); // Check that the cursor visibility toggles after each blink interval. - Future<Null> checkCursorToggle() async { + Future<void> checkCursorToggle() async { final bool initialShowCursor = editableText.cursorCurrentlyVisible; await tester.pump(editableText.cursorBlinkInterval); expect(editableText.cursorCurrentlyVisible, equals(!initialShowCursor)); @@ -840,7 +840,7 @@ ), ); - Future<Null> checkText(String testValue) { + Future<void> checkText(String testValue) { return TestAsyncUtils.guard(() async { await tester.enterText(find.byType(TextField), testValue); @@ -870,7 +870,7 @@ ), ); - Future<Null> checkText(String testValue) async { + Future<void> checkText(String testValue) async { return TestAsyncUtils.guard(() async { await tester.enterText(find.byType(TextField), testValue);
diff --git a/packages/flutter/test/material/time_picker_test.dart b/packages/flutter/test/material/time_picker_test.dart index daca36d..2167159 100644 --- a/packages/flutter/test/material/time_picker_test.dart +++ b/packages/flutter/test/material/time_picker_test.dart
@@ -57,7 +57,7 @@ return tester.getCenter(find.byKey(const ValueKey<String>('time-picker-dial'))); } -Future<Null> finishPicker(WidgetTester tester) async { +Future<void> finishPicker(WidgetTester tester) async { final MaterialLocalizations materialLocalizations = MaterialLocalizations.of(tester.element(find.byType(RaisedButton))); await tester.tap(find.text(materialLocalizations.okButtonLabel)); await tester.pumpAndSettle(const Duration(seconds: 1)); @@ -223,7 +223,7 @@ const List<String> labels12To11TwoDigit = <String>['12', '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11']; const List<String> labels00To23 = <String>['00', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23']; - Future<Null> mediaQueryBoilerplate(WidgetTester tester, bool alwaysUse24HourFormat, + Future<void> mediaQueryBoilerplate(WidgetTester tester, bool alwaysUse24HourFormat, { TimeOfDay initialTime = const TimeOfDay(hour: 7, minute: 0) }) async { await tester.pumpWidget( Localizations( @@ -397,7 +397,7 @@ testWidgets('can increment and decrement hours', (WidgetTester tester) async { final SemanticsTester semantics = SemanticsTester(tester); - Future<Null> actAndExpect({ String initialValue, SemanticsAction action, String finalValue }) async { + Future<void> actAndExpect({ String initialValue, SemanticsAction action, String finalValue }) async { final SemanticsNode elevenHours = semantics.nodesWith( value: initialValue, ancestor: tester.renderObject(_hourControl).debugSemantics, @@ -463,7 +463,7 @@ testWidgets('can increment and decrement minutes', (WidgetTester tester) async { final SemanticsTester semantics = SemanticsTester(tester); - Future<Null> actAndExpect({ String initialValue, SemanticsAction action, String finalValue }) async { + Future<void> actAndExpect({ String initialValue, SemanticsAction action, String finalValue }) async { final SemanticsNode elevenHours = semantics.nodesWith( value: initialValue, ancestor: tester.renderObject(_minuteControl).debugSemantics,
diff --git a/packages/flutter/test/material/user_accounts_drawer_header_test.dart b/packages/flutter/test/material/user_accounts_drawer_header_test.dart index 31fb510..fdd454a 100644 --- a/packages/flutter/test/material/user_accounts_drawer_header_test.dart +++ b/packages/flutter/test/material/user_accounts_drawer_header_test.dart
@@ -12,7 +12,7 @@ const Key avatarC = Key('C'); const Key avatarD = Key('D'); -Future<Null> pumpTestWidget(WidgetTester tester, { +Future<void> pumpTestWidget(WidgetTester tester, { bool withName = true, bool withEmail = true, bool withOnDetailsPressedHandler = true,
diff --git a/packages/flutter/test/material/will_pop_test.dart b/packages/flutter/test/material/will_pop_test.dart index 5a64acf..0c643b7 100644 --- a/packages/flutter/test/material/will_pop_test.dart +++ b/packages/flutter/test/material/will_pop_test.dart
@@ -277,7 +277,7 @@ StateSetter contentsSetState; // call this to rebuild the route's SampleForm contents bool contentsEmpty = false; // when true, don't include the SampleForm in the route - final TestPageRoute<Null> route = TestPageRoute<Null>( + final TestPageRoute<void> route = TestPageRoute<void>( builder: (BuildContext context) { return StatefulBuilder( builder: (BuildContext context, StateSetter setState) {
diff --git a/packages/flutter/test/services/fake_platform_views.dart b/packages/flutter/test/services/fake_platform_views.dart index a532295..8ade917 100644 --- a/packages/flutter/test/services/fake_platform_views.dart +++ b/packages/flutter/test/services/fake_platform_views.dart
@@ -35,7 +35,7 @@ Future<dynamic> _onMethodCall(MethodCall call) { if (targetPlatform == TargetPlatform.android) return _onMethodCallAndroid(call); - return Future<Null>.sync(() => null); + return Future<dynamic>.sync(() => null); } Future<dynamic> _onMethodCallAndroid(MethodCall call) { @@ -51,7 +51,7 @@ case 'setDirection': return _setDirection(call); } - return Future<Null>.sync(() => null); + return Future<dynamic>.sync(() => null); } Future<dynamic> _create(MethodCall call) { @@ -90,7 +90,7 @@ ); _views.remove(id); - return Future<Null>.sync(() => null); + return Future<dynamic>.sync(() => null); } Future<dynamic> _resize(MethodCall call) async { @@ -110,7 +110,7 @@ } _views[id].size = Size(width, height); - return Future<Null>.sync(() => null); + return Future<dynamic>.sync(() => null); } Future<dynamic> _touch(MethodCall call) { @@ -132,7 +132,7 @@ motionEvents[id] = <FakeMotionEvent> []; motionEvents[id].add(FakeMotionEvent(action, pointerIds, pointerOffsets)); - return Future<Null>.sync(() => null); + return Future<dynamic>.sync(() => null); } Future<dynamic> _setDirection(MethodCall call) async { @@ -148,7 +148,7 @@ _views[id].layoutDirection = layoutDirection; - return Future<Null>.sync(() => null); + return Future<dynamic>.sync(() => null); } }
diff --git a/packages/flutter/test/services/platform_channel_test.dart b/packages/flutter/test/services/platform_channel_test.dart index b7cf0dc..572454b 100644 --- a/packages/flutter/test/services/platform_channel_test.dart +++ b/packages/flutter/test/services/platform_channel_test.dart
@@ -190,7 +190,7 @@ ); final List<dynamic> events = await channel.receiveBroadcastStream('hello').toList(); expect(events, orderedEquals(<String>['hello1', 'hello2'])); - await Future<Null>.delayed(Duration.zero); + await Future<void>.delayed(Duration.zero); expect(canceled, isTrue); }); test('can receive error event', () async { @@ -212,7 +212,7 @@ final List<dynamic> events = <dynamic>[]; final List<dynamic> errors = <dynamic>[]; channel.receiveBroadcastStream('hello').listen(events.add, onError: errors.add); - await Future<Null>.delayed(Duration.zero); + await Future<void>.delayed(Duration.zero); expect(events, isEmpty); expect(errors, hasLength(1)); expect(errors[0], isInstanceOf<PlatformException>());
diff --git a/packages/flutter/test/widgets/align_test.dart b/packages/flutter/test/widgets/align_test.dart index 9213e77..c8054f7 100644 --- a/packages/flutter/test/widgets/align_test.dart +++ b/packages/flutter/test/widgets/align_test.dart
@@ -24,20 +24,20 @@ await tester.pumpWidget( const Align( - key: GlobalObjectKey<Null>(null), + key: GlobalObjectKey<State<StatefulWidget>>(null), alignment: Alignment.topLeft, ), ); await tester.pumpWidget(const Directionality( textDirection: TextDirection.rtl, child: Align( - key: GlobalObjectKey<Null>(null), + key: GlobalObjectKey<State<StatefulWidget>>(null), alignment: AlignmentDirectional.topStart, ), )); await tester.pumpWidget( const Align( - key: GlobalObjectKey<Null>(null), + key: GlobalObjectKey<State<StatefulWidget>>(null), alignment: Alignment.topLeft, ), );
diff --git a/packages/flutter/test/widgets/animated_size_test.dart b/packages/flutter/test/widgets/animated_size_test.dart index 5fbab15..3185a4a 100644 --- a/packages/flutter/test/widgets/animated_size_test.dart +++ b/packages/flutter/test/widgets/animated_size_test.dart
@@ -138,7 +138,7 @@ }); testWidgets('tracks unstable child, then resumes animation when child stabilizes', (WidgetTester tester) async { - Future<Null> pumpMillis(int millis) async { + Future<void> pumpMillis(int millis) async { await tester.pump(Duration(milliseconds: millis)); }
diff --git a/packages/flutter/test/widgets/app_overrides_test.dart b/packages/flutter/test/widgets/app_overrides_test.dart index b6319c8..b463b15 100644 --- a/packages/flutter/test/widgets/app_overrides_test.dart +++ b/packages/flutter/test/widgets/app_overrides_test.dart
@@ -28,12 +28,12 @@ } } -Future<Null> pumpApp(WidgetTester tester) async { +Future<void> pumpApp(WidgetTester tester) async { await tester.pumpWidget( WidgetsApp( color: const Color(0xFF333333), onGenerateRoute: (RouteSettings settings) { - return TestRoute<Null>(settings: settings, child: Container()); + return TestRoute<void>(settings: settings, child: Container()); }, ), );
diff --git a/packages/flutter/test/widgets/app_title_test.dart b/packages/flutter/test/widgets/app_title_test.dart index 18b8972..cfe6256 100644 --- a/packages/flutter/test/widgets/app_title_test.dart +++ b/packages/flutter/test/widgets/app_title_test.dart
@@ -8,7 +8,7 @@ const Color kTitleColor = Color(0xFF333333); const String kTitleString = 'Hello World'; -Future<Null> pumpApp(WidgetTester tester, { GenerateAppTitle onGenerateTitle }) async { +Future<void> pumpApp(WidgetTester tester, { GenerateAppTitle onGenerateTitle }) async { await tester.pumpWidget( WidgetsApp( supportedLocales: const <Locale>[
diff --git a/packages/flutter/test/widgets/async_test.dart b/packages/flutter/test/widgets/async_test.dart index 099ca98..92bc5a8 100644 --- a/packages/flutter/test/widgets/async_test.dart +++ b/packages/flutter/test/widgets/async_test.dart
@@ -327,7 +327,7 @@ }); } -Future<Null> eventFiring(WidgetTester tester) async { +Future<void> eventFiring(WidgetTester tester) async { await tester.pump(Duration.zero); }
diff --git a/packages/flutter/test/widgets/box_decoration_test.dart b/packages/flutter/test/widgets/box_decoration_test.dart index c3d4eaf..f51195e 100644 --- a/packages/flutter/test/widgets/box_decoration_test.dart +++ b/packages/flutter/test/widgets/box_decoration_test.dart
@@ -18,7 +18,7 @@ class TestImageProvider extends ImageProvider<TestImageProvider> { TestImageProvider(this.future); - final Future<Null> future; + final Future<void> future; static ui.Image image; @@ -30,17 +30,17 @@ @override ImageStreamCompleter load(TestImageProvider key) { return OneFrameImageStreamCompleter( - future.then<ImageInfo>((Null value) => ImageInfo(image: image)) + future.then<ImageInfo>((void value) => ImageInfo(image: image)) ); } } -Future<Null> main() async { +Future<void> main() async { TestImageProvider.image = await decodeImageFromList(Uint8List.fromList(kTransparentImage)); testWidgets('DecoratedBox handles loading images', (WidgetTester tester) async { final GlobalKey key = GlobalKey(); - final Completer<Null> completer = Completer<Null>(); + final Completer<void> completer = Completer<void>(); await tester.pumpWidget( KeyedSubtree( key: key, @@ -62,7 +62,7 @@ }); testWidgets('Moving a DecoratedBox', (WidgetTester tester) async { - final Completer<Null> completer = Completer<Null>(); + final Completer<void> completer = Completer<void>(); final Widget subtree = KeyedSubtree( key: GlobalKey(), child: RepaintBoundary(
diff --git a/packages/flutter/test/widgets/custom_painter_test.dart b/packages/flutter/test/widgets/custom_painter_test.dart index 03455e5..e0cfeaf 100644 --- a/packages/flutter/test/widgets/custom_painter_test.dart +++ b/packages/flutter/test/widgets/custom_painter_test.dart
@@ -682,7 +682,7 @@ }); } -void testDiff(String description, Future<Null> Function(_DiffTester tester) testFunction) { +void testDiff(String description, Future<void> Function(_DiffTester tester) testFunction) { testWidgets(description, (WidgetTester tester) async { await testFunction(_DiffTester(tester)); }); @@ -700,7 +700,7 @@ /// /// - checks that initial and final configurations are in the desired states. /// - checks that keyed nodes have stable IDs. - Future<Null> diff({List<String> from, List<String> to}) async { + Future<void> diff({List<String> from, List<String> to}) async { final SemanticsTester semanticsTester = SemanticsTester(tester); TestSemantics createExpectations(List<String> labels) {
diff --git a/packages/flutter/test/widgets/dismissible_test.dart b/packages/flutter/test/widgets/dismissible_test.dart index 084de05..420fdcc 100644 --- a/packages/flutter/test/widgets/dismissible_test.dart +++ b/packages/flutter/test/widgets/dismissible_test.dart
@@ -61,9 +61,9 @@ ); } -typedef DismissMethod = Future<Null> Function(WidgetTester tester, Finder finder, { @required AxisDirection gestureDirection }); +typedef DismissMethod = Future<void> Function(WidgetTester tester, Finder finder, { @required AxisDirection gestureDirection }); -Future<Null> dismissElement(WidgetTester tester, Finder finder, { @required AxisDirection gestureDirection }) async { +Future<void> dismissElement(WidgetTester tester, Finder finder, { @required AxisDirection gestureDirection }) async { Offset downLocation; Offset upLocation; switch (gestureDirection) { @@ -98,7 +98,7 @@ await gesture.up(); } -Future<Null> flingElement(WidgetTester tester, Finder finder, { @required AxisDirection gestureDirection, double initialOffsetFactor = 0.0 }) async { +Future<void> flingElement(WidgetTester tester, Finder finder, { @required AxisDirection gestureDirection, double initialOffsetFactor = 0.0 }) async { Offset delta; switch (gestureDirection) { case AxisDirection.left: @@ -119,7 +119,7 @@ await tester.fling(finder, delta, 1000.0, initialOffset: delta * initialOffsetFactor); } -Future<Null> flingElementFromZero(WidgetTester tester, Finder finder, { @required AxisDirection gestureDirection }) async { +Future<void> flingElementFromZero(WidgetTester tester, Finder finder, { @required AxisDirection gestureDirection }) async { // This is a special case where we drag in one direction, then fling back so // that at the point of release, we're at exactly the point at which we // started, but with velocity. This is needed to check a boundary condition @@ -127,7 +127,7 @@ await flingElement(tester, finder, gestureDirection: gestureDirection, initialOffsetFactor: -1.0); } -Future<Null> dismissItem(WidgetTester tester, int item, { +Future<void> dismissItem(WidgetTester tester, int item, { @required AxisDirection gestureDirection, DismissMethod mechanism = dismissElement, }) async { @@ -144,7 +144,7 @@ await tester.pump(); // rebuild after the callback removes the entry } -Future<Null> checkFlingItemBeforeMovementEnd(WidgetTester tester, int item, { +Future<void> checkFlingItemBeforeMovementEnd(WidgetTester tester, int item, { @required AxisDirection gestureDirection, DismissMethod mechanism = rollbackElement }) async { @@ -158,7 +158,7 @@ await tester.pump(const Duration(milliseconds: 100)); } -Future<Null> checkFlingItemAfterMovement(WidgetTester tester, int item, { +Future<void> checkFlingItemAfterMovement(WidgetTester tester, int item, { @required AxisDirection gestureDirection, DismissMethod mechanism = rollbackElement }) async { @@ -172,7 +172,7 @@ await tester.pump(const Duration(milliseconds: 300)); } -Future<Null> rollbackElement(WidgetTester tester, Finder finder, { @required AxisDirection gestureDirection, double initialOffsetFactor = 0.0 }) async { +Future<void> rollbackElement(WidgetTester tester, Finder finder, { @required AxisDirection gestureDirection, double initialOffsetFactor = 0.0 }) async { Offset delta; switch (gestureDirection) { case AxisDirection.left:
diff --git a/packages/flutter/test/widgets/draggable_test.dart b/packages/flutter/test/widgets/draggable_test.dart index 9085dea..dcec8ae 100644 --- a/packages/flutter/test/widgets/draggable_test.dart +++ b/packages/flutter/test/widgets/draggable_test.dart
@@ -1803,7 +1803,7 @@ } -Future<Null> _testLongPressDraggableHapticFeedback({WidgetTester tester, bool hapticFeedbackOnStart, int expectedHapticFeedbackCount}) async { +Future<void> _testLongPressDraggableHapticFeedback({WidgetTester tester, bool hapticFeedbackOnStart, int expectedHapticFeedbackCount}) async { bool onDragStartedCalled = false; int hapticFeedbackCalls = 0; @@ -1845,7 +1845,7 @@ expect(hapticFeedbackCalls, expectedHapticFeedbackCount); } -Future<Null> _testChildAnchorFeedbackPosition({WidgetTester tester, double top = 0.0, double left = 0.0}) async { +Future<void> _testChildAnchorFeedbackPosition({WidgetTester tester, double top = 0.0, double left = 0.0}) async { final List<int> accepted = <int>[]; int dragStartedCount = 0;
diff --git a/packages/flutter/test/widgets/editable_text_test.dart b/packages/flutter/test/widgets/editable_text_test.dart index 31f7d7d..8b502d8 100644 --- a/packages/flutter/test/widgets/editable_text_test.dart +++ b/packages/flutter/test/widgets/editable_text_test.dart
@@ -30,7 +30,7 @@ // More technically, when an EditableText is given a particular [action], Flutter // requests [serializedActionName] when attaching to the platform's input // system. - Future<Null> _desiredKeyboardActionIsRequested({ + Future<void> _desiredKeyboardActionIsRequested({ WidgetTester tester, TextInputAction action, String serializedActionName,
diff --git a/packages/flutter/test/widgets/ensure_visible_test.dart b/packages/flutter/test/widgets/ensure_visible_test.dart index 5da8090..6c65499 100644 --- a/packages/flutter/test/widgets/ensure_visible_test.dart +++ b/packages/flutter/test/widgets/ensure_visible_test.dart
@@ -227,7 +227,7 @@ group('ListView', () { testWidgets('ListView ensureVisible Axis.vertical', (WidgetTester tester) async { BuildContext findContext(int i) => tester.element(findKey(i)); - Future<Null> prepare(double offset) async { + Future<void> prepare(double offset) async { tester.state<ScrollableState>(find.byType(Scrollable)).position.jumpTo(offset); await tester.pump(); } @@ -263,7 +263,7 @@ testWidgets('ListView ensureVisible Axis.horizontal', (WidgetTester tester) async { BuildContext findContext(int i) => tester.element(findKey(i)); - Future<Null> prepare(double offset) async { + Future<void> prepare(double offset) async { tester.state<ScrollableState>(find.byType(Scrollable)).position.jumpTo(offset); await tester.pump(); } @@ -299,7 +299,7 @@ testWidgets('ListView ensureVisible Axis.vertical reverse', (WidgetTester tester) async { BuildContext findContext(int i) => tester.element(findKey(i)); - Future<Null> prepare(double offset) async { + Future<void> prepare(double offset) async { tester.state<ScrollableState>(find.byType(Scrollable)).position.jumpTo(offset); await tester.pump(); } @@ -335,7 +335,7 @@ testWidgets('ListView ensureVisible Axis.horizontal reverse', (WidgetTester tester) async { BuildContext findContext(int i) => tester.element(findKey(i)); - Future<Null> prepare(double offset) async { + Future<void> prepare(double offset) async { tester.state<ScrollableState>(find.byType(Scrollable)).position.jumpTo(offset); await tester.pump(); } @@ -372,7 +372,7 @@ // TODO(abarth): Unskip this test. See https://github.com/flutter/flutter/issues/7919 testWidgets('ListView ensureVisible negative child', (WidgetTester tester) async { BuildContext findContext(int i) => tester.element(findKey(i)); - Future<Null> prepare(double offset) async { + Future<void> prepare(double offset) async { tester.state<ScrollableState>(find.byType(Scrollable)).position.jumpTo(offset); await tester.pump(); } @@ -430,7 +430,7 @@ testWidgets('ListView ensureVisible rotated child', (WidgetTester tester) async { BuildContext findContext(int i) => tester.element(findKey(i)); - Future<Null> prepare(double offset) async { + Future<void> prepare(double offset) async { tester.state<ScrollableState>(find.byType(Scrollable)).position.jumpTo(offset); await tester.pump(); } @@ -483,7 +483,7 @@ group('ListView shrinkWrap', () { testWidgets('ListView ensureVisible Axis.vertical', (WidgetTester tester) async { BuildContext findContext(int i) => tester.element(findKey(i)); - Future<Null> prepare(double offset) async { + Future<void> prepare(double offset) async { tester.state<ScrollableState>(find.byType(Scrollable)).position.jumpTo(offset); await tester.pump(); } @@ -519,7 +519,7 @@ testWidgets('ListView ensureVisible Axis.horizontal', (WidgetTester tester) async { BuildContext findContext(int i) => tester.element(findKey(i)); - Future<Null> prepare(double offset) async { + Future<void> prepare(double offset) async { tester.state<ScrollableState>(find.byType(Scrollable)).position.jumpTo(offset); await tester.pump(); } @@ -555,7 +555,7 @@ testWidgets('ListView ensureVisible Axis.vertical reverse', (WidgetTester tester) async { BuildContext findContext(int i) => tester.element(findKey(i)); - Future<Null> prepare(double offset) async { + Future<void> prepare(double offset) async { tester.state<ScrollableState>(find.byType(Scrollable)).position.jumpTo(offset); await tester.pump(); } @@ -591,7 +591,7 @@ testWidgets('ListView ensureVisible Axis.horizontal reverse', (WidgetTester tester) async { BuildContext findContext(int i) => tester.element(findKey(i)); - Future<Null> prepare(double offset) async { + Future<void> prepare(double offset) async { tester.state<ScrollableState>(find.byType(Scrollable)).position.jumpTo(offset); await tester.pump(); } @@ -629,7 +629,7 @@ group('Scrollable with center', () { testWidgets('ensureVisible', (WidgetTester tester) async { BuildContext findContext(int i) => tester.element(findKey(i)); - Future<Null> prepare(double offset) async { + Future<void> prepare(double offset) async { tester.state<ScrollableState>(find.byType(Scrollable)).position.jumpTo(offset); await tester.pump(); }
diff --git a/packages/flutter/test/widgets/fade_in_image_test.dart b/packages/flutter/test/widgets/fade_in_image_test.dart index 1c74010..55673bc 100644 --- a/packages/flutter/test/widgets/fade_in_image_test.dart +++ b/packages/flutter/test/widgets/fade_in_image_test.dart
@@ -9,7 +9,7 @@ import 'package:flutter_test/flutter_test.dart'; import '../painting/image_test_utils.dart'; -Future<Null> main() async { +Future<void> main() async { // These must run outside test zone to complete final ui.Image targetImage = await createTestImage(); final ui.Image placeholderImage = await createTestImage();
diff --git a/packages/flutter/test/widgets/form_test.dart b/packages/flutter/test/widgets/form_test.dart index fae19d9..02b5cbe 100644 --- a/packages/flutter/test/widgets/form_test.dart +++ b/packages/flutter/test/widgets/form_test.dart
@@ -30,7 +30,7 @@ expect(fieldValue, isNull); - Future<Null> checkText(String testValue) async { + Future<void> checkText(String testValue) async { await tester.enterText(find.byType(TextFormField), testValue); formKey.currentState.save(); // pump'ing is unnecessary because callback happens regardless of frames @@ -63,7 +63,7 @@ expect(fieldValue, isNull); - Future<Null> checkText(String testValue) async { + Future<void> checkText(String testValue) async { await tester.enterText(find.byType(TextField), testValue); // pump'ing is unnecessary because callback happens regardless of frames expect(fieldValue, equals(testValue)); @@ -97,7 +97,7 @@ // Start off not autovalidating. await tester.pumpWidget(builder(false)); - Future<Null> checkErrorText(String testValue) async { + Future<void> checkErrorText(String testValue) async { formKey.currentState.reset(); await tester.pumpWidget(builder(false)); await tester.enterText(find.byType(TextFormField), testValue); @@ -154,13 +154,13 @@ await tester.pumpWidget(builder()); - Future<Null> checkErrorText(String testValue) async { + Future<void> checkErrorText(String testValue) async { await tester.enterText(find.byType(TextFormField).first, testValue); await tester.pump(); // Check for a new Text widget with our error text. expect(find.text(testValue + '/error'), findsOneWidget); - return null; + return; } await checkErrorText('Test');
diff --git a/packages/flutter/test/widgets/gesture_detector_test.dart b/packages/flutter/test/widgets/gesture_detector_test.dart index ac2800f..36fe286 100644 --- a/packages/flutter/test/widgets/gesture_detector_test.dart +++ b/packages/flutter/test/widgets/gesture_detector_test.dart
@@ -286,7 +286,7 @@ // Pointer is dragged from the center of the 800x100 gesture detector // to a point (400,300) below it. This always causes onTapCancel to be // called; onTap should never be called. - Future<Null> dragOut(Duration timeout) async { + Future<void> dragOut(Duration timeout) async { final TestGesture gesture = await tester.startGesture(const Offset(400.0, 50.0)); // If the timeout is less than kPressTimeout the recognizer will just trigger // the onTapCancel callback. If the timeout is greater than kLongPressTimeout
diff --git a/packages/flutter/test/widgets/image_test.dart b/packages/flutter/test/widgets/image_test.dart index 04fd69e..7c17a95 100644 --- a/packages/flutter/test/widgets/image_test.dart +++ b/packages/flutter/test/widgets/image_test.dart
@@ -601,7 +601,7 @@ testWidgets('Precache', (WidgetTester tester) async { final TestImageProvider provider = TestImageProvider(); - Future<Null> precache; + Future<void> precache; await tester.pumpWidget( Builder( builder: (BuildContext context) { @@ -632,7 +632,7 @@ final Exception testException = Exception('cannot resolve host'); final StackTrace testStack = StackTrace.current; final TestImageProvider imageProvider = TestImageProvider(); - Future<Null> precache; + Future<void> precache; await tester.pumpWidget( Builder( builder: (BuildContext context) {
diff --git a/packages/flutter/test/widgets/list_view_test.dart b/packages/flutter/test/widgets/list_view_test.dart index 8bca4d0..89e4978 100644 --- a/packages/flutter/test/widgets/list_view_test.dart +++ b/packages/flutter/test/widgets/list_view_test.dart
@@ -176,7 +176,7 @@ }); testWidgets('ListView large scroll jump and keepAlive first child not keepAlive', (WidgetTester tester) async { - Future<Null> checkAndScroll([String zero = '0:false']) async { + Future<void> checkAndScroll([String zero = '0:false']) async { expect(find.text(zero), findsOneWidget); expect(find.text('1:false'), findsOneWidget); expect(find.text('2:false'), findsOneWidget);
diff --git a/packages/flutter/test/widgets/obscured_animated_image_test.dart b/packages/flutter/test/widgets/obscured_animated_image_test.dart index fac8fdc..1af690a 100644 --- a/packages/flutter/test/widgets/obscured_animated_image_test.dart +++ b/packages/flutter/test/widgets/obscured_animated_image_test.dart
@@ -13,7 +13,7 @@ import '../painting/fake_image_provider.dart'; import '../painting/image_data.dart'; -Future<Null> main() async { +Future<void> main() async { final FakeCodec fakeCodec = await FakeCodec.fromData(Uint8List.fromList(kAnimatedGif)); final FakeImageProvider fakeImageProvider = FakeImageProvider(fakeCodec);
diff --git a/packages/flutter/test/widgets/overscroll_indicator_test.dart b/packages/flutter/test/widgets/overscroll_indicator_test.dart index ba60a9c..0857b6e 100644 --- a/packages/flutter/test/widgets/overscroll_indicator_test.dart +++ b/packages/flutter/test/widgets/overscroll_indicator_test.dart
@@ -12,7 +12,7 @@ final Matcher doesNotOverscroll = isNot(paints..circle()); -Future<Null> slowDrag(WidgetTester tester, Offset start, Offset offset) async { +Future<void> slowDrag(WidgetTester tester, Offset start, Offset offset) async { final TestGesture gesture = await tester.startGesture(start); for (int index = 0; index < 10; index += 1) { await gesture.moveBy(offset);
diff --git a/packages/flutter/test/widgets/page_forward_transitions_test.dart b/packages/flutter/test/widgets/page_forward_transitions_test.dart index 89a8590..91d0d01 100644 --- a/packages/flutter/test/widgets/page_forward_transitions_test.dart +++ b/packages/flutter/test/widgets/page_forward_transitions_test.dart
@@ -81,7 +81,7 @@ onGenerateRoute: (RouteSettings settings) { switch (settings.name) { case '/': - return TestRoute<Null>( + return TestRoute<void>( settings: settings, child: Builder( key: insideKey, @@ -104,9 +104,9 @@ } ) ); - case '/2': return TestRoute<Null>(settings: settings, child: const Text('E')); - case '/3': return TestRoute<Null>(settings: settings, child: const Text('F')); - case '/4': return TestRoute<Null>(settings: settings, child: const Text('G')); + case '/2': return TestRoute<void>(settings: settings, child: const Text('E')); + case '/3': return TestRoute<void>(settings: settings, child: const Text('F')); + case '/4': return TestRoute<void>(settings: settings, child: const Text('G')); } return null; } @@ -190,8 +190,8 @@ MaterialApp( onGenerateRoute: (RouteSettings settings) { switch (settings.name) { - case '/': return TestRoute<Null>(settings: settings, child: const Text('A')); - case '/1': return TestRoute<Null>(settings: settings, barrierColor: const Color(0xFFFFFF00), child: const Text('B')); + case '/': return TestRoute<void>(settings: settings, child: const Text('A')); + case '/1': return TestRoute<void>(settings: settings, barrierColor: const Color(0xFFFFFF00), child: const Text('B')); } return null; }
diff --git a/packages/flutter/test/widgets/page_transitions_test.dart b/packages/flutter/test/widgets/page_transitions_test.dart index 23abe76..a910bd9 100644 --- a/packages/flutter/test/widgets/page_transitions_test.dart +++ b/packages/flutter/test/widgets/page_transitions_test.dart
@@ -27,7 +27,7 @@ bool setStateCalled = false; void showBottomSheet() { - _scaffoldKey.currentState.showBottomSheet<Null>((BuildContext context) { + _scaffoldKey.currentState.showBottomSheet<void>((BuildContext context) { return const Text('bottomSheet'); }) .closed.whenComplete(() {
diff --git a/packages/flutter/test/widgets/pageable_list_test.dart b/packages/flutter/test/widgets/pageable_list_test.dart index 79f2dda..c966b5b 100644 --- a/packages/flutter/test/widgets/pageable_list_test.dart +++ b/packages/flutter/test/widgets/pageable_list_test.dart
@@ -45,7 +45,7 @@ ); } -Future<Null> page(WidgetTester tester, Offset offset) { +Future<void> page(WidgetTester tester, Offset offset) { return TestAsyncUtils.guard(() async { final String itemText = currentPage != null ? currentPage.toString() : '0'; await tester.drag(find.text(itemText), offset); @@ -53,11 +53,11 @@ }); } -Future<Null> pageLeft(WidgetTester tester) { +Future<void> pageLeft(WidgetTester tester) { return page(tester, Offset(-pageSize.width, 0.0)); } -Future<Null> pageRight(WidgetTester tester) { +Future<void> pageRight(WidgetTester tester) { return page(tester, Offset(pageSize.width, 0.0)); }
diff --git a/packages/flutter/test/widgets/positioned_test.dart b/packages/flutter/test/widgets/positioned_test.dart index a73dfa9..371a828 100644 --- a/packages/flutter/test/widgets/positioned_test.dart +++ b/packages/flutter/test/widgets/positioned_test.dart
@@ -104,7 +104,7 @@ ), ); // t=0 recordMetrics(); - final Completer<Null> completer = Completer<Null>(); + final Completer<void> completer = Completer<void>(); controller.forward().whenComplete(completer.complete); expect(completer.isCompleted, isFalse); await tester.pump(); // t=0 again
diff --git a/packages/flutter/test/widgets/remember_scroll_position_test.dart b/packages/flutter/test/widgets/remember_scroll_position_test.dart index 8796a1d..36c0aaf 100644 --- a/packages/flutter/test/widgets/remember_scroll_position_test.dart +++ b/packages/flutter/test/widgets/remember_scroll_position_test.dart
@@ -28,7 +28,7 @@ } } -Future<Null> performTest(WidgetTester tester, bool maintainState) async { +Future<void> performTest(WidgetTester tester, bool maintainState) async { final GlobalKey<NavigatorState> navigatorKey = GlobalKey<NavigatorState>(); await tester.pumpWidget( Directionality(
diff --git a/packages/flutter/test/widgets/routes_test.dart b/packages/flutter/test/widgets/routes_test.dart index c28c10d..14d3e11 100644 --- a/packages/flutter/test/widgets/routes_test.dart +++ b/packages/flutter/test/widgets/routes_test.dart
@@ -89,7 +89,7 @@ } -Future<Null> runNavigatorTest( +Future<void> runNavigatorTest( WidgetTester tester, NavigatorState host, VoidCallback test,
diff --git a/packages/flutter/test/widgets/rtl_test.dart b/packages/flutter/test/widgets/rtl_test.dart index b967761..6cdcb5c 100644 --- a/packages/flutter/test/widgets/rtl_test.dart +++ b/packages/flutter/test/widgets/rtl_test.dart
@@ -24,20 +24,20 @@ await tester.pumpWidget( const Padding( - key: GlobalObjectKey<Null>(null), + key: GlobalObjectKey<State<StatefulWidget>>(null), padding: EdgeInsets.only(left: 1.0), ), ); await tester.pumpWidget(const Directionality( textDirection: TextDirection.rtl, child: Padding( - key: GlobalObjectKey<Null>(null), + key: GlobalObjectKey<State<StatefulWidget>>(null), padding: EdgeInsetsDirectional.only(start: 1.0), ), )); await tester.pumpWidget( const Padding( - key: GlobalObjectKey<Null>(null), + key: GlobalObjectKey<State<StatefulWidget>>(null), padding: EdgeInsets.only(left: 1.0), ), );
diff --git a/packages/flutter/test/widgets/scroll_events_test.dart b/packages/flutter/test/widgets/scroll_events_test.dart index 83ba680..5f5bf67 100644 --- a/packages/flutter/test/widgets/scroll_events_test.dart +++ b/packages/flutter/test/widgets/scroll_events_test.dart
@@ -27,8 +27,8 @@ } void main() { - Completer<Null> animateTo(WidgetTester tester, double newScrollOffset, { @required Duration duration }) { - final Completer<Null> completer = Completer<Null>(); + Completer<void> animateTo(WidgetTester tester, double newScrollOffset, { @required Duration duration }) { + final Completer<void> completer = Completer<void>(); final ScrollableState scrollable = tester.state(find.byType(Scrollable)); scrollable.position.animateTo(newScrollOffset, duration: duration, curve: Curves.linear).whenComplete(completer.complete); return completer; @@ -63,7 +63,7 @@ await tester.pumpWidget(_buildScroller(log: log)); expect(log, equals(<String>[])); - final Completer<Null> completer = animateTo(tester, 100.0, duration: const Duration(seconds: 1)); + final Completer<void> completer = animateTo(tester, 100.0, duration: const Duration(seconds: 1)); expect(completer.isCompleted, isFalse); expect(log, equals(<String>['scroll-start'])); await tester.pump(const Duration(milliseconds: 100)); @@ -91,7 +91,7 @@ await tester.pumpWidget(_buildScroller(log: log)); expect(log, equals(<String>[])); - final Completer<Null> completer = animateTo(tester, 100.0, duration: const Duration(seconds: 1)); + final Completer<void> completer = animateTo(tester, 100.0, duration: const Duration(seconds: 1)); expect(completer.isCompleted, isFalse); expect(log, equals(<String>['scroll-start'])); await tester.pump(const Duration(milliseconds: 100)); @@ -116,7 +116,7 @@ await tester.pumpWidget(_buildScroller(log: log)); expect(log, equals(<String>[])); - Completer<Null> completer = animateTo(tester, 100.0, duration: const Duration(seconds: 1)); + Completer<void> completer = animateTo(tester, 100.0, duration: const Duration(seconds: 1)); expect(completer.isCompleted, isFalse); expect(log, equals(<String>['scroll-start'])); await tester.pump(const Duration(milliseconds: 100));
diff --git a/packages/flutter/test/widgets/scrollable_fling_test.dart b/packages/flutter/test/widgets/scrollable_fling_test.dart index e35bab8..2dd30a0 100644 --- a/packages/flutter/test/widgets/scrollable_fling_test.dart +++ b/packages/flutter/test/widgets/scrollable_fling_test.dart
@@ -10,7 +10,7 @@ fontFamily: 'Ahem', ); -Future<Null> pumpTest(WidgetTester tester, TargetPlatform platform) async { +Future<void> pumpTest(WidgetTester tester, TargetPlatform platform) async { await tester.pumpWidget(Container()); await tester.pumpWidget(MaterialApp( theme: ThemeData( @@ -25,7 +25,6 @@ ), ), )); - return null; } const double dragOffset = 213.82;
diff --git a/packages/flutter/test/widgets/scrollable_semantics_test.dart b/packages/flutter/test/widgets/scrollable_semantics_test.dart index b1892b6..2dcf7e6 100644 --- a/packages/flutter/test/widgets/scrollable_semantics_test.dart +++ b/packages/flutter/test/widgets/scrollable_semantics_test.dart
@@ -600,15 +600,15 @@ } -Future<Null> flingUp(WidgetTester tester, { int repetitions = 1 }) => fling(tester, const Offset(0.0, -200.0), repetitions); +Future<void> flingUp(WidgetTester tester, { int repetitions = 1 }) => fling(tester, const Offset(0.0, -200.0), repetitions); -Future<Null> flingDown(WidgetTester tester, { int repetitions = 1 }) => fling(tester, const Offset(0.0, 200.0), repetitions); +Future<void> flingDown(WidgetTester tester, { int repetitions = 1 }) => fling(tester, const Offset(0.0, 200.0), repetitions); -Future<Null> flingRight(WidgetTester tester, { int repetitions = 1 }) => fling(tester, const Offset(200.0, 0.0), repetitions); +Future<void> flingRight(WidgetTester tester, { int repetitions = 1 }) => fling(tester, const Offset(200.0, 0.0), repetitions); -Future<Null> flingLeft(WidgetTester tester, { int repetitions = 1 }) => fling(tester, const Offset(-200.0, 0.0), repetitions); +Future<void> flingLeft(WidgetTester tester, { int repetitions = 1 }) => fling(tester, const Offset(-200.0, 0.0), repetitions); -Future<Null> fling(WidgetTester tester, Offset offset, int repetitions) async { +Future<void> fling(WidgetTester tester, Offset offset, int repetitions) async { while (repetitions-- > 0) { await tester.fling(find.byType(ListView), offset, 1000.0); await tester.pump();
diff --git a/packages/flutter/test/widgets/scrollable_test.dart b/packages/flutter/test/widgets/scrollable_test.dart index 7370a29..36fce7c 100644 --- a/packages/flutter/test/widgets/scrollable_test.dart +++ b/packages/flutter/test/widgets/scrollable_test.dart
@@ -6,7 +6,7 @@ import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; -Future<Null> pumpTest(WidgetTester tester, TargetPlatform platform) async { +Future<void> pumpTest(WidgetTester tester, TargetPlatform platform) async { await tester.pumpWidget(MaterialApp( theme: ThemeData( platform: platform, @@ -18,7 +18,6 @@ ), )); await tester.pump(const Duration(seconds: 5)); // to let the theme animate - return null; } const double dragOffset = 200.0;
diff --git a/packages/flutter/test/widgets/semantics_tester_generateTestSemanticsExpressionForCurrentSemanticsTree_test.dart b/packages/flutter/test/widgets/semantics_tester_generateTestSemanticsExpressionForCurrentSemanticsTree_test.dart index 730d830..1620274 100644 --- a/packages/flutter/test/widgets/semantics_tester_generateTestSemanticsExpressionForCurrentSemanticsTree_test.dart +++ b/packages/flutter/test/widgets/semantics_tester_generateTestSemanticsExpressionForCurrentSemanticsTree_test.dart
@@ -22,7 +22,7 @@ debugResetSemanticsIdCounter(); }); - Future<Null> pumpTestWidget(WidgetTester tester) async { + Future<void> pumpTestWidget(WidgetTester tester) async { await tester.pumpWidget(MaterialApp( home: ListView( children: <Widget>[
diff --git a/packages/flutter/test/widgets/semantics_traversal_test.dart b/packages/flutter/test/widgets/semantics_traversal_test.dart index 5a6801c..0c19849 100644 --- a/packages/flutter/test/widgets/semantics_traversal_test.dart +++ b/packages/flutter/test/widgets/semantics_traversal_test.dart
@@ -14,7 +14,7 @@ import 'semantics_tester.dart'; -typedef TraversalTestFunction = Future<Null> Function(TraversalTester tester); +typedef TraversalTestFunction = Future<void> Function(TraversalTester tester); const Size tenByTen = Size(10.0, 10.0); void main() { @@ -287,7 +287,7 @@ final WidgetTester tester; final SemanticsTester semantics; - Future<Null> test({ + Future<void> test({ TextDirection textDirection, Map<String, Rect> children, String expectedTraversal,
diff --git a/packages/flutter/test/widgets/shape_decoration_test.dart b/packages/flutter/test/widgets/shape_decoration_test.dart index 08dc3a1..1e34c96 100644 --- a/packages/flutter/test/widgets/shape_decoration_test.dart +++ b/packages/flutter/test/widgets/shape_decoration_test.dart
@@ -12,7 +12,7 @@ import '../painting/mocks_for_image_cache.dart'; import '../rendering/mock_canvas.dart'; -Future<Null> main() async { +Future<void> main() async { final ui.Image rawImage = await decodeImageFromList(Uint8List.fromList(kTransparentImage)); final ImageProvider image = TestImageProvider(0, 0, image: rawImage); testWidgets('ShapeDecoration.image', (WidgetTester tester) async {
diff --git a/packages/flutter/test/widgets/table_test.dart b/packages/flutter/test/widgets/table_test.dart index 3a55541..62d3fb7 100644 --- a/packages/flutter/test/widgets/table_test.dart +++ b/packages/flutter/test/widgets/table_test.dart
@@ -28,7 +28,7 @@ ); }); testWidgets('Table widget - control test', (WidgetTester tester) async { - Future<Null> run(TextDirection textDirection) async { + Future<void> run(TextDirection textDirection) async { await tester.pumpWidget( Directionality( textDirection: textDirection, @@ -208,7 +208,7 @@ }); testWidgets('Table border - smoke test', (WidgetTester tester) async { - Future<Null> run(TextDirection textDirection) async { + Future<void> run(TextDirection textDirection) async { await tester.pumpWidget( Directionality( textDirection: textDirection,
diff --git a/packages/flutter/test/widgets/widget_inspector_test.dart b/packages/flutter/test/widgets/widget_inspector_test.dart index e695a16..1f48538 100644 --- a/packages/flutter/test/widgets/widget_inspector_test.dart +++ b/packages/flutter/test/widgets/widget_inspector_test.dart
@@ -121,9 +121,8 @@ int rebuildCount = 0; @override - Future<Null> forceRebuild() async { + Future<void> forceRebuild() async { rebuildCount++; - return null; }
diff --git a/packages/flutter_driver/lib/src/common/fuchsia_compat.dart b/packages/flutter_driver/lib/src/common/fuchsia_compat.dart index 37a3b1b..f84cb5a 100644 --- a/packages/flutter_driver/lib/src/common/fuchsia_compat.dart +++ b/packages/flutter_driver/lib/src/common/fuchsia_compat.dart
@@ -29,7 +29,7 @@ int get remotePort => _remotePort; @override - Future<Null> stop() async {} + Future<void> stop() async {} } class _DummySshCommandRunner implements SshCommandRunner {
diff --git a/packages/flutter_driver/lib/src/driver/driver.dart b/packages/flutter_driver/lib/src/driver/driver.dart index 75b3fc1..4037a1a 100644 --- a/packages/flutter_driver/lib/src/driver/driver.dart +++ b/packages/flutter_driver/lib/src/driver/driver.dart
@@ -242,7 +242,7 @@ isolate.pauseEvent is! VMPauseExceptionEvent && isolate.pauseEvent is! VMPauseInterruptedEvent && isolate.pauseEvent is! VMResumeEvent) { - await Future<Null>.delayed(_kShortTimeout ~/ 10); + await Future<void>.delayed(_kShortTimeout ~/ 10); isolate = await isolateRef.loadRunnable(); } @@ -288,7 +288,7 @@ /// results in lost events. /// /// Details: https://github.com/dart-lang/vm_service_client/issues/17 - Future<Null> enableIsolateStreams() async { + Future<void> enableIsolateStreams() async { await connection.peer.sendRequest('streamListen', <String, String>{ 'streamId': 'Isolate', }); @@ -427,30 +427,26 @@ } /// Taps at the center of the widget located by [finder]. - Future<Null> tap(SerializableFinder finder, {Duration timeout}) async { + Future<void> tap(SerializableFinder finder, {Duration timeout}) async { await _sendCommand(Tap(finder, timeout: timeout)); - return null; } /// Waits until [finder] locates the target. - Future<Null> waitFor(SerializableFinder finder, {Duration timeout}) async { + Future<void> waitFor(SerializableFinder finder, {Duration timeout}) async { await _sendCommand(WaitFor(finder, timeout: timeout)); - return null; } /// Waits until [finder] can no longer locate the target. - Future<Null> waitForAbsent(SerializableFinder finder, {Duration timeout}) async { + Future<void> waitForAbsent(SerializableFinder finder, {Duration timeout}) async { await _sendCommand(WaitForAbsent(finder, timeout: timeout)); - return null; } /// Waits until there are no more transient callbacks in the queue. /// /// Use this method when you need to wait for the moment when the application /// becomes "stable", for example, prior to taking a [screenshot]. - Future<Null> waitUntilNoTransientCallbacks({Duration timeout}) async { + Future<void> waitUntilNoTransientCallbacks({Duration timeout}) async { await _sendCommand(WaitUntilNoTransientCallbacks(timeout: timeout)); - return null; } /// Tell the driver to perform a scrolling action. @@ -466,8 +462,8 @@ /// /// The move events are generated at a given [frequency] in Hz (or events per /// second). It defaults to 60Hz. - Future<Null> scroll(SerializableFinder finder, double dx, double dy, Duration duration, { int frequency = 60, Duration timeout }) async { - return await _sendCommand(Scroll(finder, dx, dy, duration, frequency, timeout: timeout)).then<Null>((Map<String, dynamic> _) => null); + Future<void> scroll(SerializableFinder finder, double dx, double dy, Duration duration, { int frequency = 60, Duration timeout }) async { + await _sendCommand(Scroll(finder, dx, dy, duration, frequency, timeout: timeout)); } /// Scrolls the Scrollable ancestor of the widget located by [finder] @@ -477,8 +473,8 @@ /// that lazily creates its children, like [ListView] or [CustomScrollView], /// then this method may fail because [finder] doesn't actually exist. /// The [scrollUntilVisible] method can be used in this case. - Future<Null> scrollIntoView(SerializableFinder finder, { double alignment = 0.0, Duration timeout }) async { - return await _sendCommand(ScrollIntoView(finder, alignment: alignment, timeout: timeout)).then<Null>((Map<String, dynamic> _) => null); + Future<void> scrollIntoView(SerializableFinder finder, { double alignment = 0.0, Duration timeout }) async { + await _sendCommand(ScrollIntoView(finder, alignment: alignment, timeout: timeout)); } /// Repeatedly [scroll] the widget located by [scrollable] by [dxScroll] and @@ -503,7 +499,7 @@ /// /// The [timeout] value should be long enough to accommodate as many scrolls /// as needed to bring an item into view. The default is 10 seconds. - Future<Null> scrollUntilVisible(SerializableFinder scrollable, SerializableFinder item, { + Future<void> scrollUntilVisible(SerializableFinder scrollable, SerializableFinder item, { double alignment = 0.0, double dxScroll = 0.0, double dyScroll = 0.0, @@ -522,11 +518,11 @@ // the chance to complete if the item is already onscreen; if not, scroll // repeatedly until we either find the item or time out. bool isVisible = false; - waitFor(item, timeout: timeout).then<void>((Null value) { isVisible = true; }); - await Future<Null>.delayed(const Duration(milliseconds: 500)); + waitFor(item, timeout: timeout).then<void>((_) { isVisible = true; }); + await Future<void>.delayed(const Duration(milliseconds: 500)); while (!isVisible) { await scroll(scrollable, dxScroll, dyScroll, const Duration(milliseconds: 100)); - await Future<Null>.delayed(const Duration(milliseconds: 500)); + await Future<void>.delayed(const Duration(milliseconds: 500)); } return scrollIntoView(item, alignment: alignment); @@ -569,7 +565,7 @@ /// await driver.waitFor(find.text('World!')); // verify new text appears /// }); /// ``` - Future<Null> enterText(String text, { Duration timeout }) async { + Future<void> enterText(String text, { Duration timeout }) async { await _sendCommand(EnterText(text, timeout: timeout)); } @@ -586,7 +582,7 @@ /// When enabled, the operating system's configured keyboard will not be /// invoked when the widget is focused, as the [SystemChannels.textInput] /// channel will be mocked out. - Future<Null> setTextEntryEmulation({ @required bool enabled, Duration timeout }) async { + Future<void> setTextEntryEmulation({ @required bool enabled, Duration timeout }) async { assert(enabled != null); await _sendCommand(SetTextEntryEmulation(enabled, timeout: timeout)); } @@ -661,7 +657,7 @@ // The two-second gap should be long enough for the GPU thread to // finish rasterizing the frame, but not longer than necessary to keep // driver tests as fast a possible. - await Future<Null>.delayed(const Duration(seconds: 2)); + await Future<void>.delayed(const Duration(seconds: 2)); final Map<String, dynamic> result = await _peer.sendRequest('_flutter.screenshot').timeout(timeout); return base64.decode(result['screenshot']); @@ -692,7 +688,7 @@ } /// Starts recording performance traces. - Future<Null> startTracing({ + Future<void> startTracing({ List<TimelineStream> streams = _defaultStreams, Duration timeout = _kShortTimeout, }) async { @@ -701,7 +697,6 @@ await _peer.sendRequest(_setVMTimelineFlagsMethodName, <String, String>{ 'recordedStreams': _timelineStreamsToString(streams) }).timeout(timeout); - return null; } catch (error, stackTrace) { throw DriverError( 'Failed to start tracing due to remote error', @@ -755,7 +750,7 @@ } /// Clears all timeline events recorded up until now. - Future<Null> clearTimeline({ Duration timeout = _kShortTimeout }) async { + Future<void> clearTimeline({ Duration timeout = _kShortTimeout }) async { try { await _peer .sendRequest(_clearVMTimelineMethodName, <String, String>{}) @@ -799,7 +794,7 @@ /// Closes the underlying connection to the VM service. /// /// Returns a [Future] that fires once the connection has been closed. - Future<Null> close() async { + Future<void> close() async { // Don't leak vm_service_client-specific objects, if any await _serviceClient.close(); await _peer.close(); @@ -863,7 +858,7 @@ if (timer.elapsed < _kLongTimeout * 2) { _log.info('Waiting for application to start'); - await Future<Null>.delayed(_kPauseBetweenReconnectAttempts); + await Future<void>.delayed(_kPauseBetweenReconnectAttempts); return attemptConnection(); } else { _log.critical(
diff --git a/packages/flutter_driver/lib/src/driver/timeline_summary.dart b/packages/flutter_driver/lib/src/driver/timeline_summary.dart index 85322c2..5a4bd8d 100644 --- a/packages/flutter_driver/lib/src/driver/timeline_summary.dart +++ b/packages/flutter_driver/lib/src/driver/timeline_summary.dart
@@ -107,7 +107,7 @@ } /// Writes all of the recorded timeline data to a file. - Future<Null> writeTimelineToFile( + Future<void> writeTimelineToFile( String traceName, { String destinationDirectory, bool pretty = false, @@ -119,7 +119,7 @@ } /// Writes [summaryJson] to a file. - Future<Null> writeSummaryToFile( + Future<void> writeSummaryToFile( String traceName, { String destinationDirectory, bool pretty = false,
diff --git a/packages/flutter_driver/lib/src/extension/extension.dart b/packages/flutter_driver/lib/src/extension/extension.dart index cc3f0a8..98afd4e 100644 --- a/packages/flutter_driver/lib/src/extension/extension.dart +++ b/packages/flutter_driver/lib/src/extension/extension.dart
@@ -205,8 +205,8 @@ } // Waits until at the end of a frame the provided [condition] is [true]. - Future<Null> _waitUntilFrame(bool condition(), [Completer<Null> completer]) { - completer ??= Completer<Null>(); + Future<void> _waitUntilFrame(bool condition(), [Completer<void> completer]) { + completer ??= Completer<void>(); if (!condition()) { SchedulerBinding.instance.addPostFrameCallback((Duration timestamp) { _waitUntilFrame(condition, completer); @@ -317,9 +317,10 @@ return WaitForAbsentResult(); } - Future<Null> _waitUntilNoTransientCallbacks(Command command) async { + Future<Result> _waitUntilNoTransientCallbacks(Command command) async { if (SchedulerBinding.instance.transientCallbackCount != 0) await _waitUntilFrame(() => SchedulerBinding.instance.transientCallbackCount == 0); + return null; } Future<GetSemanticsIdResult> _getSemanticsId(Command command) async { @@ -350,11 +351,11 @@ _prober.binding.hitTest(hitTest, startLocation); _prober.binding.dispatchEvent(pointer.down(startLocation), hitTest); - await Future<Null>.value(); // so that down and move don't happen in the same microtask + await Future<void>.value(); // so that down and move don't happen in the same microtask for (int moves = 0; moves < totalMoves; moves += 1) { currentLocation = currentLocation + delta; _prober.binding.dispatchEvent(pointer.move(currentLocation), hitTest); - await Future<Null>.delayed(pause); + await Future<void>.delayed(pause); } _prober.binding.dispatchEvent(pointer.up(), hitTest); @@ -417,7 +418,7 @@ _semantics = RendererBinding.instance.pipelineOwner.ensureSemantics(); if (!semanticsWasEnabled) { // wait for the first frame where semantics is enabled. - final Completer<Null> completer = Completer<Null>(); + final Completer<void> completer = Completer<void>(); SchedulerBinding.instance.addPostFrameCallback((Duration d) { completer.complete(); });
diff --git a/packages/flutter_driver/test/flutter_driver_test.dart b/packages/flutter_driver/test/flutter_driver_test.dart index eed263a..fb0318ae 100644 --- a/packages/flutter_driver/test/flutter_driver_test.dart +++ b/packages/flutter_driver/test/flutter_driver_test.dart
@@ -64,7 +64,7 @@ when(mockIsolate.pauseEvent).thenReturn(MockVMPauseStartEvent()); when(mockIsolate.resume()).thenAnswer((Invocation invocation) { connectionLog.add('resume'); - return Future<Null>.value(); + return Future<dynamic>.value(null); }); when(mockIsolate.onExtensionAdded).thenAnswer((Invocation invocation) { connectionLog.add('onExtensionAdded'); @@ -79,7 +79,7 @@ test('connects to isolate paused mid-flight', () async { when(mockIsolate.pauseEvent).thenReturn(MockVMPauseBreakpointEvent()); - when(mockIsolate.resume()).thenAnswer((Invocation invocation) => Future<Null>.value()); + when(mockIsolate.resume()).thenAnswer((Invocation invocation) => Future<dynamic>.value(null)); final FlutterDriver driver = await FlutterDriver.connect(dartVmServiceUrl: ''); expect(driver, isNotNull); @@ -95,7 +95,7 @@ when(mockIsolate.resume()).thenAnswer((Invocation invocation) { // This needs to be wrapped in a closure to not be considered uncaught // by package:test - return Future<Null>.error(rpc.RpcException(101, '')); + return Future<dynamic>.error(rpc.RpcException(101, '')); }); final FlutterDriver driver = await FlutterDriver.connect(dartVmServiceUrl: ''); @@ -132,7 +132,7 @@ }); test('closes connection', () async { - when(mockClient.close()).thenAnswer((Invocation invocation) => Future<Null>.value()); + when(mockClient.close()).thenAnswer((Invocation invocation) => Future<dynamic>.value(null)); await driver.close(); });
diff --git a/packages/flutter_driver/test/src/extension_test.dart b/packages/flutter_driver/test/src/extension_test.dart index 10871b1..58979e3 100644 --- a/packages/flutter_driver/test/src/extension_test.dart +++ b/packages/flutter_driver/test/src/extension_test.dart
@@ -24,7 +24,7 @@ testWidgets('returns immediately when transient callback queue is empty', (WidgetTester tester) async { extension.call(WaitUntilNoTransientCallbacks().serialize()) - .then<Null>(expectAsync1((Map<String, dynamic> r) { + .then<void>(expectAsync1((Map<String, dynamic> r) { result = r; })); @@ -44,7 +44,7 @@ }); extension.call(WaitUntilNoTransientCallbacks().serialize()) - .then<Null>(expectAsync1((Map<String, dynamic> r) { + .then<void>(expectAsync1((Map<String, dynamic> r) { result = r; }));
diff --git a/packages/flutter_test/lib/src/widget_tester.dart b/packages/flutter_test/lib/src/widget_tester.dart index eff3f82..7b88e08 100644 --- a/packages/flutter_test/lib/src/widget_tester.dart +++ b/packages/flutter_test/lib/src/widget_tester.dart
@@ -300,7 +300,7 @@ await binding.pump(duration, phase); count += 1; } while (binding.hasScheduledFrame); - }).then<int>((void _) => count); + }).then<int>((_) => count); } /// Runs a [callback] that performs real asynchronous work.
diff --git a/packages/flutter_test/test/widget_tester_test.dart b/packages/flutter_test/test/widget_tester_test.dart index e37ef47..da81a08 100644 --- a/packages/flutter_test/test/widget_tester_test.dart +++ b/packages/flutter_test/test/widget_tester_test.dart
@@ -23,23 +23,23 @@ testWidgets('completes when matcher completes', (WidgetTester tester) async { final Completer<void> completer = Completer<void>(); final Future<void> future = expectLater(null, FakeMatcher(completer)); - String value; - future.then<void>((void _) { - value = '123'; + String result; + future.then<void>((void value) { + result = '123'; }); - test_package.expect(value, isNull); + test_package.expect(result, isNull); completer.complete(); - test_package.expect(value, isNull); + test_package.expect(result, isNull); await future; await tester.pump(); - test_package.expect(value, '123'); + test_package.expect(result, '123'); }); testWidgets('respects the skip flag', (WidgetTester tester) async { final Completer<void> completer = Completer<void>(); final Future<void> future = expectLater(null, FakeMatcher(completer), skip: 'testing skip'); bool completed = false; - future.then<void>((void _) { + future.then<void>((_) { completed = true; }); test_package.expect(completed, isFalse); @@ -625,7 +625,7 @@ @override Future<String> matchAsync(dynamic object) { - return completer.future.then<String>((void _) { + return completer.future.then<String>((void value) { return object?.toString(); }); }
diff --git a/packages/flutter_tools/lib/src/commands/make_host_app_editable.dart b/packages/flutter_tools/lib/src/commands/make_host_app_editable.dart index d40dcd6..9b63d59 100644 --- a/packages/flutter_tools/lib/src/commands/make_host_app_editable.dart +++ b/packages/flutter_tools/lib/src/commands/make_host_app_editable.dart
@@ -42,7 +42,7 @@ } @override - Future<Null> runCommand() async { + Future<FlutterCommandResult> runCommand() async { await _project.ensureReadyForPlatformSpecificTooling(); final bool isAndroidRequested = argResults['android']; @@ -58,5 +58,7 @@ } else if (isIOSRequested) { await _project.ios.makeHostAppEditable(); } + + return null; } }