我使用了一个switch case void函数,根据用户在开始时输入的内容,用小部件填充应用程序的一部分。
下面是void函数一小部分:
var DisplayLeft = Container();
void Display(String selected) {
switch (selected) {
case 'option 1':
tacOpDisplayLeft = Container(
child: Column(
children: [
Button3(
onTap: (val) {
setState(() {
selected = val;
});
},
),
Button5(
onTap: (val) {
setState(() {
selected = val;
});
},
),
],
),
);
break;
case 'option 2':
tacOpDisplayLeft = Container(
child: Column(
children: [
Button1(
onTap: (val) {
setState(() {
selected = val;
});
},
),
Button3(
onTap: (val) {
setState(() {
selected = val;
});
},
),
Button7(
onTap: (val) {
setState(() {
selected = val;
});
},
),
],
),
);
break;
default:
DisplayLeft = Container();
break;
}
}
当void函数在我的主有状态小部件中时,它工作正常。问题是void函数非常长,我希望将它移动到它自己的类中,然后我可以调用它。我尝试将它放在它自己的类Display{}中,但随后SetState抛出并出错,因为它不在有状态的小部件中。是否可以像我对组成按钮的无状态小部件所做的那样,将onTap传递出类?
非常感谢,任何帮助都非常感谢。
1条答案
按热度按时间x8diyxa71#
你可以这样做,比如:
正如我所评论的,创建一个接受
Function
的 * 单独 *StatefulWidget
:现在你可以在一个 separate 类中调用它: