diff --git a/packages/flutter/lib/src/material/circle_avatar.dart b/packages/flutter/lib/src/material/circle_avatar.dart index 5d5020d128..3ff42459a1 100644 --- a/packages/flutter/lib/src/material/circle_avatar.dart +++ b/packages/flutter/lib/src/material/circle_avatar.dart @@ -9,8 +9,7 @@ import 'theme.dart'; import 'theme_data.dart'; // Examples can assume: -// // @dart = 2.9 -// String userAvatarUrl; +// late String userAvatarUrl; /// A circle that represents a user. /// diff --git a/packages/flutter/lib/src/material/colors.dart b/packages/flutter/lib/src/material/colors.dart index 6e01c88c2c..240f34ebb8 100644 --- a/packages/flutter/lib/src/material/colors.dart +++ b/packages/flutter/lib/src/material/colors.dart @@ -6,9 +6,6 @@ import 'dart:ui' show Color; import 'package:flutter/painting.dart'; -// Examples can assume: -// // @dart = 2.9 - /// Defines a single color as well a color swatch with ten shades of the color. /// /// The color's shades are referred to by index. The greater the index, the @@ -113,7 +110,7 @@ class MaterialAccentColor extends ColorSwatch { /// using an integer for the specific color desired, as follows: /// /// ```dart -/// Color selection = Colors.green[400]; // Selects a mid-range green. +/// Color selection = Colors.green[400]!; // Selects a mid-range green. /// ``` /// {@end-tool} /// {@tool snippet} diff --git a/packages/flutter/lib/src/material/dialog.dart b/packages/flutter/lib/src/material/dialog.dart index 4012977f2b..c9d406a832 100644 --- a/packages/flutter/lib/src/material/dialog.dart +++ b/packages/flutter/lib/src/material/dialog.dart @@ -18,9 +18,8 @@ import 'theme.dart'; import 'theme_data.dart'; // Examples can assume: -// // @dart = 2.9 // enum Department { treasury, state } -// BuildContext context; +// late BuildContext context; const EdgeInsets _defaultInsetPadding = EdgeInsets.symmetric(horizontal: 40.0, vertical: 24.0); @@ -706,6 +705,9 @@ class SimpleDialogOption extends StatelessWidget { /// case Department.state: /// // ... /// break; +/// case null: +/// // dialog dismissed +/// break; /// } /// } /// ``` diff --git a/packages/flutter/lib/src/material/navigation_rail.dart b/packages/flutter/lib/src/material/navigation_rail.dart index abf939c590..d5f12f76f1 100644 --- a/packages/flutter/lib/src/material/navigation_rail.dart +++ b/packages/flutter/lib/src/material/navigation_rail.dart @@ -16,9 +16,6 @@ import 'navigation_rail_theme.dart'; import 'theme.dart'; import 'theme_data.dart'; -// Examples can assume: -// // @dart = 2.9 - /// A material widget that is meant to be displayed at the left or right of an /// app to navigate between a small number of views, typically between three and /// five. @@ -41,7 +38,7 @@ import 'theme_data.dart'; /// [https://github.com/flutter/samples/blob/master/experimental/web_dashboard/lib/src/widgets/third_party/adaptive_scaffold.dart] /// for an example. /// -/// {@tool dartpad --template=stateful_widget_material_no_null_safety} +/// {@tool dartpad --template=stateful_widget_material} /// /// This example shows a [NavigationRail] used within a Scaffold with 3 /// [NavigationRailDestination]s. The main content is separated by a divider @@ -350,12 +347,12 @@ class NavigationRail extends StatefulWidget { /// final Animation animation = NavigationRail.extendedAnimation(context); /// return AnimatedBuilder( /// animation: animation, - /// builder: (BuildContext context, Widget child) { + /// builder: (BuildContext context, Widget? child) { /// // The extended fab has a shorter height than the regular fab. /// return Container( /// height: 56, /// padding: EdgeInsets.symmetric( - /// vertical: lerpDouble(0, 6, animation.value), + /// vertical: lerpDouble(0, 6, animation.value)!, /// ), /// child: animation.value == 0 /// ? FloatingActionButton( diff --git a/packages/flutter/lib/src/material/reorderable_list.dart b/packages/flutter/lib/src/material/reorderable_list.dart index 45a0a261f5..8e3ea83392 100644 --- a/packages/flutter/lib/src/material/reorderable_list.dart +++ b/packages/flutter/lib/src/material/reorderable_list.dart @@ -12,7 +12,6 @@ import 'material.dart'; import 'material_localizations.dart'; // Examples can assume: -// // @dart = 2.9 // class MyDataObject { } /// The callback used by [ReorderableListView] to move an item to a new @@ -60,7 +59,7 @@ typedef ReorderCallback = void Function(int oldIndex, int newIndex); /// The [onReorder] parameter is required and will be called when a child /// widget is dragged to a new position. /// -/// {@tool dartpad --template=stateful_widget_scaffold_no_null_safety} +/// {@tool dartpad --template=stateful_widget_scaffold} /// /// ```dart /// List _list = List.generate(5, (i) => "${i}"); diff --git a/packages/flutter/lib/src/material/scaffold.dart b/packages/flutter/lib/src/material/scaffold.dart index 2d428f6e2c..e0560cee6f 100644 --- a/packages/flutter/lib/src/material/scaffold.dart +++ b/packages/flutter/lib/src/material/scaffold.dart @@ -30,12 +30,11 @@ import 'theme.dart'; import 'theme_data.dart'; // Examples can assume: -// // @dart = 2.9 -// TabController tabController; +// late TabController tabController; // void setState(VoidCallback fn) { } -// String appBarTitle; -// int tabCount; -// TickerProvider tickerProvider; +// late String appBarTitle; +// late int tabCount; +// late TickerProvider tickerProvider; const FloatingActionButtonLocation _kDefaultFloatingActionButtonLocation = FloatingActionButtonLocation.endFloat; const FloatingActionButtonAnimator _kDefaultFloatingActionButtonAnimator = FloatingActionButtonAnimator.scaling; @@ -69,7 +68,7 @@ enum _ScaffoldSlot { /// [BuildContext] via [ScaffoldMessenger.of] and use the /// [ScaffoldMessengerState.showSnackBar] function. /// -/// {@tool dartpad --template=stateless_widget_scaffold_center_no_null_safety} +/// {@tool dartpad --template=stateless_widget_scaffold_center} /// /// Here is an example of showing a [SnackBar] when the user presses a button. /// @@ -112,7 +111,7 @@ class ScaffoldMessenger extends StatefulWidget { /// The state from the closest instance of this class that encloses the given /// context. /// - /// {@tool dartpad --template=stateless_widget_scaffold_center_no_null_safety} + /// {@tool dartpad --template=stateless_widget_scaffold_center} /// Typical usage of the [ScaffoldMessenger.of] function is to call it in /// response to a user gesture or an application state change. /// @@ -138,7 +137,7 @@ class ScaffoldMessenger extends StatefulWidget { /// function. The [MaterialApp.scaffoldMessengerKey] refers to the root /// ScaffoldMessenger that is provided by default. /// - /// {@tool dartpad --template=freeform_no_null_safety} + /// {@tool dartpad --template=freeform} /// Sometimes [SnackBar]s are produced by code that doesn't have ready access /// to a valid [BuildContext]. One such example of this is when you show a /// SnackBar from a method outside of the `build` function. In these @@ -166,7 +165,7 @@ class ScaffoldMessenger extends StatefulWidget { /// _counter++; /// }); /// if (_counter % 10 == 0) { - /// _scaffoldMessengerKey.currentState.showSnackBar(const SnackBar( + /// _scaffoldMessengerKey.currentState!.showSnackBar(const SnackBar( /// content: Text('A multiple of ten!'), /// )); /// } @@ -304,7 +303,7 @@ class ScaffoldMessengerState extends State with TickerProvide /// See [ScaffoldMessenger.of] for information about how to obtain the /// [ScaffoldMessengerState]. /// - /// {@tool dartpad --template=stateless_widget_scaffold_center_no_null_safety} + /// {@tool dartpad --template=stateless_widget_scaffold_center} /// /// Here is an example of showing a [SnackBar] when the user presses a button. /// @@ -1259,7 +1258,7 @@ class _FloatingActionButtonTransitionState extends State<_FloatingActionButtonTr /// [ScaffoldState] for the current [BuildContext] via [Scaffold.of] and use the /// [ScaffoldState.showBottomSheet] function. /// -/// {@tool dartpad --template=stateful_widget_material_no_null_safety} +/// {@tool dartpad --template=stateful_widget_material} /// This example shows a [Scaffold] with a [body] and [FloatingActionButton]. /// The [body] is a [Text] placed in a [Center] in order to center the text /// within the [Scaffold]. The [FloatingActionButton] is connected to a @@ -1288,7 +1287,7 @@ class _FloatingActionButtonTransitionState extends State<_FloatingActionButtonTr /// ``` /// {@end-tool} /// -/// {@tool dartpad --template=stateful_widget_material_no_null_safety} +/// {@tool dartpad --template=stateful_widget_material} /// This example shows a [Scaffold] with a blueGrey [backgroundColor], [body] /// and [FloatingActionButton]. The [body] is a [Text] placed in a [Center] in /// order to center the text within the [Scaffold]. The [FloatingActionButton] @@ -1318,7 +1317,7 @@ class _FloatingActionButtonTransitionState extends State<_FloatingActionButtonTr /// ``` /// {@end-tool} /// -/// {@tool dartpad --template=stateful_widget_material_no_null_safety} +/// {@tool dartpad --template=stateful_widget_material} /// This example shows a [Scaffold] with an [AppBar], a [BottomAppBar] and a /// [FloatingActionButton]. The [body] is a [Text] placed in a [Center] in order /// to center the text within the [Scaffold]. The [FloatingActionButton] is @@ -1560,7 +1559,7 @@ class Scaffold extends StatefulWidget { /// /// To close the drawer, use [Navigator.pop]. /// - /// {@tool dartpad --template=stateful_widget_material_no_null_safety} + /// {@tool dartpad --template=stateful_widget_material} /// To disable the drawer edge swipe, set the /// [Scaffold.drawerEnableOpenDragGesture] to false. Then, use /// [ScaffoldState.openDrawer] to open the drawer and [Navigator.pop] to close @@ -1570,7 +1569,7 @@ class Scaffold extends StatefulWidget { /// final GlobalKey _scaffoldKey = GlobalKey(); /// /// void _openDrawer() { - /// _scaffoldKey.currentState.openDrawer(); + /// _scaffoldKey.currentState!.openDrawer(); /// } /// /// void _closeDrawer() { @@ -1623,7 +1622,7 @@ class Scaffold extends StatefulWidget { /// /// To close the drawer, use [Navigator.pop]. /// - /// {@tool dartpad --template=stateful_widget_material_no_null_safety} + /// {@tool dartpad --template=stateful_widget_material} /// To disable the drawer edge swipe, set the /// [Scaffold.endDrawerEnableOpenDragGesture] to false. Then, use /// [ScaffoldState.openEndDrawer] to open the drawer and [Navigator.pop] to @@ -1633,7 +1632,7 @@ class Scaffold extends StatefulWidget { /// final GlobalKey _scaffoldKey = GlobalKey(); /// /// void _openEndDrawer() { - /// _scaffoldKey.currentState.openEndDrawer(); + /// _scaffoldKey.currentState!.openEndDrawer(); /// } /// /// void _closeEndDrawer() { @@ -1790,7 +1789,7 @@ class Scaffold extends StatefulWidget { /// If no instance of this class encloses the given context, will cause an /// assert in debug mode, and throw an exception in release mode. /// - /// {@tool dartpad --template=freeform_no_null_safety} + /// {@tool dartpad --template=freeform} /// Typical usage of the [Scaffold.of] function is to call it from within the /// `build` method of a child of a [Scaffold]. /// @@ -1861,7 +1860,7 @@ class Scaffold extends StatefulWidget { /// ``` /// {@end-tool} /// - /// {@tool dartpad --template=stateless_widget_material_no_null_safety} + /// {@tool dartpad --template=stateless_widget_material} /// When the [Scaffold] is actually created in the same `build` function, the /// `context` argument to the `build` function can't be used to find the /// [Scaffold] (since it's "above" the widget being returned in the widget @@ -2173,7 +2172,7 @@ class ScaffoldState extends State with TickerProviderStateMixin { /// See [ScaffoldMessenger.of] for information about how to obtain the /// [ScaffoldMessengerState]. /// - /// {@tool dartpad --template=stateless_widget_scaffold_center_no_null_safety} + /// {@tool dartpad --template=stateless_widget_scaffold_center} /// /// Here is an example of showing a [SnackBar] when the user presses a button. /// @@ -2547,7 +2546,7 @@ class ScaffoldState extends State with TickerProviderStateMixin { /// of the app. Modal bottom sheets can be created and displayed with the /// [showModalBottomSheet] function. /// - /// {@tool dartpad --template=stateless_widget_scaffold_no_null_safety} + /// {@tool dartpad --template=stateless_widget_scaffold} /// /// This example demonstrates how to use `showBottomSheet` to display a /// bottom sheet when a user taps a button. It also demonstrates how to diff --git a/packages/flutter/lib/src/material/tab_controller.dart b/packages/flutter/lib/src/material/tab_controller.dart index 70fef1bc40..1b79613651 100644 --- a/packages/flutter/lib/src/material/tab_controller.dart +++ b/packages/flutter/lib/src/material/tab_controller.dart @@ -9,8 +9,7 @@ import 'package:flutter/widgets.dart'; import 'constants.dart'; // Examples can assume: -// // @dart = 2.9 -// BuildContext context; +// late BuildContext context; /// Coordinates tab selection between a [TabBar] and a [TabBarView]. /// @@ -33,7 +32,7 @@ import 'constants.dart'; /// /// ```dart /// class MyTabbedPage extends StatefulWidget { -/// const MyTabbedPage({ Key key }) : super(key: key); +/// const MyTabbedPage({ Key? key }) : super(key: key); /// @override /// _MyTabbedPageState createState() => _MyTabbedPageState(); /// } @@ -44,7 +43,7 @@ import 'constants.dart'; /// Tab(text: 'RIGHT'), /// ]; /// -/// TabController _tabController; +/// late TabController _tabController; /// /// @override /// void initState() { @@ -70,7 +69,7 @@ import 'constants.dart'; /// body: TabBarView( /// controller: _tabController, /// children: myTabs.map((Tab tab) { -/// final String label = tab.text.toLowerCase(); +/// final String label = tab.text!.toLowerCase(); /// return Center( /// child: Text( /// 'This is the $label tab', @@ -85,7 +84,7 @@ import 'constants.dart'; /// ``` /// {@end-tool} /// -/// {@tool dartpad --template=stateless_widget_material_no_null_safety} +/// {@tool dartpad --template=stateless_widget_material} /// /// This example shows how to listen to page updates in [TabBar] and [TabBarView] /// when using [DefaultTabController]. @@ -106,7 +105,7 @@ import 'constants.dart'; /// // closest DefaultTabController. /// child: Builder( /// builder: (BuildContext context) { -/// final TabController tabController = DefaultTabController.of(context); +/// final TabController tabController = DefaultTabController.of(context)!; /// tabController.addListener(() { /// if (!tabController.indexIsChanging) { /// // Your code goes here. @@ -123,7 +122,7 @@ import 'constants.dart'; /// children: tabs.map((Tab tab){ /// return Center( /// child: Text( -/// tab.text + ' Tab', +/// tab.text! + ' Tab', /// style: Theme.of(context).textTheme.headline5, /// ), /// ); @@ -405,7 +404,7 @@ class DefaultTabController extends StatefulWidget { /// Typical usage is as follows: /// /// ```dart - /// TabController controller = DefaultTabController.of(context); + /// TabController controller = DefaultTabController.of(context)!; /// ``` /// {@end-tool} static TabController? of(BuildContext context) { diff --git a/packages/flutter/lib/src/material/text_field.dart b/packages/flutter/lib/src/material/text_field.dart index 367f41aa12..3bc1393b7a 100644 --- a/packages/flutter/lib/src/material/text_field.dart +++ b/packages/flutter/lib/src/material/text_field.dart @@ -25,9 +25,6 @@ import 'theme.dart'; export 'package:flutter/services.dart' show TextInputType, TextInputAction, TextCapitalization, SmartQuotesType, SmartDashesType; -// Examples can assume: -// // @dart = 2.9 - /// Signature for the [TextField.buildCounter] callback. typedef InputCounterWidgetBuilder = Widget? Function( /// The build context for the TextField. @@ -201,13 +198,13 @@ class _TextFieldSelectionGestureDetectorBuilder extends TextSelectionGestureDete /// callback. This callback is applied to the text field's current value when /// the user finishes editing. /// -/// {@tool dartpad --template=stateful_widget_material_no_null_safety} +/// {@tool dartpad --template=stateful_widget_material} /// /// This sample shows how to get a value from a TextField via the [onSubmitted] /// callback. /// /// ```dart -/// TextEditingController _controller; +/// late TextEditingController _controller; /// /// void initState() { /// super.initState(); @@ -769,9 +766,9 @@ class TextField extends StatefulWidget { /// Widget counter( /// BuildContext context, /// { - /// int currentLength, - /// int maxLength, - /// bool isFocused, + /// required int currentLength, + /// required int? maxLength, + /// required bool isFocused, /// } /// ) { /// return Text( diff --git a/packages/flutter/lib/src/material/text_theme.dart b/packages/flutter/lib/src/material/text_theme.dart index 3268620309..947ed76fbd 100644 --- a/packages/flutter/lib/src/material/text_theme.dart +++ b/packages/flutter/lib/src/material/text_theme.dart @@ -7,9 +7,6 @@ import 'package:flutter/painting.dart'; import 'typography.dart'; -// Examples can assume: -// // @dart = 2.9 - /// Material design text theme. /// /// Definitions for the various typographical styles found in Material Design @@ -356,7 +353,7 @@ class TextTheme with Diagnosticable { /// /// A Widget that sets the ambient theme's title text color for its /// /// descendants, while leaving other ambient theme attributes alone. /// class TitleColorThemeCopy extends StatelessWidget { - /// TitleColorThemeCopy({Key key, this.child, this.titleColor}) : super(key: key); + /// TitleColorThemeCopy({Key? key, required this.child, required this.titleColor}) : super(key: key); /// /// final Color titleColor; /// final Widget child; @@ -367,7 +364,7 @@ class TextTheme with Diagnosticable { /// return Theme( /// data: theme.copyWith( /// textTheme: theme.textTheme.copyWith( - /// headline6: theme.textTheme.headline6.copyWith( + /// headline6: theme.textTheme.headline6!.copyWith( /// color: titleColor, /// ), /// ), @@ -497,7 +494,7 @@ class TextTheme with Diagnosticable { /// /// A Widget that sets the ambient theme's title text color for its /// /// descendants, while leaving other ambient theme attributes alone. /// class TitleColorTheme extends StatelessWidget { - /// TitleColorTheme({Key key, this.child, this.titleColor}) : super(key: key); + /// TitleColorTheme({Key? key, required this.child, required this.titleColor}) : super(key: key); /// /// final Color titleColor; /// final Widget child; diff --git a/packages/flutter/lib/src/material/time_picker.dart b/packages/flutter/lib/src/material/time_picker.dart index 54e0021e3b..ac55f01555 100644 --- a/packages/flutter/lib/src/material/time_picker.dart +++ b/packages/flutter/lib/src/material/time_picker.dart @@ -34,8 +34,7 @@ import 'time.dart'; import 'time_picker_theme.dart'; // Examples can assume: -// // @dart = 2.9 -// BuildContext context; +// late BuildContext context; const Duration _kDialogSizeAnimationDuration = Duration(milliseconds: 200); const Duration _kDialAnimateDuration = Duration(milliseconds: 200); @@ -2127,7 +2126,7 @@ class _TimePickerDialogState extends State<_TimePickerDialog> { /// Show a dialog with [initialTime] equal to the current time. /// /// ```dart -/// Future selectedTime = showTimePicker( +/// Future selectedTime = showTimePicker( /// initialTime: TimeOfDay.now(), /// context: context, /// ); @@ -2156,13 +2155,13 @@ class _TimePickerDialogState extends State<_TimePickerDialog> { /// Show a dialog with the text direction overridden to be [TextDirection.rtl]. /// /// ```dart -/// Future selectedTimeRTL = showTimePicker( +/// Future selectedTimeRTL = showTimePicker( /// context: context, /// initialTime: TimeOfDay.now(), -/// builder: (BuildContext context, Widget child) { +/// builder: (BuildContext context, Widget? child) { /// return Directionality( /// textDirection: TextDirection.rtl, -/// child: child, +/// child: child!, /// ); /// }, /// ); @@ -2173,13 +2172,13 @@ class _TimePickerDialogState extends State<_TimePickerDialog> { /// Show a dialog with time unconditionally displayed in 24 hour format. /// /// ```dart -/// Future selectedTime24Hour = showTimePicker( +/// Future selectedTime24Hour = showTimePicker( /// context: context, /// initialTime: TimeOfDay(hour: 10, minute: 47), -/// builder: (BuildContext context, Widget child) { +/// builder: (BuildContext context, Widget? child) { /// return MediaQuery( /// data: MediaQuery.of(context).copyWith(alwaysUse24HourFormat: true), -/// child: child, +/// child: child!, /// ); /// }, /// );