flutter - 如何只从 InheritedWidget 调用方法一次?
问题描述
我正在使用带有 Rx_command、Rx_dart 的反应组件流/可观察对象进行开发
问题:
在我的 Flutter 应用程序中,我继承了可以在任何地方调用的小部件:
FooProvider.of(context).foo.method1...
当 UI 首次加载时,我需要第一次调用该方法
- 我不能使用 init.state 因为这是不可能的
我使用didchangedependencies它可以工作,但是..
...每次 ui 重新加载时,都会调用didchangedependencies并再次执行该方法。
我不希望它被执行,我不能使用 init.state
如何只执行一次该方法?
解决方案
而不是context.inheritFromWidgetOfExactType
,使用context.ancestorInheritedElementForWidgetOfExactType
final myInherited = context.ancestorInheritedElementForWidgetOfExactType(MyInherited)?.widget;
这个方法里面有initState
推荐阅读
- android - 如何使用注释在改造请求中动态添加授权标头?
- php - 在 laravel 中有 4 个表的 belongsToMany
- swift - 为什么 AttributedString 可以与字符串一起使用,但不能与 labelWithAttributedString 一起使用?
- r - 尝试加入矩阵时,尝试会导致越界错误。(r)
- java - 动态转换为每个数组类型
- linux - 安装供应商程序 - libpython3.so:无法打开共享对象文件
- java - 如何检查两个字符串数组是否相同
- java - 如何将jsp页面中的多个(数字是动态的)字段绑定到控制器?
- swift - 如何在 UITextView 中对点击的单词执行操作?
- amazon-web-services - 如何使用 aws cdk 将 Cognito UserPool 作为身份验证提供程序之一创建 Cognito IdentityPool?