-
Notifications
You must be signed in to change notification settings - Fork 29.8k
Closed
Labels
P0Critical issues such as a build break or regressionCritical issues such as a build break or regressionf: routesNavigator, Router, and related APIs.Navigator, Router, and related APIs.frameworkflutter/packages/flutter repository. See also f: labels.flutter/packages/flutter repository. See also f: labels.
Description
class _KeepsStateTestWidgetState extends State<KeepsStateTestWidget> {
String _subpage = 'subpage';
@override
Widget build(BuildContext context) {
return CupertinoApp(
home: Navigator(
key: widget.navigatorKey,
pages: <Page<void>>[
const CupertinoPage<void>(builder: (BuildContext context) => Text('home')),
if (_subpage != null) CupertinoPage<void>((BuildContext context) => Text(_subpage)),
],
onPopPage: (Route<dynamic> route, dynamic result) {
if (!route.didPop(result)) {
return false;
}
setState(() {
_subpage = null;
});
return true;
},
),
);
}
}When the second page is transitioning out, _subpage is set to null. Because the Navigator is rebuild, it would rebuild all its routes as well with that the builder of the second executes again, rebuilding itself with _subpage == null, which is not what people want.
Metadata
Metadata
Assignees
Labels
P0Critical issues such as a build break or regressionCritical issues such as a build break or regressionf: routesNavigator, Router, and related APIs.Navigator, Router, and related APIs.frameworkflutter/packages/flutter repository. See also f: labels.flutter/packages/flutter repository. See also f: labels.