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);
  }
}
相关推荐
用户11481867894844 分钟前
前端实现空闲进程渲染
前端
前端老鹰5 分钟前
JavaScript Object.hasOwn ():更安全的对象属性检测方法
前端·javascript
用户11481867894846 分钟前
https项目中嵌入http格式的iframe, nginx 代理实现
前端
文艺理科生9 分钟前
深入 Nuxt 服务端引擎:用 Nitro 构建全栈应用
前端·javascript·后端
Mr_Wu201816 分钟前
windows electron-builder打包后应用图标更新问题
前端·javascript·electron
Cache技术分享16 分钟前
167. Java Lambda 表达式 - 链接组合比较器
前端·后端
晴转多云54322 分钟前
关于 Vben5 热更新 Cannot read properties of null (reading 'nextSibling')的分析
前端
惜分飞25 分钟前
ORA-600 kcratr_nab_less_than_odr和ORA-600 2662故障处理---惜分飞
前端·css·less
liuyang___25 分钟前
es6新语法
前端·javascript·es6