alibaba / fish-redux

An assembled flutter application framework.
https://github.com/alibaba/fish-redux
Apache License 2.0
7.33k stars 843 forks source link

路由的问题 #651

Open huangred opened 4 years ago

huangred commented 4 years ago

在createApp()中指定了pages,但在MaterialApp中未指定routes,当从页面A=>B=>C=>D的时候,如果在D页面使用 pushNamedAndRemoveUntil(‘PageC’, ModalRoute.withName(‘PageB’), arguments: arguments)时,ModalRoute.withName(‘PageB’)始终为false,导致PageC成为route中为一个的一个page,在后退就黑屏了。

fish-redux能不能routes.buildPage的时候处理一下MaterialApp中的routes,使ModalRoute.withName可以返回正确的值

owoeo commented 4 years ago

在createApp()中指定了pages,但在MaterialApp中未指定routes,当从页面A=>B=>C=>D的时候,如果在D页面使用 pushNamedAndRemoveUntil(‘PageC’, ModalRoute.withName(‘PageB’), arguments: arguments)时,ModalRoute.withName(‘PageB’)始终为false,导致PageC成为route中为一个的一个page,在后退就黑屏了。

fish-redux能不能routes.buildPage的时候处理一下MaterialApp中的routes,使ModalRoute.withName可以返回正确的值

官方的example写法中其实是少传了一个参数的

  return MaterialApp(
    title: 'Fluro',
    debugShowCheckedModeBanner: false,
    theme: ThemeData(
      primarySwatch: Colors.blue,
    ),
    home: routes.buildPage('todo_list', null),
    onGenerateRoute: (RouteSettings settings) {
      return MaterialPageRoute<Object>(builder: (BuildContext context) {
        return routes.buildPage(settings.name, settings.arguments);
      });
    },
  );

改为

  return MaterialApp(
    title: 'Fluro',
    debugShowCheckedModeBanner: false,
    theme: ThemeData(
      primarySwatch: Colors.blue,
    ),
    home: routes.buildPage('todo_list', null),
    onGenerateRoute: (RouteSettings settings) {
      return MaterialPageRoute<Object>(builder: (BuildContext context) {
        return routes.buildPage(settings.name, settings.arguments);
      },
      settings: settings);
    },
  );

这个时候调用pushNamedAndRemoveUntil应该就可以正常