You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中如何向回调函数传递int类型参数?

Flutter 回调函数传参解决方案

核心实现逻辑:先明确定义回调的参数类型,再在触发回调时传入目标参数,最后在接收方的函数中声明对应参数接收即可。

1. 修改 block.dart 文件

  • 将myCallback的类型从无参Function改为接收1个int参数的Function(int)
  • 触发onTap事件时调用回调并传入目标参数(示例为12)
    修改后完整代码:
import 'package:flutter/material.dart';

class Block extends StatelessWidget {
  // 声明回调接收int类型参数,非空安全版本无需加required
  final Function(int) myCallback;

  Block({required this.myCallback});

  @override
  Widget build(BuildContext context) {
    return Container(
      margin: EdgeInsets.all(10.0),
      color: Color(0xFF722662),
      child: Center(
        child: GestureDetector(
          // 触发回调时传入int参数12
          onTap: () => myCallback(12),
          child: Text(
            'Button',
            style: TextStyle(
              color: Color(0xFFFFFFFF),
              fontSize: 22.0,
            ),
          ),
        ),
      ),
    );
  }
}

可选兼容空回调的写法

如果允许myCallback为空不传,可以调整为以下写法:

// 声明可空的带参回调
final Function(int)? myCallback;
// 构造函数去掉required
Block({this.myCallback});
// 调用时判空后再执行
onTap: () => myCallback?.call(12),

2. 修改 main.dart 文件

  • 给whatToDo函数添加int类型参数,用来接收回调传递过来的值
    修改后完整代码:
import 'package:flutter/material.dart';
import 'block.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: MainBlock(),
    );
  }
}

class MainBlock extends StatefulWidget {
  @override
  _MainBlockState createState() => _MainBlockState();
}

class _MainBlockState extends State<MainBlock> {
  // 添加int参数接收回调传递的值
  void whatToDo(int value) {
    print(value); // 点击按钮后控制台输出结果为12
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Container(
        margin: EdgeInsets.all(30.0),
        color: Color(0xFF122C39),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.stretch,
          children: [
            Expanded(
              child: Block(
                myCallback: whatToDo,
              ),
            ),
          ],
        ),
      ),
    );
  }
}

内容的提问来源于stack exchange,提问作者Penumbra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 03:24:03