Flutter 父子组件互调方法 文章目录 Flutter 父子组件互调方法一、父组件调用子组件方法1、概述2、代码实现3、效果 二、子组件调用父组件方法1、概述2、代码实现3、效果
使用 GlobalKey:可以为子组件创建一个 GlobalKey 对象,通过该 GlobalKey 可以获取到子组件的状态,并调用其方法。
import 'package:flutter/material.dart';class HomePage extends StatefulWidget { const HomePage({super.key}); State<HomePage> createState() => HomePageState();}class HomePageState extends State<HomePage> { // 在父组件中创建 GlobalKey GlobalKey<SonWidgetState> sonWidgetState = GlobalKey<SonWidgetState>(); Widget build(BuildContext context) { return Container( color: Colors.white, child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ // 在子组件中使用 GlobalKey SonWidget(key: sonWidgetState), const SizedBox(height: 10), ElevatedButton( onPressed: () => { // 调用子组件方法 sonWidgetState.currentState?.changeName("訾博${DateTime.now().microsecondsSinceEpoch}"), }, child: const Text("change name"), ) ], ), ); }}/// 子组件class SonWidget extends StatefulWidget { const SonWidget({super.key}); State<StatefulWidget> createState() => SonWidgetState();}class SonWidgetState extends State<SonWidget> { late String name = "zibo"; /// 父组件调用此方法实现修改 name /// @param newName 新的名字 void changeName(String newName) { setState(() { name = newName; }); } Widget build(BuildContext context) { return Center( child: Text(name, style: const TextStyle(fontSize: 40)), ); }}
在 Flutter 中,子组件可以通过回调函数的方式来调用父组件的方法。
import 'package:flutter/material.dart';class HomePage extends StatefulWidget { const HomePage({super.key}); State<HomePage> createState() => HomePageState();}class HomePageState extends State<HomePage> { late String name = "zibo"; /// 子组件调用此方法实现修改 name /// @param newName 新的名字 void changeName(String newName) { setState(() { name = newName; }); } Widget build(BuildContext context) { return Container( color: Colors.white, child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Text(name, style: const TextStyle(fontSize: 40)), const SizedBox(height: 10), SonWidget(changeName: changeName), ], ), ); }}/// 子组件class SonWidget extends StatefulWidget { const SonWidget({super.key, required this.changeName}); final Function(String name) changeName; State<StatefulWidget> createState() => SonWidgetState();}class SonWidgetState extends State<SonWidget> { Widget build(BuildContext context) { return Center( child: ElevatedButton( onPressed: () => { // 调用父组件方法 widget.changeName("訾博${DateTime.now().microsecondsSinceEpoch}"), }, child: const Text("change name"), ), ); }}
来源地址:https://blog.csdn.net/qq_29689343/article/details/131541951
--结束END--
本文标题: Flutter 父子组件互调方法
本文链接: https://www.lsjlt.com/news/422825.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-01-21
2023-10-28
2023-10-28
2023-10-27
2023-10-27
2023-10-27
2023-10-27
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0