我目前正在使用应用程序中的不同屏幕进行导航,到目前为止,我可以从 LoginScreen 导航至 EventsScreen < / strong>成功。问题出在EventsScreen中,如果单击了一个按钮,它将带我进入 LoginScreen ,这是我的代码。
和我的 app.dart 文件 MaterialApp 小部件中,我的路线如下
点击假日平面按钮时,它不会带我进入 “ / HolidayScreen” 路线。
我该如何解决 [dart]未定义名称'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),
),
),
],
);
}
}
答案 0 :(得分:3)
容易,只需将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
答案 1 :(得分:2)
让您的方法接受context
作为参数
Widget eventsButton(BuildContext context)
并在上下文中调用它:eventsButton(context),