Flutter 可以在小部件中使用上下文吗?

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: () {

我在flatter中创建了这张地图:
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();
}

我用部分代码更新了我的问题,也许它会澄清问题是什么。是的,这是一个很好的替代我正在做的事情并解决了我的问题。谢谢你的帮助。我用部分代码更新了我的问题,也许它会澄清问题是什么。是的,这是一个很好的替代我正在做的事情并解决了我的问题。谢谢你我需要帮助。