TypeError(类型'(Route< dynamic>)=>bool'在类型转换中不是类型'Route '的子类型< Object>)Flutter

n3h0vuf2  于 2023-03-04  发布在  Flutter
关注(0)|答案(2)|浏览(134)

在flutter中,我在一个小部件上,并且有注销功能。所以一旦我点击它,我想从小部件树中删除所有其他小部件的示例,并跳到注销小部件上,那么我需要使用什么呢?

TextButton.icon(
  label: const Text('Logout'),
  icon: const Icon(Icons.logout),
  onPressed: () {
    Provider.of<Auth>(context, listen: false).logout();
    Navigator.pushAndRemoveUntil(
      context,
      ModalRoute.withName(AuthScreens.routeName) as Route<Object>,
      (route) => false,
    );
  },
)
ctehm74n

ctehm74n1#

您可能必须使用popUntil

Navigator.popUntil(context, ModalRoute.withName(AuthScreens.routeName))

或者,如果您弹出并推到新页面,则

Navigator.pushAndRemoveUntil<dynamic>(context, MaterialPageRoute<dynamic>(builder: (context)=> NewPage()), ModalRoute.withName(AuthScreens.routeName));

这里,NewPage表示用户注销后需要导航的页面。(例如:RegistrationPage()

twh00eeo

twh00eeo2#

所以我用了错误的方法,基本上,我忽略了它的参数的类型值,**它应该是路由到字符串。

Navigator.pushAndRemoveUntil(
              context,
              MaterialPageRoute(builder: (context) => ProductListingWidget()),
              (route) => false,
            );

有了这个变化我解决了这个问题,你可以比较我以前的代码和这个代码,你会发现它的适当不同.

相关问题