我尝试使用导航器2.0 API来完全控制路线。我希望一些页面有透明的背景(例如对话框和底部表单),但仍然表示为导航器中的页面。天真的方式-只是添加一个部分透明的小部件材料页-不工作,较低的页面在过渡动画后变成黑色。
复制的最小代码如下。我希望看到红色方块(UpperPage)在绿色背景(RootPage),但背景变成黑色。导航器1.0 API,如showGeneralDialog,在这种情况下工作得很好,但我不想混合声明性和命令性的方式,因为它很难从单一来源的真理,如块或提供者控制。有没有办法实现这种行为与页面api只?
class RootPage extends StatelessWidget {
const RootPage({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return SizedBox.expand(
child: Container(color: Colors.green),
);
}
}
class UpperPage extends StatelessWidget {
const UpperPage({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Center(
child: Container(
width: 100,
height: 100,
color: Colors.red,
),
);
}
}
class AppRouterDelegate extends RouterDelegate<String> with ChangeNotifier {
@override
Widget build(BuildContext context) {
return Navigator(
pages: const [
MaterialPage(child: RootPage()),
MaterialPage(child: UpperPage()),
],
onPopPage: (route, result) {
return route.didPop(result);
},
);
}
...
}
1条答案
按热度按时间iq0todco1#