Skip to content

Commit 11d21e0

Browse files
authored
Add @pragma('vm:entry-point') to RestorableRouteBuilder arguments (#118738)
1 parent d07b88e commit 11d21e0

22 files changed

+29
-5
lines changed

examples/api/lib/cupertino/route/show_cupertino_dialog.0.dart

+1
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ class CupertinoDialogExample extends StatelessWidget {
4141
);
4242
}
4343

44+
@pragma('vm:entry-point')
4445
static Route<Object?> _dialogBuilder(
4546
BuildContext context, Object? arguments) {
4647
return CupertinoDialogRoute<void>(

examples/api/lib/cupertino/route/show_cupertino_modal_popup.0.dart

+1
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ class ModalPopupExample extends StatelessWidget {
4141
);
4242
}
4343

44+
@pragma('vm:entry-point')
4445
static Route<void> _modalBuilder(BuildContext context, Object? arguments) {
4546
return CupertinoModalPopupRoute<void>(
4647
builder: (BuildContext context) {

examples/api/lib/material/date_picker/show_date_picker.0.dart

+1
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ class _MyStatefulWidgetState extends State<MyStatefulWidget>
5353
},
5454
);
5555

56+
@pragma('vm:entry-point')
5657
static Route<DateTime> _datePickerRoute(
5758
BuildContext context,
5859
Object? arguments,

examples/api/lib/material/date_picker/show_date_range_picker.0.dart

+1
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ class _MyStatefulWidgetState extends State<MyStatefulWidget>
7474
_restorableDateRangePickerRouteFuture, 'date_picker_route_future');
7575
}
7676

77+
@pragma('vm:entry-point')
7778
static Route<DateTimeRange?> _dateRangePickerRoute(
7879
BuildContext context,
7980
Object? arguments,

examples/api/lib/material/dialog/show_dialog.2.dart

+1
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ class DialogExample extends StatelessWidget {
3838
);
3939
}
4040

41+
@pragma('vm:entry-point')
4142
static Route<Object?> _dialogBuilder(
4243
BuildContext context, Object? arguments) {
4344
return DialogRoute<void>(

examples/api/lib/widgets/navigator/navigator.restorable_push.0.dart

+1
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ class MyStatefulWidget extends StatefulWidget {
3030
}
3131

3232
class _MyStatefulWidgetState extends State<MyStatefulWidget> {
33+
@pragma('vm:entry-point')
3334
static Route<void> _myRouteBuilder(BuildContext context, Object? arguments) {
3435
return MaterialPageRoute<void>(
3536
builder: (BuildContext context) => const MyStatefulWidget(),

examples/api/lib/widgets/navigator/navigator.restorable_push_and_remove_until.0.dart

+1
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ class MyStatefulWidget extends StatefulWidget {
3030
}
3131

3232
class _MyStatefulWidgetState extends State<MyStatefulWidget> {
33+
@pragma('vm:entry-point')
3334
static Route<void> _myRouteBuilder(BuildContext context, Object? arguments) {
3435
return MaterialPageRoute<void>(
3536
builder: (BuildContext context) => const MyStatefulWidget(),

examples/api/lib/widgets/navigator/navigator.restorable_push_replacement.0.dart

+1
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ class MyStatefulWidget extends StatefulWidget {
3030
}
3131

3232
class _MyStatefulWidgetState extends State<MyStatefulWidget> {
33+
@pragma('vm:entry-point')
3334
static Route<void> _myRouteBuilder(BuildContext context, Object? arguments) {
3435
return MaterialPageRoute<void>(
3536
builder: (BuildContext context) => const MyStatefulWidget(),

examples/api/lib/widgets/navigator/navigator_state.restorable_push.0.dart

+1
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ class MyStatefulWidget extends StatefulWidget {
3030
}
3131

3232
class _MyStatefulWidgetState extends State<MyStatefulWidget> {
33+
@pragma('vm:entry-point')
3334
static Route<void> _myRouteBuilder(BuildContext context, Object? arguments) {
3435
return MaterialPageRoute<void>(
3536
builder: (BuildContext context) => const MyStatefulWidget(),

examples/api/lib/widgets/navigator/navigator_state.restorable_push_and_remove_until.0.dart

+1
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ class MyStatefulWidget extends StatefulWidget {
3030
}
3131

3232
class _MyStatefulWidgetState extends State<MyStatefulWidget> {
33+
@pragma('vm:entry-point')
3334
static Route<void> _myRouteBuilder(BuildContext context, Object? arguments) {
3435
return MaterialPageRoute<void>(
3536
builder: (BuildContext context) => const MyStatefulWidget(),

examples/api/lib/widgets/navigator/navigator_state.restorable_push_replacement.0.dart

+1
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ class MyStatefulWidget extends StatefulWidget {
3030
}
3131

3232
class _MyStatefulWidgetState extends State<MyStatefulWidget> {
33+
@pragma('vm:entry-point')
3334
static Route<void> _myRouteBuilder(BuildContext context, Object? arguments) {
3435
return MaterialPageRoute<void>(
3536
builder: (BuildContext context) => const MyStatefulWidget(),

examples/api/lib/widgets/navigator/restorable_route_future.0.dart

+1
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ class _MyHomeState extends State<MyHome> with RestorationMixin {
7373

7474
// A static `RestorableRouteBuilder` that can re-create the route during
7575
// state restoration.
76+
@pragma('vm:entry-point')
7677
static Route<int> _counterRouteBuilder(
7778
BuildContext context, Object? arguments) {
7879
return MaterialPageRoute<int>(

examples/api/lib/widgets/routes/show_general_dialog.0.dart

+1
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ class GeneralDialogExample extends StatelessWidget {
3838
);
3939
}
4040

41+
@pragma('vm:entry-point')
4142
static Route<Object?> _dialogBuilder(
4243
BuildContext context, Object? arguments) {
4344
return RawDialogRoute<void>(

packages/flutter/lib/src/widgets/navigator.dart

+7-5
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,9 @@ typedef RouteListFactory = List<Route<dynamic>> Function(NavigatorState navigato
5555
///
5656
/// Used by the restorable methods of the [Navigator] that add anonymous routes
5757
/// (e.g. [NavigatorState.restorablePush]). For this use case, the
58-
/// [RestorableRouteBuilder] must be static function as the [Navigator] will
59-
/// call it again during state restoration to re-create the route.
58+
/// [RestorableRouteBuilder] must be static function annotated with
59+
/// `@pragma('vm:entry-point')`. The [Navigator] will call it again during
60+
/// state restoration to re-create the route.
6061
typedef RestorableRouteBuilder<T> = Route<T> Function(BuildContext context, Object? arguments);
6162

6263
/// Signature for the [Navigator.popUntil] predicate argument.
@@ -2108,9 +2109,10 @@ class Navigator extends StatefulWidget {
21082109
/// {@macro flutter.widgets.navigator.push}
21092110
///
21102111
/// {@template flutter.widgets.Navigator.restorablePush}
2111-
/// The method takes a _static_ [RestorableRouteBuilder] as argument, which
2112-
/// must instantiate and return a new [Route] object that will be added to
2113-
/// the navigator. The provided `arguments` object is passed to the
2112+
/// The method takes a [RestorableRouteBuilder] as argument, which must be a
2113+
/// _static_ function annotated with `@pragma('vm:entry-point')`. It must
2114+
/// instantiate and return a new [Route] object that will be added to the
2115+
/// navigator. The provided `arguments` object is passed to the
21142116
/// `routeBuilder`. The navigator calls the static `routeBuilder` function
21152117
/// again during state restoration to re-create the route object.
21162118
///

packages/flutter/test/cupertino/dialog_test.dart

+1
Original file line numberDiff line numberDiff line change
@@ -1566,6 +1566,7 @@ Widget createAppWithCenteredButton(Widget child) {
15661566
class _RestorableDialogTestWidget extends StatelessWidget {
15671567
const _RestorableDialogTestWidget();
15681568

1569+
@pragma('vm:entry-point')
15691570
static Route<Object?> _dialogBuilder(BuildContext context, Object? arguments) {
15701571
return CupertinoDialogRoute<void>(
15711572
context: context,

packages/flutter/test/cupertino/route_test.dart

+1
Original file line numberDiff line numberDiff line change
@@ -2314,6 +2314,7 @@ class _TestPostRouteCancelState extends State<_TestPostRouteCancel> {
23142314
class _RestorableModalTestWidget extends StatelessWidget {
23152315
const _RestorableModalTestWidget();
23162316

2317+
@pragma('vm:entry-point')
23172318
static Route<void> _modalBuilder(BuildContext context, Object? arguments) {
23182319
return CupertinoModalPopupRoute<void>(
23192320
builder: (BuildContext context) {

packages/flutter/test/material/date_picker_test.dart

+1
Original file line numberDiff line numberDiff line change
@@ -1412,6 +1412,7 @@ class _RestorableDatePickerDialogTestWidgetState extends State<_RestorableDatePi
14121412
}
14131413
}
14141414

1415+
@pragma('vm:entry-point')
14151416
static Route<DateTime> _datePickerRoute(
14161417
BuildContext context,
14171418
Object? arguments,

packages/flutter/test/material/date_range_picker_test.dart

+1
Original file line numberDiff line numberDiff line change
@@ -1150,6 +1150,7 @@ class _RestorableDateRangePickerDialogTestWidgetState extends State<_RestorableD
11501150
}
11511151
}
11521152

1153+
@pragma('vm:entry-point')
11531154
static Route<DateTimeRange?> _dateRangePickerRoute(
11541155
BuildContext context,
11551156
Object? arguments,

packages/flutter/test/material/dialog_test.dart

+1
Original file line numberDiff line numberDiff line change
@@ -2710,6 +2710,7 @@ void main() {
27102710
class _RestorableDialogTestWidget extends StatelessWidget {
27112711
const _RestorableDialogTestWidget();
27122712

2713+
@pragma('vm:entry-point')
27132714
static Route<Object?> _materialDialogBuilder(BuildContext context, Object? arguments) {
27142715
return DialogRoute<void>(
27152716
context: context,

packages/flutter/test/material/time_picker_test.dart

+1
Original file line numberDiff line numberDiff line change
@@ -1628,6 +1628,7 @@ class _TimePickerLauncherState extends State<_TimePickerLauncher> with Restorati
16281628
},
16291629
);
16301630

1631+
@pragma('vm:entry-point')
16311632
static Route<TimeOfDay> _timePickerRoute(
16321633
BuildContext context,
16331634
Object? arguments,

packages/flutter/test/widgets/navigator_restoration_test.dart

+2
Original file line numberDiff line numberDiff line change
@@ -1015,6 +1015,7 @@ void main() {
10151015
});
10161016
}
10171017

1018+
@pragma('vm:entry-point')
10181019
Route<void> _routeBuilder(BuildContext context, Object? arguments) {
10191020
return MaterialPageRoute<void>(
10201021
builder: (BuildContext context) {
@@ -1025,6 +1026,7 @@ Route<void> _routeBuilder(BuildContext context, Object? arguments) {
10251026
);
10261027
}
10271028

1029+
@pragma('vm:entry-point')
10281030
Route<void> _routeFutureBuilder(BuildContext context, Object? arguments) {
10291031
return MaterialPageRoute<void>(
10301032
builder: (BuildContext context) {

packages/flutter/test/widgets/routes_test.dart

+1
Original file line numberDiff line numberDiff line change
@@ -2153,6 +2153,7 @@ class WidgetWithNoLocalHistoryState extends State<WidgetWithNoLocalHistory> {
21532153
class _RestorableDialogTestWidget extends StatelessWidget {
21542154
const _RestorableDialogTestWidget();
21552155

2156+
@pragma('vm:entry-point')
21562157
static Route<Object?> _dialogBuilder(BuildContext context, Object? arguments) {
21572158
return RawDialogRoute<void>(
21582159
pageBuilder: (

0 commit comments

Comments
 (0)