flutter 对我来说很陌生,所以可能 flutter 专家会将其视为一个非常基本的问题。 我有许多文本按钮,当它们被按下时,我想用相同的功能处理它们。 但该函数必须知道按下了哪个按钮。它可能是一个额外的参数,或者函数应该以某种方式检索按下按钮的 Widget。 我试过的相关代码如下所示。使用此代码,handledigit 中的参数 i 始终为 10。 这样做的正确方法是什么?
class MijnWidget extends StatelessWidget
{
void handledigit(i)
{
print(i.toString());
}
Widget build(BuildContext context)
{
int i;
Row row;
List<Widget> footerbuttons;
String str;
footerbuttons = new List<Widget>();
for (i=1; i<= 9; i++)
{
str = i.toString();
footerbuttons.add
(
GestureDetector
(
child:Text(str),
onTap:() {handledigit(i);},
)
);
}
row = Row(children: footerbuttons, mainAxisAlignment: MainAxisAlignment.spaceBetween);
// Here a MaterialApp with a Scaffold containg row is returned
}
}
答案 0 :(得分:0)
传递给 i
的所有 lambda 都引用同一个 final localI = i
,它在循环结束时为 9。如果您在循环中创建一个新变量 onTap
并在您的 Row(
children: List.generate(10, (index) =>
GestureDetector(
child: Text("$index"),
onTap: () => handledigit(index),
),
),
)
回调中使用它,它应该可以工作。
最好避免可变变量并使用类似的东西:
loc