gpt4 book ai didi

flutter - flutter:如何将回调(或其他参数)传递给生成列表中的小部件?

转载 作者:行者123 更新时间:2023-12-03 03:57:29 27 4
gpt4 key购买 nike

我目前正在做的是生成菜单选项小部件的列表,并尝试使按钮的onPressed对应于基于 map 的路线,如下所示:

var activityMenuButtonMap = {
'Welcome': ActivityMenuButton(
text: 'Welcome',
route: WelcomeScreen(),
icon: Icon(Icons.filter),
color: Colors.green[100]
),
'SingleDigitEdit': ActivityMenuButton(
text: 'Single Digit [View/Edit]',
route: SingleDigitEditScreen(),
icon: Icon(Icons.filter_1),
color: Colors.amber[100]
),
'SingleDigitPractice': ActivityMenuButton(
text: 'Single Digit [Practice]',
route: SingleDigitPracticeScreen(),
icon: Icon(Icons.filter_1),
color: Colors.amber[200]
),
'SingleDigitMultipleChoiceTest': ActivityMenuButton(
text: 'Single Digit [Multiple Choice Test]',
route: SingleDigitMultipleChoiceTestScreen(),
icon: Icon(Icons.filter_1),
color: Colors.amber[300]
),
};

class ActivityMenuButton {
String text;
Widget route;
Icon icon;
Color color;

ActivityMenuButton({this.text, this.route, this.icon, this.color});
}

这是我的自定义MainMenuOption的生成的列表:
  List<Widget> getTodo() {
// iterate over all unlocked activities, and determine which belong in to-do
List<MainMenuOption> mainMenuOptions = [];
for (String activity in availableActivities) { // <---------------
if (activityStates[activity] != null && activityStates[activity].state == 'todo') {
mainMenuOptions.add(MainMenuOption(
text: activityMenuButtonMap[activity].text,
route: activityMenuButtonMap[activity].route,
icon: activityMenuButtonMap[activity].icon,
color: activityMenuButtonMap[activity].color,
fontSize: itemSize,
));
}
}
return mainMenuOptions;
}

但是,如果我尝试将回调函数添加到 activityMenuButtonMap中的路由中,则会收到错误 Only static members can be accessed in initializersenter image description here

最佳答案

final callback;

并在构造函数之后传递此回调
初始化一个类级别的字段。该代码在构造函数完成且对象完全初始化之前执行,因此可以对其进行访问。 (隐式或显式)是禁止的,因为不能保证您尝试访问的内容已经初始化。

关于flutter - flutter:如何将回调(或其他参数)传递给生成列表中的小部件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59916164/

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