我正试图打开一个页面
OpenContainer
,并通过
RouteSettings
带有名称。
有没有办法从go_router包更新router.location?
这就是我使用OpenContainer的方式,OpenBuilder会返回我传递的页面。
class _OpenContainerWrapper extends StatelessWidget {
const _OpenContainerWrapper({
required this.closedBuilder,
required this.transitionType,
required this.onClosed,
required this.page,
this.routeSettings,
this.borderRadius = 4,
});
final CloseContainerBuilder closedBuilder;
final ContainerTransitionType transitionType;
final ClosedCallback<bool?> onClosed;
final Widget page;
final RouteSettings? routeSettings;
final double borderRadius;
@override
Widget build(BuildContext context) {
return OpenContainer<bool>(
closedElevation: 0,
closedColor: Colors.transparent,
middleColor: Colors.transparent,
openColor: Colors.transparent,
routeSettings: routeSettings,
closedShape: RoundedRectangleBorder(
borderRadius: BorderRadius.all(
Radius.circular(borderRadius),
),
),
transitionType: transitionType,
openBuilder: (BuildContext context, VoidCallback _) {
return page;
},
onClosed: onClosed,
tappable: false,
closedBuilder: closedBuilder,
);
}
}
这就是我如何使用包装器作为打开我传递的页面的按钮。
return _OpenContainerWrapper(
routeSettings: const RouteSettings(
name: 'categories',
),
page: const CategoryPage(),
transitionType: ContainerTransitionType.fade,
onClosed: (_) {},
closedBuilder: (_, func) {
return WidgetWithBackground(
onTap: func,
backgroundColor: textColor.withOpacity(
0.25,
),
// More UI Code here relevant to the button.
这可能是相关的:
https://github.com/flutter/flutter/issues/51399