问题标签 [inherited-widget]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
flutter - 如何在颤动中访问父级中子小部件的数据?
我想知道父小部件中子(或子的子)小部件中某个字段的值,只有当我想知道它时。
在这种情况下,使用Callback或InheritedWidget/Provider不起作用,因为每次子项中的值发生变化时,它都会为我提供信息。当父母有行动时,我只需要孩子的价值。所以,听所有的变化是一种开销。
另一种选择是使用密钥从孩子那里获取信息,但孩子可以是多个,因此必须创建那么多密钥并以某种方式将它们附加到孩子身上。而且钥匙有点贵。
另一种选择是存储孩子的实例并从中获取价值。
对于一项简单的任务,每个选项似乎都过大了。我赞成关键方法,因为它给人的感觉是它们是为这些类型的场景创建的。有没有人对这种情况有更好的了解?
一个简单的用例是:
想象一个父级在中间有一个 PageView 和一个下一步按钮。中间的页面包含一个更改其值的滑块。当我们按下下一步时,我们想知道滑块的最终值是多少。
flutter - 在 initState 中获取 InheritedWidget 参数
我需要一些帮助来了解如何从继承的小部件中获取数据。
我通常使用从我的小部件直接从构建方法获取参数
但是这个方法不能从 initState 调用,因为还没有 buildContext。
我需要在 initState 方法中具有该参数(我在其中调用从服务器获取的数据,并且我需要将该数据传递给我的函数),那么,我该怎么做呢?
我尝试使用 didChangeDipendencies() 但每次重建视图时都会调用它(从屏幕弹出等),所以它不是我想要使用的,也不是 FutureBuilder 小部件。
有什么建议吗?
flutter - 如何在 Flutter 的 Dialogs 中访问 Provider 提供者
Provider 包使用InheritedWidget
. 当我想在对话框中访问提供者时,这是一个问题。如果我使用加载对话框
我无法访问任何内容,InheritedWidget
因为我的对话框不是主小部件树的一部分。这也意味着我无法访问我的 Provider 提供商,对吗?
我的问题是:如果它不是主应用程序小部件树的一部分,我如何在对话框中访问我的提供程序?
我在使用BLoCs
. 如果我尝试在对话框中通过 检索它们InheritedWidget
,它们会失败。我已经通过BLoC
在构造函数中传递来解决这个问题,但这似乎违背了InheritedWidgets
.
flutter - Flutter Inhertied widgets in a widget(stateless of statefull)
在 Flutter 中,我们使用其静态of
方法访问继承的小部件字段:
所以,我的问题是,在小部件(无状态或有状态)中,当我们使用这样的东西时:
或者:
这是否意味着小部件继承自MediaQuery
或ModalRoute
谢谢你。
flutter - 如何在 Flutter 中从另一个 pageview 类调用另一个函数?
我需要帮助在网页浏览中调用另一个类的方法。我有一个应用程序,它的页面浏览量由两个类组成,分别是 Page 1 和 Page 2。它们都是有状态的小部件。
我试图从 Page1 调用 Page2 的方法,但对我来说很难,因为它们都没有子/父关系,所以我不能使用回调函数。事实上,它们都是另一个父类(MainParent)的子类。我尝试使用 globalkey 但我收到 currentState is null 错误。
非常感谢您的帮助。谢谢!
第 1 页课程
第 2 页类
编辑:编辑我的代码。原来我必须先导航到 page2 选项卡,因为当我在第 1 页时,第 2 页没有安装到屏幕上。所以我添加了一个 pageController 并首先导航到 page2。
jquery - jquery ui 继承按钮小部件
我正在尝试基于按钮小部件创建一个新小部件,并且想知道如何修改现有 jquery ui 按钮的按钮样式(如果它已经创建),或者如果没有创建新的 jquery 按钮。我将如何检查它是否已经创建,如果它有我如何修改样式?
例如修改现有的 jquery 按钮...我希望能够访问buttonElement
this.buttonElement.removeClass('ui-corner-all');
但它不起作用。
但这适用于现有的 jquery 按钮...
this.element.on('click', function(){...});
我知道我可以使用
_create: function(){ this_super();}
创建一个新按钮,我可以buttonElement
轻松访问......但正如我之前所说,如果按钮已经存在,它会创建 2 个 jquery 按钮。像这样...
<span class="ui-button-text"><span class="ui-button-text">Yes</span></span>
当它应该只是<span class="ui-button-text">Yes</span>
。
我希望我能够解释我想要做什么以及我遇到的问题......对不起,我充其量只是一个休闲程序员。
编辑以添加示例代码:HTML:
JS:
Jquery ui 小部件:
结果:添加了双倍,它具有应用于按钮的双倍样式的效果
我知道我可以简单地添加$('#testcb').button('destroy');
,但我希望能够通过检测元素是否已经添加或未添加 ui.button 在小部件中执行此操作。如果它已经创建,我想修改testcb
元素。我也知道这buttonElement
是 ui.button 创建的可以修改的值,但我无法从我的小部件中“获取”它。
希望这可以解决问题。
flutter - 带有 InheritedWidget 的子项中的颤振触发动作
我有一个掷骰子MaterialApp
。当floatingButton
按下时,我想触发孩子们的“掷骰子”。我正在尝试使用 InheritedWidget,但我见过的大多数示例似乎都相反,触发了子级的父级更改。
无国籍父母:
InheritedWidget
: _
我正在尝试使用一个Roller
类来触发滚动动作:
最后是 Stateful Die:
这似乎应该更简单,但我在这里打结了自己。
编辑:我正在根据建议将 Roller 放在顶层进行更新。我仍然不确定如何触发底部小部件的重建:
然后我把roll方法放到Roller里面:
从 中分配值Roller
:
最后,调用roll
顶层的方法:
这会更新Roller
' 的值,但不会更改 _DieState 的值...这是我要解决的问题。那里有很多有趣的模式,但我认为我正在努力解决的是基本实现。
performance - 为什么 findAncestorWidgetOfExactType 是 O(N) 而dependOnInheritedWidgetOfExactType 是 O(1)
在 Flutter 中有两个功能:
- findAncestorWidgetOfExactType
- 依赖InheritedWidgetOfExactType
他们在文档中说:findAncestorWidgetOfExactType相对昂贵(在树的深度为O(N))。
并且dependOnInheritedWidgetOfExactType是O(1),具有一个小的常数因子。
任何人都可以解释为什么?为什么第一个比另一个贵?
谢谢