gpt4 book ai didi

flutter - 是否可以在小部件中使用上下文?

转载 作者:行者123 更新时间:2023-12-03 04:00:15 25 4
gpt4 key购买 nike

我在flutter中创建了此 map :final Map<int, Widget> buildImage

对于 map 中的一个小部件,我使用了showCupertinoModalPopup(),但是它需要上下文。当我这样初始化时:
showCupertinoModalPopup(
context: context,
);

我收到以下错误:Only static members can be accessed in initializers

我想知道是否有办法解决这个问题。

编辑:这是代码,以进一步阐明问题。

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(),

当我这样做时,我收到一条错误消息,指出只能在初始化程序中访问静态成员。

最佳答案

showCupertinoModalPopup(...)是一种方法,您可以在需要时直接调用它。使用前无需定义它。

如果使用的是StatelessWidget,则可以将其转换为StatefulWidget,然后可以在类中的任何位置使用context

如果仍要坚持使用StatelessWidget,则可以通过context方法传递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();
}

关于flutter - 是否可以在小部件中使用上下文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57753518/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com