美文网首页Flutter面试
flutter:在 state 代码外如何获取 state 对象

flutter:在 state 代码外如何获取 state 对象

作者: 李小轰 | 来源:发表于2021-09-22 15:06 被阅读0次

    引言

    StatefulWidget 的具体逻辑都在其对应的 State 中,所以很多时候,我们需要获取父节点的State对象来调用一些方法,比如 Scaffold 组件对应的状态类 ScaffoldState 中就定义了打开 SncakBar(路由底部提示条)的方法。

    在子节点中获取父级节点的 State 对象,小轰在项目中使用过如下两种方式。

    • 通过 context 获取

    context 对象有一个 findAncestorStateOfType()方法,该方法可以从当前节点沿着 widget 树向上查找指定类型的 StatefulWidget 对应的 State 对象。

    ScaffoldState _state = context.findAncestorStateOfType<ScaffoldState>();
    
    • 通过 globalKey 获取
    ...省略
    
    final GlobalKey<NavigatorState> navigatorKey = new GlobalKey<NavigatorState>(); 
    class MyApp extends StatelessWidget {
      MyApp() {
      }
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          navigatorKey: navigatorKey,
        );
      }
    }
    ...省略
    
    //使用方式
    BuildContext context = navigatorKey.currentState.overlay.context
    

    相关文章

      网友评论

        本文标题:flutter:在 state 代码外如何获取 state 对象

        本文链接:https://www.haomeiwen.com/subject/ulxggltx.html