使用不包含导航器的上下文请求的导航器操作。 (生成器函数不会显示 MainPage())
Navigator operation requested with a context that does not include a Navigator. (Builder function wont display MainPage())
我一按下按钮就收到错误代码 "Navigator operation requested with a context that does not include a Navigator." 我用来导航的代码在 RegisterPage 中,构建器函数应该显示 MainPage。
void main() => runApp(RegisterPage());
class RegisterPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Register Your Account'),
centerTitle: true,
backgroundColor: Colors.green,
),
body: Center(
child: RaisedButton(
onPressed: () {
Navigator.of(context)
.push(
MaterialPageRoute(
builder: (context) => MainPage()
),
);
},
child: Text('Sign in as guest'),
)),
)
);
}
}
class MainPage extends StatefulWidget{
String get title => "Cykla i stockholm";
MapPage createState()=> MapPage();
}
这是因为使用导航器的小部件(RegisterPage
)在小部件树中与创建导航器的小部件(MaterialApp
)处于同一级别
解决方案:
使 RegisterPage
低于 MaterialApp
以便能够使用其 context
:
class RegisterPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Register Your Account'),
centerTitle: true,
backgroundColor: Colors.green,
),
body: Builder(
builder: (ctx)=> Center(//this context here has access to Navigator
child: RaisedButton(
onPressed: () {
Navigator.of(ctx)
.push(
MaterialPageRoute(
builder: (context) => MainPage()
),
);
},
child: Text('Sign in as guest'),
)),
),
)
);
}
}
我一按下按钮就收到错误代码 "Navigator operation requested with a context that does not include a Navigator." 我用来导航的代码在 RegisterPage 中,构建器函数应该显示 MainPage。
void main() => runApp(RegisterPage());
class RegisterPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Register Your Account'),
centerTitle: true,
backgroundColor: Colors.green,
),
body: Center(
child: RaisedButton(
onPressed: () {
Navigator.of(context)
.push(
MaterialPageRoute(
builder: (context) => MainPage()
),
);
},
child: Text('Sign in as guest'),
)),
)
);
}
}
class MainPage extends StatefulWidget{
String get title => "Cykla i stockholm";
MapPage createState()=> MapPage();
}
这是因为使用导航器的小部件(RegisterPage
)在小部件树中与创建导航器的小部件(MaterialApp
)处于同一级别
解决方案:
使 RegisterPage
低于 MaterialApp
以便能够使用其 context
:
class RegisterPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Register Your Account'),
centerTitle: true,
backgroundColor: Colors.green,
),
body: Builder(
builder: (ctx)=> Center(//this context here has access to Navigator
child: RaisedButton(
onPressed: () {
Navigator.of(ctx)
.push(
MaterialPageRoute(
builder: (context) => MainPage()
),
);
},
child: Text('Sign in as guest'),
)),
),
)
);
}
}