Flutter 被调用的子组件向父组件传值
时间: 2023-07-21 10:34:03 浏览: 202
Flutter 中,子组件向父组件传值可以通过回调函数来实现。具体步骤如下:
1. 在父组件中定义一个回调函数,该函数的参数类型为要传递的值的类型。
2. 将该回调函数作为 props 传递给子组件。
3. 在子组件中定义一个变量来接收父组件传递过来的回调函数。
4. 在子组件中需要传递值的地方,调用父组件传递过来的回调函数,并将要传递的值作为参数传递给它。
示例代码如下:
```dart
// 父组件
class ParentWidget extends StatefulWidget {
@override
_ParentWidgetState createState() => _ParentWidgetState();
}
class _ParentWidgetState extends State<ParentWidget> {
var _count = 0;
void _handleCountChanged(int newCount) {
setState(() {
_count = newCount;
});
}
@override
Widget build(BuildContext context) {
return ChildWidget(onCountChanged: _handleCountChanged);
}
}
// 子组件
class ChildWidget extends StatelessWidget {
final Function(int) onCountChanged;
ChildWidget({required this.onCountChanged});
void _handleButtonPressed() {
onCountChanged(1);
}
@override
Widget build(BuildContext context) {
return ElevatedButton(
onPressed: _handleButtonPressed,
child: Text('Add'),
);
}
}
```
在上面的示例中,父组件 `ParentWidget` 定义了一个回调函数 `_handleCountChanged`,它接收一个 `int` 类型的参数。在父组件的 `build` 方法中,将该回调函数作为 `ChildWidget` 的 props 传递给子组件。
子组件 `ChildWidget` 接收父组件传递过来的回调函数,并将其保存在变量 `onCountChanged` 中。在子组件中,当用户点击按钮时,调用 `_handleButtonPressed` 方法,并将要传递的参数 `1` 作为参数传递给父组件的回调函数 `onCountChanged`。这样,父组件就可以根据子组件传递过来的值来更新自己的状态了。
阅读全文