Flutter 如何在切换按钮中实现这些功能?Can';我不能让它工作
对不起,我是一个比较新的颤振和有一些麻烦。我想在按下第一个、第二个或第三个按钮时启动功能。这些按钮启动地图标记、多段线等。当使用图标按钮指定On Press时,它们工作正常。。。我想不出如何让他们用切换按钮工作。。。是否必须以某种方式将它们添加到列表中?如果是,怎么做 这是我的三个按钮:Flutter 如何在切换按钮中实现这些功能?Can';我不能让它工作,flutter,dart,Flutter,Dart,对不起,我是一个比较新的颤振和有一些麻烦。我想在按下第一个、第二个或第三个按钮时启动功能。这些按钮启动地图标记、多段线等。当使用图标按钮指定On Press时,它们工作正常。。。我想不出如何让他们用切换按钮工作。。。是否必须以某种方式将它们添加到列表中?如果是,怎么做 这是我的三个按钮: Consumer<ProviderMaps>(builder: (context, menu, widget) { return Containe
Consumer<ProviderMaps>(builder: (context, menu, widget) {
return Container(
padding: EdgeInsets.zero,
decoration: BoxDecoration(
border: Border.all(color: Colors.transparent, width: 1.0),
borderRadius: BorderRadius.all(Radius.circular(5.0)),
),
child: ToggleButtons(
selectedColor: Colors.red,
color: Colors.white,
children: <Widget>[
Icon(MdiIcons.vectorPolygon),
Icon(MdiIcons.ruler),
Icon(MdiIcons.pencil),
],
onPressed: (int index) {
setState(() {
for (int buttonIndex = 0;
buttonIndex < _selection.length;
buttonIndex++) {
if (buttonIndex == index) {
_selection[buttonIndex] = !_selection[buttonIndex];
} else {
_selection[buttonIndex] = false;
}
}
});
},
isSelected: _selection,
),
);
}),
这是我通常如何调用这些函数(工作正常):
嗯,
ToggleButtons
的onPressed
确实为您提供了所按下按钮的索引。因此,如果按下第一个按钮,索引将为0,如果按下第二个按钮,索引将为1,以此类推
因此,在onPressed中,您可以检查索引,并基于该调用适当的函数(常规if语句也可以正常工作):
或者更好,您可以将函数放置在数组中(确保按正确的顺序放置),并执行以下操作:
var functions = <Function>[function1, function2, function3];
//...
//then, in the onPressed:
onPressed: (int index) {
//call the function of that index
functions[index]();
}
var functions=[function1,function2,function3];
//...
//然后,在onPressed中:
onPressed:(int索引){
//调用该索引的函数
函数[索引]();
}
这不太管用。编辑我的帖子,向你展示我所做的。我不知道该如何处理isSelected:_选择,部分。我尝试了数组,但我不能将它放在任何地方,因为我不知道如何在需要使用者时设置数组(在我的情况下,我需要能够调用provmap。情况1是唯一有效的。无论我按哪个按钮。Mmm,你能试着用if语句替换吗?比如if(index==0){…}
或者使用第二种方法。我可能在switch语句中犯了一个错误……实际上,我的错误:索引从0开始。因此,您的按钮索引是0、1和2。而不是1、2和3。我将编辑答案。
menu.changestatutpolyg();
menu.changestatupolyli();
_initFreeDraw();
Consumer<ProviderMaps>(builder: (context, menu, widget) {
return IconButton(
icon: Icon(MdiIcons.ruler),
color: Color(0xffFFFFFF),
onPressed: () {
menu.changestatupolyli();
});
}),
onPressed: (int index) {
setState(
() {
switch (index) {
case 1:
{
menu.changestatutpolyg();
}
break;
case 2:
{
menu.changestatupolyli();
}
break;
case 3:
{
_initFreeDraw();
}
break;
}
},
);
},
isSelected: _selection,
),
);
}),
onPressed: (int index) {
switch(index) {
case 0: {
callFunction1();
}
break;
case 1: {
callFunction2();
}
break;
//etc.
}
},
var functions = <Function>[function1, function2, function3];
//...
//then, in the onPressed:
onPressed: (int index) {
//call the function of that index
functions[index]();
}