Flutter 如何将函数作为参数传入组件或方法

前言

记录一下使用方法,方便其他同学查阅

一、在调用页面,声明一个作为参数的函数tap
tap(int i){
    print('选择了....'+i.toString());
  }
二、声明自定义的函数,设置形参,点击调用参数
InkWell formateItem( Function(int) tapAction){
  child: Container(),
  onTap: () {
      tapAction(1688);
    }
}
三、调用,将tapAction传入
formateItem(tap)
四、打印
Flutter: 选择了 1688

在这里简单介绍下逻辑,方便初学的朋友理解

在 步骤三 开始调用formateItem,点击组件响应tapAction,并传入值 1688,方法tap执行打印,很简单

欢迎大家有问题可以入群 QQ 528214618

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Flutter中,子组件可以通过回调函数的方式来控制父组件的状态,从而达到控制父组件变量的目的。具体实现方式如下: 1. 在父组件中定义一个变量,并提供一个修改该变量的方法,如下所示: ```dart class ParentWidget extends StatefulWidget { @override _ParentWidgetState createState() => _ParentWidgetState(); } class _ParentWidgetState extends State<ParentWidget> { bool _isSwitchOn = false; void _handleSwitch(bool newValue) { setState(() { _isSwitchOn = newValue; }); } @override Widget build(BuildContext context) { return Column( children: <Widget>[ SwitchWidget(_isSwitchOn, _handleSwitch), Text('Switch is ${_isSwitchOn ? 'on' : 'off'}'), ], ); } } ``` 2. 在子组件中定义一个回调函数,将父组件的修改方法作为参数传入,然后在子组件内部触发该回调函数,如下所示: ```dart class SwitchWidget extends StatelessWidget { final bool isSwitchOn; final ValueChanged<bool> onSwitchChanged; SwitchWidget(this.isSwitchOn, this.onSwitchChanged); @override Widget build(BuildContext context) { return Switch( value: isSwitchOn, onChanged: (newValue) { onSwitchChanged(newValue); }, ); } } ``` 通过这种方式,子组件就可以控制父组件中的变量了。在上面的示例中,SwitchWidget通过回调函数onSwitchChanged来控制ParentWidget中的_isSwitchOn变量。当SwitchWidget的Switch组件状态发生变化时,就会触发onSwitchChanged回调函数,然后在回调函数内部调用ParentWidget中的_handleSwitch方法,从而修改_isSwitchOn变量的值,并通过setState方法通知Flutter框架进行重绘。最终,ParentWidget中的Text组件就会显示出_isSwitchOn变量的最新值。 ### 回答2: 在Flutter中,通常情况下,子组件是无法直接控制父组件中的变量的。这是因为在Flutter中,数据的流动是单向的,即从父组件向子组件流动。 但是,如果需要实现子组件控制父组件中的变量,可以通过回调函数的方式来实现。具体做法是,在父组件中定义一个函数,然后将这个函数作为参数传递给子组件。子组件可以通过调用这个函数并传递相应的参数来改变父组件中的变量。 在父组件中,定义一个变量,例如“count”,并在子组件中通过回调函数改变这个变量。首先,在父组件中定义一个函数,例如“updateCount”,用来更新“count”变量的值。然后,将这个函数作为参数传递给子组件。在子组件中,通过调用“updateCount”函数并传递新的值来改变父组件中的“count”变量。 例如: 父组件代码: ```dart class ParentWidget extends StatefulWidget { @override _ParentWidgetState createState() => _ParentWidgetState(); } class _ParentWidgetState extends State<ParentWidget> { int _count = 0; void _updateCount(int newCount) { setState(() { _count = newCount; }); } @override Widget build(BuildContext context) { return Column( children: <Widget>[ Text('Count: $_count'), ChildWidget(updateCount: _updateCount), ], ); } } ``` 子组件代码: ```dart class ChildWidget extends StatelessWidget { ChildWidget({@required this.updateCount}); final Function updateCount; @override Widget build(BuildContext context) { return RaisedButton( onPressed: () { updateCount(1); // 调用父组件方法来更新父组件中的变量 }, child: Text('Update Count'), ); } } ``` 通过上述实现,子组件可以通过触发相应的事件来改变父组件中的变量。 ### 回答3: Flutter中的组件通信有多种方式,其中一种方式是子组件控制父组件的变量。 在Flutter中,子组件通常是父组件的固定下级,父组件通常要控制子组件的状态和数据,而子组件要控制父组件的变量,可以通过回调函数来实现。 具体实现步骤如下: 1. 在父组件中声明一个需要控制的变量,并在子组件中定义一个回调函数。 2. 在父组件中传递回调函数给子组件,在子组件中调用该回调函数,将需要传递给父组件参数作为参数传递给回调函数。 3. 在父组件中接收回调函数传递的参数,并根据需要做相应的处理,更新父组件的变量。 通过这样的方式,子组件可以通过回调函数将需要传递给父组件的数据传递回去,从而实现子组件控制父组件的变量。 总结一下,子组件控制父组件的变量可以通过在父组件中定义一个回调函数来实现,子组件通过调用回调函数将需要传递给父组件的数据传递回去,从而实现子组件控制父组件的变量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值