简单的flutter路由总结

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了。

猜你喜欢

转载自blog.csdn.net/m0_73016265/article/details/130404904