导航未定义名称上下文
Navigation Undefined name Context
我目前正在查看在我的应用程序中使用不同屏幕进行导航,到目前为止我可以从 LoginScreen 导航到 EventsScreen 成功。问题是在 EventsScreen 中有一个按钮,如果单击它应该带我到 LoginScreen,这是我的代码。
在我的 events_screen.dart 文件中
在我的 app.dart 文件 MaterialApp 小部件中我有自己的路线作为
单击 Holiday 平面按钮不会将我带到 "/HolidayScreen" 路线。
如何解决 [dart] Undefined name 'context'?
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),
),
),
],
);
}
}
很简单,只需将 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)),
],
),
),
),
);
}
并在您的方法中添加一个参数
Widget eventsButton(BuildContext context) {
return Row(
mainAxisAlignment: MainAxisAlignment
//...
已更新
并改变这个:
Navigator.pushNamed(context, "/Holiday");
为此:
Navigator.pushNamed(context, "/HolidayScreen");
因为您的路线名称是 HolidayScreen 而不是 Holiday
让您的方法接受您的 context
作为参数
Widget eventsButton(BuildContext context)
并在上下文中调用它:eventsButton(context),
我目前正在查看在我的应用程序中使用不同屏幕进行导航,到目前为止我可以从 LoginScreen 导航到 EventsScreen 成功。问题是在 EventsScreen 中有一个按钮,如果单击它应该带我到 LoginScreen,这是我的代码。
在我的 events_screen.dart 文件中
在我的 app.dart 文件 MaterialApp 小部件中我有自己的路线作为
单击 Holiday 平面按钮不会将我带到 "/HolidayScreen" 路线。
如何解决 [dart] Undefined name 'context'?
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),
),
),
],
);
}
}
很简单,只需将 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)),
],
),
),
),
);
}
并在您的方法中添加一个参数
Widget eventsButton(BuildContext context) {
return Row(
mainAxisAlignment: MainAxisAlignment
//...
已更新
并改变这个:
Navigator.pushNamed(context, "/Holiday");
为此:
Navigator.pushNamed(context, "/HolidayScreen");
因为您的路线名称是 HolidayScreen 而不是 Holiday
让您的方法接受您的 context
作为参数
Widget eventsButton(BuildContext context)
并在上下文中调用它:eventsButton(context),