Administrator
Administrator
Published on 2025-06-13 / 1 Visits
0
0

利用GlobalKey调用子组件方法

子组件

class TrackNoWidget extends StatefulWidget {
  const TrackNoWidget({super.key});

  @override
  State<TrackNoWidget> createState() => TrackNoWidgetState();
}

class TrackNoWidgetState extends State<TrackNoWidget> { //将class名最前面默认的下划线"_"去除,让它不是一个私有类

  void someEvent() async {
    //一个方法
  }

  @override
  //build...
}

父组件

class PreEnter extends StatefulWidget {
  const PreEnter({super.key});

  @override
  State<PreEnter> createState() => _PreEnterState();
}

class _PreEnterState extends State<PreEnter> {
  final GlobalKey<TrackNoWidgetState> trackNoKey = GlobalKey();

  void invokeSubWidget(){
    trackNoKey.currentState?.someEvent();
  }

  @override
  Widget build(BuildContext context) {
    return TrackNoWidget(key: trackNoKey)
  }
}


Comment