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);
  }
}
相关推荐
SoaringHeart7 小时前
Flutter最佳实践:Web项目中文字体首次加载乱码问题解决
前端·flutter
程序员老刘7 小时前
Flutter 3.47 更新要点:Material 正式分家,老项目先别急着更新
flutter·ai编程·客户端
西安小哥7 小时前
破局与重生:大厂前端如何借力 AI 转型“超级全栈“
前端·人工智能
sunly_8 小时前
TypeScript总结:16、面向对象速查
前端·javascript·typescript
MXN_小南学前端8 小时前
React超长文本域中实现“返回顶部”浮动按钮
前端·javascript·react.js
学习嵌入式的小周8 小时前
Notepad++8.8.7下载安装(附安装包)
前端·notepad++
gs801409 小时前
解构 Cordis:面向“时空可组合性”的 TypeScript 元框架深度剖析
前端·javascript·typescript
岁岁种桃花儿9 小时前
Vue核心语法第一篇:Vue是什么?
前端·javascript·vue.js
观无10 小时前
若依EasyExcel实现单元格合并
开发语言·前端·javascript
愚公搬代码10 小时前
【愚公系列】《Web应用安全》001-VMware的安装
前端·安全