问题标签 [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 投票
1 回答
2938 浏览

dart - 访问 InheritedWidget 的上下文

我有以下设置:

然后在我的HomePage我有一个推动新路线的FAB。这条新路线无法访问我继承的小部件的上下文。

是否不可能获得InheritedWidget新路线的上下文,或者有没有办法解决这个问题?


更新

这是我的 MaterialApp 的 builder 属性

我的SplashScreen构建方法:

这些是我得到的错误。

第一个似乎与Drawer我的有关HomePage

当我点击 FAB (Navigator.push) 时出现第二个异常

0 投票
1 回答
6145 浏览

dart - 你如何在 Flutter 中创建服务/提供者?

假设我需要一个包含所有用户变量和函数的用户服务,以及另一个包含所有项目变量和函数等的项目服务。我希望所有这些数据和函数在整个项目中都可用,将用户数据传递到需要的地方,例如。

我怀疑它与继承的小部件有关,但它是如何工作的?就像,我看到了如何在根级别使用一个继承的小部件,但是我应该在根级别为每个服务构建一堆继承的小部件吗?或者只是将所有数据放在一个顶级继承的小部件中?看起来那样可能会变得混乱。我还没有看到这样的例子。

...还是我应该只使用带有静态变量的类并在需要的地方调用它?

0 投票
2 回答
7526 浏览

dart - Flutter:在没有上下文的情况下从 InheritedWidgets 访问数据?

我看到我可以在这样的build()方法中访问 InheritedWidgets:final inheritedWidget = ChronoApp.of(context);但是如果我想在其他地方访问它怎么办,比如在initState()没有上下文的地方。我该怎么做?

0 投票
2 回答
5169 浏览

dart - Flutter:继承的小部件和路由

我想在我的应用程序的根目录有一个继承的小部件,它将包含我的数据提供者,我将在整个应用程序中使用它。所以我有这个继承的小部件,但每次我尝试加载它时,我都会得到这个The getter 'data' was called on null,我不知道为什么。

所以这是我的 main.dart:

然后我LoginPage基本上在登录后重定向如下:

在我的Cool页面中,当单击这样的按钮时,我尝试加载另一个页面:

但是在我CoolDetailsPage这样做时它会崩溃:

错误详情:

main.dart:56 是return (context.inheritFromWidgetOfExactType(CoolInherit) as CoolInherit).data;,所以如果我的侦探工作达到标准,我怀疑这与导航/上下文有关,这会阻止我的最终小部件访问继承的小部件,但我不确定。

更新:

我能说的最好的,我需要在更高级别插入我的 InheritedWidget;在导航仪之前。所以我将它插入到 MaterialApp 中:

但这并没有看到工作......

0 投票
1 回答
1007 浏览

flutter - Flutter Inherited Widget - 缺少一些监听器

我正在尝试使以下工作。应用程序模型状态的更改不会通过 InheritedWidget 'AppStateProvider' 获取。我已经设法让它与接收器/流一起工作,但希望建立一个更简单的结构。

这只是一个在各种应用模式之间切换的测试应用。

少了什么东西?

0 投票
1 回答
444 浏览

architecture - Flutter - Scoped BloCs 问题

我有一个 BLoC,只要我将其作为继承的小部件访问,就可以从屏幕内的任何小部件的任何位置访问它。但是,我想显示一个对话框并在其中使用我的模型的相同实例。当我尝试将我的模型作为继承的小部件访问时,我得到一个空错误。看起来这是由于使用新上下文的新屏幕造成的。

有没有办法让我的模型用于子屏幕/对话框而无需在构造函数中显式传递它?

0 投票
2 回答
8882 浏览

dart - InheritedWidget - 在 navigator.push 之后在 null 上调用 getter

我在导航到新小部件后尝试访问 InheritedWidget 时遇到问题。

我有这样的顶级小部件

然后 WelcomeScreen 有一个按钮可以导航到 LoginScreen

最后在 LoginScreen 我想访问 InheritedWidget

编辑:这里是 LoginBlocProvider

但是,当我运行 InheritedWidget 的 .of 方法时,出现此错误

我的印象是这一切都与 Navigator.push 构建器方法中的上下文有关。因为如果我使用没有 Navigator.push 的 LoginScreen 小部件,我可以完美地使用 InheritedWidget

发生错误是因为传递给LoginBlocProvider.of()方法的上下文没有找到实例。

对此有什么想法吗?

0 投票
0 回答
1017 浏览

dart - Flutter:继承的小部件

我想做一个登录应用程序。我有一个类用户,它有一个 id 和一个用户名,我想保留它以便稍后在应用程序中显示它,我有一个 user_api 类,我在其中执行 http 请求。一旦用户登录,我想使用 Singleton 来存储用户,但我发现继承的小部件是一个更好的主意。所以现在我正在为他们苦苦挣扎,因为我无法存储用户对象。登录后,我的用户变为空,我不知道它是如何工作的。这是我的代码:基本上我们有一个根页面来管理用户登录或未登录的情况:

在根页面中:

登录页面最重要的东西::

这是我继承的小部件:

0 投票
1 回答
3215 浏览

flutter - 如何使用 InheritedWidget 在我的 Flutter 应用程序中随处调用 void 函数

我有一个 main.dart,中间有一个按钮。当用户点击按钮时,它会导航到 home.dart 页面。我的 home.dart 页面在中心也有一个按钮,当用户点击该按钮时,它会导航到详细信息页面。应用程序树和代码如下所示。

我尝试在 home.dart 中实现“InheritedWidget”,所以在 home.dart 之后,我可以使用“InheritedWidget”调用“void _handleUserInteraction”函数。不幸的是,我不断收到错误消息:

home.dart 代码:

details.dart 代码:

更新:我更改了 home.dart 代码。onTap: _callback 正在工作,但在 details.dart 我得到同样的错误说:

错误: -在 null 上调用了 getter 'callback'。

0 投票
0 回答
174 浏览

callback - 如何在颤振小部件树内部调用 homepage.dart void 函数?

我不了解范围模型或继承的小部件。但只是在颤振小部件树的深处调用一个函数,我认为继承的小部件是最好的解决方案。我在很多地方都在问这个问题,但似乎我对这个概念很陌生,或者继承的小部件还不成熟。我有如下所示的小部件树;

我想从 help.dart 调用位于 homepage.dart 内的 void _callBack。

如何在颤振小部件树内部调用 homepage.dart void 函数?