微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决是否可以在颤振的 onTap 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

     }
}

解决方法

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

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

loc

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。