问题标签 [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.

0 投票
0 回答
41 浏览

flutter - Flutter:合并 2 InheritedWidget 作为 MaterialApp 的父级

子小部件 ( MaterialApp) 可以从 2 个单独的继承小部件继承吗?就像我需要一个用于翻译 ( LocalizationProvider) 的继承小部件和另一个用于导航 ( AppStateProvider) 的小部件。它们单独工作正常但无法使它们一起工作...... :(

0 投票
0 回答
36 浏览

flutter - Didier Boelens 的反应式编程 BLoC 或如何实现应用范围的 BLoC

我查看了很多页面来学习如何最好地实现应用程序范围的块(用于身份验证、用户管理和初始化)。我没有找到这么多关于这种级别的集团模式的初学者,我发现很难确定一个合理的模式。

Didier Boelens在这里解释的模式似乎是最有希望的模式。

  1. 它仍然是一个合理的模式(它是从 2018 年开始的)还是 bloc 库在此期间发展了,还是其他模式被证明更好/更容易?什么是更容易但仍然有利的模式?

  2. 本文从嵌入在 InheritedWidget 中的 bloc 开始。如果有人对此很熟悉,他/她能否用简单的话解释一下,为什么我们需要在bloc/event/state 之上的bloc_event_state_builderand ?bloc_event_stream为什么我不能直接使用简单的块/事件/状态模式与bloc_provider我阅读“有时,处理可能是顺序或并行、长或短、同步或异步的一系列活动,这也可能导致各种结果,可能会变得非常难以编程。您可能还需要根据进度或根据状态更新显示。 “但我想我不了解他模式中所有元素的编排。

  3. 他定义了一个class BlocProvider<T extends BlocBase> extends StatefulWidget引用继承的小部件。我想我正确地假设这将影响我使用BlocProviderbloc 包中的开箱即用的所有其他特定页面的块?!

0 投票
1 回答
372 浏览

flutter - 为什么我需要 Flutter 中的 InheritedWidget

我已经开始学习 Flutter 的继承小部件,我有一个问题。如果我们可以从 context.findAncestorOfExactType 获取数据,为什么还需要 InheritedWidget?还有那个 updateShouldNotify ......就像,它在某些条件为真时通知子小部件,并且它们无论如何都会在 InheritedWidget 更改后运行它们的构建方法,因为它是不可变的,我们只能在一些重建中改变它......

0 投票
0 回答
40 浏览

flutter - FlutterdependOnInheritedWidgetOfExactType 是否记录了它是从哪个方法调用的?

我最近一直在玩InheritedWidget等等,我不明白的一件事是这句话形成了dependOnInheritedWidgetOfExactTypehttps://api.flutter.dev/flutter/widgets/BuildContext/dependOnInheritedWidgetOfExactType.html)的文档:

不应从小部件构造函数或 State.initState 方法调用此方法,因为如果要更改继承的值,则不会再次调用这些方法。'''

这是否意味着此方法以某种方式保存了调用它的方法?为什么 Flutter 不能只调用调用此build方法的任何Widget上下文的方法,为什么它会尝试调用进行调用的方法depend...

0 投票
0 回答
96 浏览

flutter - Flutter Inherited Widget updateShouldNotify oldWidget 和 new 一样?

我正在尝试深入研究继承的小部件并卡在某个地方。当我在 updateShouldNotify 方法上调试时,它的参数(旧小部件)与新小部件具有相同的数据。实例也是一样的。由于这种情况总是错误的,我的依赖小部件不会重建。

我把我的简单代码放在 dartpad 上。你能发现我正在做的问题吗?

只是从个人资料中推动增加

https://dartpad.dev/b6409e10de32b280b8938aa75364fa7b

谢谢

0 投票
0 回答
96 浏览

flutter - 如何通过 Flutter 中的 Inherited Widget 获取当前位置并在树内传递?

我正在尝试在其他路线的应用程序中共享用户的当前位置。

我的小部件树非常广泛,可以继续向下传递值,所以我想在下面的小部件中让它更容易并在 1 分钟的间隔内更新。

我已经尝试过 Provider 和 Inherited 小部件,但我的值为 null 并且出现错误:

我的第一堂课

我在 Init 调用以确定当前位置的方法

我继承的小部件

在 BodyCategoriesList() 内部它有 2 层小部件导致其他路由(因为我调用 MaterialPageRoute 来构建其他页面)然后我尝试使用这种方法调用 location 属性:

我只想分享我在这个深度小部件中更新的当前位置,但我无法做到这一点,我正在尝试几个小时!

0 投票
1 回答
343 浏览

flutter - 更新继承小部件的变量值

这是我正在制作的应用程序的登录代码。我想更新在发布请求后获得的 parent_inherit(Inherited Widget) 中的令牌。但是我无法理解如何在没有该构建方法或 parent_inherit 小部件的情况下显式更新 Inherited 小部件变量的值。我想改变继承小部件(parent_inherit)中的令牌值。

另外,在上面的文件中,当我在上面声明 parentToken 并使用它时,它仍然显示上面声明的 parentToken 没有被使用。当我将鼠标悬停在它上面时,它也会显示警告。为什么会这样?

parent_inherit.dart

TokenClass.dart

我的主要功能 - 在主要功能中,令牌值存在问题,它无法正确更新和获取继承小部件内部和外部的值。有时它也使用以前的令牌值。

主要.dart

也欢迎其他建议...

0 投票
1 回答
199 浏览

flutter - InheritedWidget 是否应该始终是 StatefulWidget 的子级?

我对 InheritedWidget 的了解?

InheritedWidgets 不是重建,而是我们必须创建一个具有新值的新 InheritedWidget。然后在 updateShouldNotify() 方法内部将比较它的旧对象和当前对象并返回 true 或 false。

如果 updateShouldNotify() 返回true -> 则依赖上下文得到重建。

如果 updateShouldNotify() 返回false -> 则依赖上下文不会重建。

因此,每次我们创建前一个 InheritedWidget 的新实例时,都会调用该 updateShouldNotify() 方法并决定是否重建其依赖项。

关于 InheritedWidget 我想知道什么?(我困惑的事情)

  1. 是否每个 InheritedWidget 都需要用 StatefulWidget 包装以创建该 InheritedWidget 的新实例?
  2. 当 ChangeNotifier 对象向其 ChangeNotifierProvider() 发送更改通知时,ChangeNotifierProvider 是否将其 InheritedWidget(或 InheritedProvider)包装在 StatefulWidget 中以重新创建新的 InheritedWidget?

(善待我如何处理英语)

0 投票
1 回答
68 浏览

performance - 如何使用像 MediaQuery 这样的内置 InheritedWidget 来实现 Provider.select 行为?

在我的聊天应用程序中,每条消息都依赖于 MediaQuery(字体缩放)。当键盘出现在 Android 11+ 上时,MediaQuery 中的底部插图将从 0 动画到键盘高度。它会导致对所有消息进行不必要的重建,但它们仅取决于字体缩放。使用 Provider 库,我可以使用select这种情况下的方法。如何使用 MediaQuery 达到相同的结果?

0 投票
1 回答
74 浏览

flutter - 使用继承的小部件将数据传递到多个屏幕

有一些InheritedWidget我不明白的困惑。
我已经搜索并阅读了一些关于 stackoverflow 的 QA InheritedWidget仍有一些我不明白的地方。
首先,让我们创建一个场景。
这是我的InheritedWidget

这就是MyHomePage包含MyInheritedWidget. MyInheritedWidget有两个孩子:WidgetA和一个导航到另一个屏幕的按钮,在这种情况下Page1

里面WidgetA有一个文本小部件,显示来自的名称字段MyInheritedWidget和导航到的另一个按钮Page2

Page1每个都只有一个文本小部件,Page2显示来自.MyInheritedWidget

在这种情况下,name字段MyInheritedWidget是不可访问的 formPage1Page2,但可以在 中访问WidgetA

现在让我们来看看这个问题:
据说InheritedWidget可以从它的所有后代访问。子孙是什么意思?
MyHomePage,我知道WidgetA是一个后裔MyInheritedWidget。但是,Page1也是?的后裔MyInheritedWidget
如果答案是否定的,我怎样才能成为Page1的后代MyInheritedWidget
我需要再把它包在里面MyInheritedWidget吗?
如果有这样的导航链怎么办:Page1 -> Page2 -> Page3 ... Page10并且我想MyInheritedWidgetPage10中访问,我必须将每个页面都包装在里面MyInheritedWidget吗?