是否可以在颤振的 onTap GestureDetector 函数中获取额外信息

时间:2020-12-25 11:22:11

标签: flutter gesturedetector

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

     }
}

1 个答案:

答案 0 :(得分:0)

传递给 i 的所有 lambda 都引用同一个 final localI = i,它在循环结束时为 9。如果您在循环中创建一个新变量 onTap 并在您的 Row( children: List.generate(10, (index) => GestureDetector( child: Text("$index"), onTap: () => handledigit(index), ), ), ) 回调中使用它,它应该可以工作。

最好避免可变变量并使用类似的东西:

loc