flutter-Could not find a generator for route

最近在研究flutter这个东西,在做路由跳转的时候遇到点小小的问题,动态路由跳转没有任何问题,今天配置好的路由怎么点击都没有反应,度娘了很久没有头绪...最终在调试信息中找到了突破口。

flutter路由的配置

  • 在主入口配置路由信息
    routes这个配置信息可以单独拿到一个router.dart的文件中去
// router.dart
const pageA = "/a";
const pageB = "/b";

var RoutePath = {
  "$pageA": (context) => PageA(),
  "$pageB": (context) => PageB(),
};

// main.dart
routers: RoutePath
void main() => runApp(new MainRouter());
class MainRouter extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      initialRoute: '/', // 初始化路由
      routes: <String, WidgetBuilder>{ // 静态路由配置信息
        '/': (BuildContext context) => new MyApp2(),
        '/layout': (BuildContext context) => new Layout(),
      },
    );
  }
}
  • 配置好路由后,进行路由跳转
    • 动态路由跳转
      动态路由跳转通过Navigation这个类调用push方法,然后通过MaterialPageRoute返回一个页面。
Navigator.of(context).push(new MaterialPageRoute(
     builder: (context) {
           return Layout();
     }
));
  • 静态路由跳转
Navigator.of(context).pushName('/layout'); // routerName
or
Navigator.pushName(context, '/layout'); // routerName

but...

问题

在练习路由跳转时,静态路由死活跳不过去!也不清楚flutter的调试,所以度娘也没有什么结果,别人按照官网的跳转就能跳过去。在这个时候就需要看编辑器的控制台了,在点击按钮触发路由跳转的时候,调试控制台会报错!!Could not find a generator for route so,再次度娘下,发现是页面中有多个new MaterialApp() 用new Scaffold替换就OK了。

image.png

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容