8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

回调函数在 Flutter 中无法调用

juwil 1月前

25 0

我有一个带有回调函数的小部件,但是回调函数没有被调用。我的代码如下:DetailsRow(title:\'APP\',value:'MYTEXT',link:'',linkTap:(){print(\'

我有一个带有回调函数的小部件,但是回调函数没有被调用。

我的代码如下:

DetailsRow(
  title: "APP",
  value: 'MYTEXT',
  link: '',
  linkTap: () {
    print("needs to here"); // this is not getting call
  }
),

DetailRow 小部件:

class DetailsRow extends StatelessWidget {
  const DetailsRow({
    super.key,
    required this.title,
    this.value,
    this.link,
    this.linkTap
  });

  final String title;
  final String? value;
  final String? link;
  final VoidCallback? linkTap;

  void onlinkTap() async {
    if (linkTap != null) {
      print('function call1'); // it is call here 
      linkTap;
    } else {
       final Uri url = Uri.parse(link!);
      await openWebBrowser(url);
    }
  }

  Widget build(BuildContext context) {
    return InkWell(
      onTap: onlinkTap,
      child: Text(
        value!,
      ),
    );
  }
}

我也尝试使用gestureDetector小部件。

帖子版权声明 1、本帖标题:回调函数在 Flutter 中无法调用
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由juwil在本站《dart》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 如果你使用 linkTap?.call(); 你不需要封闭的 if 因为 linkTap?.call(); 可以在 linkTap 为空或不为空时调用

  • 当您简单地写出函数名称时,就像 linkTap 您只是引用它一样 - 或者换句话说,您并没有调用该函数。

    这就是这里发生的事情:

    if (linkTap != null) {
      print('function call1'); 
      linkTap; // <- This is simply a reference, not calling
    } 
    

    我该如何修复它?

    要调用函数,您应该执行 functionName() 。一般来说,您应该能够执行 linkTap() 来调用您的函数。但是,由于您的 linkTap 回调是可空的,因此这不起作用,因为 Dart 会显示错误。

    因此正确的解决方案是:

    if (linkTap != null) {
      print('function call1'); // it is call here 
      linkTap!();
    } 
    

    或者

    linkTap?.call();
    

    正如 pskink 所评论的那样。

    希望这能帮助您更好地理解!

  • @pskink,非常感谢,现在可以正常工作了。由于我只是 Flutter 的初学者,我犯了很荒谬的错误。

返回
作者最近主题: