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;
}
}