Muh*_*lah 6 dart flutter flutter-test flutter-layout
我目前正在查看在我的应用程序中使用不同屏幕进行导航,到目前为止我可以成功地从LoginScreen导航到EventsScreen。问题是在 EventsScreen 中有一个按钮,如果单击它应该带我到LoginScreen,这是我拥有的代码。
在我的app.dart文件MaterialApp小部件中,我的路线为

单击时的假日平面按钮不会将我带到“/HolidayScreen”路线。
如何解决[dart] 未定义名称“上下文”?
events_screen.dart
import 'package:flutter/material.dart';
import 'holiday.dart';
class EventsScreen extends StatelessWidget {
Widget build(context) {
return MaterialApp(
home: Scaffold(
backgroundColor: Colors.white,
body: Container(
alignment: Alignment.center,
margin: EdgeInsets.all(20.0),
child: ListView(
children: <Widget>[
Container(margin: EdgeInsets.only(bottom: 20.0)),
eventsButton(),
Container(margin: EdgeInsets.only(bottom: 20.0)),
],
),
),
),
);
}
Widget eventsButton() {
return Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
FlatButton(
color: Colors.red[800],
onPressed: () {},
child: Text(
'Events',
style: new TextStyle(color: Colors.white, fontWeight: FontWeight.normal),
),
),
Container(margin: EdgeInsets.only(right: 20.0)),
FlatButton(
color: Colors.red[800],
child: Text(
'Holidays',
style: new TextStyle(color: Colors.white, fontWeight: FontWeight.normal),
),
onPressed: () {
Navigator.pushNamed(context, "/Holiday");
},
),
Container(margin: EdgeInsets.only(right: 20.0)),
FlatButton(
color: Colors.red[800],
onPressed: () {},
child: Text(
'Flights',
style: new TextStyle(color: Colors.white, fontWeight: FontWeight.normal),
),
),
],
);
}
}
Run Code Online (Sandbox Code Playgroud)
die*_*per 10
简单,只需将 BuildContext 传递到您的eventsButton方法中
Widget build(context) {
return MaterialApp(
home: Scaffold(
backgroundColor: Colors.white,
body: Container(
alignment: Alignment.center,
margin: EdgeInsets.all(20.0),
child: ListView(
children: <Widget>[
Container(margin: EdgeInsets.only(bottom: 20.0)),
eventsButton(context),
Container(margin: EdgeInsets.only(bottom: 20.0)),
],
),
),
),
);
}
Run Code Online (Sandbox Code Playgroud)
并在您的方法中添加一个参数
Widget eventsButton(BuildContext context) {
return Row(
mainAxisAlignment: MainAxisAlignment
//...
Run Code Online (Sandbox Code Playgroud)
更新
并改变这一点:
Navigator.pushNamed(context, "/Holiday");
Run Code Online (Sandbox Code Playgroud)
对此:
Navigator.pushNamed(context, "/HolidayScreen");
Run Code Online (Sandbox Code Playgroud)
因为您的路线名称是 HolidayScreen 而不是 Holiday
让你的方法接受你context作为参数
Widget eventsButton(BuildContext context)
并根据上下文调用它:eventsButton(context),
| 归档时间: |
|
| 查看次数: |
15517 次 |
| 最近记录: |