Flutter 可以在小部件中使用上下文吗?
我在flatter中创建了这张地图:Flutter 可以在小部件中使用上下文吗?,flutter,dart,static,Flutter,Dart,Static,我在flatter中创建了这张地图:final map buildImage 对于地图中的一个小部件,我使用了一个showcupertinomodalpoup(),但是它需要上下文。当我像这样初始化它时: Widget buildPage(int index) { switch(index) { case 0: return Container( child: RaisedButton( onPressed: () {
final map buildImage
对于地图中的一个小部件,我使用了一个showcupertinomodalpoup()
,但是它需要上下文。当我像这样初始化它时:
Widget buildPage(int index) {
switch(index) {
case 0:
return Container(
child: RaisedButton(
onPressed: () {
// no error in using context
showCupertinoModalPopup(context: context);
},
),
);
break;
case 1:
return Container();
}
return Container();
}
showcupbertinomodalpopup(
上下文:上下文,
);代码>
我得到以下错误:在初始化器中只能访问静态成员
我想知道是否有办法解决这个问题
编辑:下面是进一步澄清问题的代码
class NewReminderScreen extends StatefulWidget {
@override
_NewReminderScreenState createState() => _NewReminderScreenState();
}
class _NewReminderScreenState extends State<NewReminderScreen> {
static String title;
static String description;
static DateTime _dateTime;
int sharedValue = 0;
final Map<int, Widget> dateTimePlace = const <int, Widget>{
0: Text('Time'),
1: Text('Place'),
};
final Map<int, Widget> buildPage = <int, Widget>{
0: Container(
RaisedButton(
onPressed: (){
showCupertinoModalPopup(
context: context, <-This is the error
);
},
),
),
1: Container(),
class newmemberscreen扩展StatefulWidget{
@凌驾
_NewMemberScreenstate createState()=>\u NewMemberScreenstate();
}
类_newmemberscreenstate扩展状态{
静态字符串标题;
静态字符串描述;
静态日期时间_DateTime;
int sharedValue=0;
最终地图日期时间地点=常数{
0:文本(“时间”),
1:文本(“位置”),
};
最终地图构建页={
0:容器(
升起的按钮(
已按下:(){
showcupbertinomodalpopup(
context:context,showCupertinoModalPopup(…)
是一个方法,您可以在需要时直接调用它。使用前无需定义它
如果您使用的是无状态widget
,则可以将其转换为StatefulWidget
,然后可以在类中的任何位置使用上下文
如果您仍然希望坚持使用无状态小部件
,可以通过build()
方法传递上下文
更新:
我认为使用变量不是一个好主意,您可以将buildPage
变量更改为如下方法:
Widget buildPage(int index) {
switch(index) {
case 0:
return Container(
child: RaisedButton(
onPressed: () {
// no error in using context
showCupertinoModalPopup(context: context);
},
),
);
break;
case 1:
return Container();
}
return Container();
}
showcupertinomodalpoup(…)
是一个方法,您可以随时直接调用它。使用前无需定义它
如果您使用的是无状态widget
,则可以将其转换为StatefulWidget
,然后可以在类中的任何位置使用上下文
如果您仍然希望坚持使用无状态小部件
,可以通过build()
方法传递上下文
更新:
我认为使用变量不是一个好主意,您可以将buildPage
变量更改为如下方法:
Widget buildPage(int index) {
switch(index) {
case 0:
return Container(
child: RaisedButton(
onPressed: () {
// no error in using context
showCupertinoModalPopup(context: context);
},
),
);
break;
case 1:
return Container();
}
return Container();
}
我用部分代码更新了我的问题,也许它会澄清问题是什么。是的,这是一个很好的替代我正在做的事情并解决了我的问题。谢谢你的帮助。我用部分代码更新了我的问题,也许它会澄清问题是什么。是的,这是一个很好的替代我正在做的事情并解决了我的问题。谢谢你我需要帮助。