Flutter如何通过GlobalKey调用组件内的方法

本案例只用于改造,直接复制是无法生效的

在主程序增加

dart 复制代码
	  final GlobalKey<SortButtonState> sortButtonKey = GlobalKey<SortButtonState>();
		useGlobalKey(){
			sortButtonKey.currentState?.updateSort('all', SortType.none);
		}
		//调用updateSort
		useGlobalKey()

		//调用的地方
		 SortButton(
                  buttonList: buttonList,
                  onChanged: onSortChanged,
                  key: sortButtonKey,//在这加sortButtonKey
                )

组件内

dart 复制代码
	 const SortButton({
		   ...其他参数
		    Key? key,//从这开始添加
		  }) : super(key: key);

	//确保SortButtonState 内有updateSort方法
  @override
  SortButtonState createState() => SortButtonState();

class SortButtonState extends State<SortButton> {
  String field = 'all';
  SortType sortType = SortType.none;
	
//这个方法就是被调用的
  void updateSort(String f, SortType t) {
    print('updateSort');
    setState(() {
      field = f;
      sortType = t;
    });
    widget.onChanged(field, sortType);
  }
}
相关推荐
Wiktok1 小时前
pureadmin的动态路由和静态路由
前端·vue3·pureadmin
devii661 小时前
html.
前端
掘金安东尼1 小时前
为什么浏览器要限制 JavaScript 定时器?
前端·javascript·github
学前端搞口饭吃1 小时前
react context如何使用
前端·javascript·react.js
林间风雨1 小时前
flutter项目 -- 换logo、名称 、签名、打包
flutter
GDAL1 小时前
为什么Cesium不使用vue或者react,而是 保留 Knockout
前端·vue.js·react.js
IT_陈寒1 小时前
《Java 21新特性实战:5个必学的性能优化技巧让你的应用快30%》
前端·人工智能·后端
小谭鸡米花2 小时前
uni小程序中使用Echarts图表
前端·小程序·echarts
芜青2 小时前
【Vue2手录11】Vue脚手架(@vue_cli)详解(环境搭建+项目开发示例)
前端·javascript·vue.js
a别念m2 小时前
前端架构-CSR、SSR 和 SSG
前端·架构·前端框架