最近在研究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了。
网友评论