问题标签 [flutter-change-notifier]
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 - 什么时候 ChangeNotifier 比 Flutter 中的 Observable 更受欢迎?
我一直在努力理解ChangeNotifier何时优于 Rxdart 的Observable或一般的流。
根据 Flutter 的文档:
一个可以扩展或混合的类,它提供使用 VoidCallback 进行通知的更改通知 API。
ChangeNotifier 针对少量(一或两个)侦听器进行了优化。添加和删除监听器是 O(N),调度通知是 O(N²)(其中 N 是监听器的数量)。
不过,我不确定 ChangeNotifier 能提供什么 Observable 或 Stream 不能。
android - 使用 Firebase Auth 和 ChangeNotifierProvider 进行 Flutter 路由
在深入研究我的应用程序的功能之前,我正在努力使我的颤振架构尽可能好。我已经基于 ChangeNotifierProvider 制作了一个带有 firebase Authentification 的应用程序:
此 Home 小部件正在侦听身份验证状态并返回任何 LoginScreen 或 DashboardScreen 小部件(无论是否登录)。如果用户登录,LoginScreen 可以更新服务的状态。DashboardScreen 还可以通过注销来修改状态。然后由于这个通知程序,呈现的小部件正在两个屏幕之间切换。
我正在尝试将生成的路由添加到此工作部分,以使我的应用程序更加“标准”。我在 Router 类中定义了一些路由:
我现在可以修改我的 MyApp 小部件:
问题是:如何使此路由在 Home 小部件中工作?实际上,我打开了我提供的服务的状态,并返回了一个好的小部件。类似于在此开关内选择路线:
如何使用导航器?我不能在开关内使用 Navigator.pushNamed。它需要返回一个小部件。如果登录成功,如果 LoginScreen 应该处理导航,也许我错了这可能更简单?这样 Home 小部件可以直接呈现 LoginScreen。这是最好的方法吗?
我试图从一个干净且设计良好的应用程序开始,尽可能地创造出最好的架构。
谢谢您的帮助。
flutter - 重置提供者数据 - Flutter
我在我的应用程序中使用 multiprovider。Provider 工作完美,它存储数据,并在发生任何变化时提供完美的事件。
现在,我的应用程序中有这种情况->
用户 1 已登录。现在,当我在同一个登录名中添加第二个帐户(如 Gmail - 多帐户)时,提供商会返回旧值。
我试图搜索提供者的重置值,但找不到与之相关的任何内容。
尝试过但没有用:
- 创建了要重置的提供者的新对象。
Provider.of<LoginProvider>(context).dispose();
flutter - Flutter:使用泛型创建小部件时出现子类型错误
我正在为我的应用程序使用扩展 ChangeNotifier 的视图模型。要使用它们,我正在尝试实现一个通用的基本小部件:
基本小部件有一个类型参数,并使用 get_it 包的服务定位器获取视图模型的实例。
但是当我尝试运行应用程序时,使用小部件时:
Flutter 抛出运行时错误:
错误似乎是由函数参数引起的:
当我用动态交换泛型类型(ViewModelType)时,应用程序运行良好(当然没有类型安全):
任何想法如何使它与通用参数一起运行?
这是我的视图模型:
和 get_it 设置:
flutter - 如何在不使用导航器的情况下路由到另一个页面
我正在使用 MSAL 通过 ChangeNotifierProvider 对用户进行身份验证。我正在尝试从 MSAL 登录导航到另一个页面,但 Navigator.push 需要在小部件中使用。如何在不使用 Navigator.push 的情况下导航到另一个页面?或者它不能用于颤振?
下面的代码:
flutter - 如何在 main.dart 中调用 changeNotifier 之前已经有一个flutter?
我使用提供程序从firestore
一页中显示数据,然后将数据传递到第二页并调用changenotifier
in main.dart
。
但是,每当我尝试导航到第二页时,它都会向我显示此错误:
“I/flutter (1763):引发了另一个异常:在构建期间调用了 setState() 或 markNeedsBuild()。”
我不知道该怎么办。
- 注意:在
main.dart
我之前已经有一个changenotifier
。
第一页代码:
第二页代码:
main.dart 代码:
提供者本身
flutter - Flutter 等待 Provider 准备好在 multiprovider 中
我在创建同步提供程序时遇到问题。我是新手,我会尽力解释得更好。
在我的 main.dart 中,我有两个提供程序,一个用于用户身份验证,一个用于代码中的另一个小部件,它只是有一个要显示的列表。我使用 ChangeNotifierProxyProvider 因为所有其他提供者都需要访问用户身份验证令牌和详细信息。用户存储、读取令牌的所有方法都在 userProvider 中。
当调用 UserProvder.init() 时,对象已创建但由于 http 请求仍未准备好,主体中的代码继续执行并将 UserProvider 传递给认为 UserProvider 已准备好但未准备好的 Conto Provider。当 ContoProvider 开始使用 UserProvider 中的令牌检索 List 时,通过 userService 访问失败,因为仍然为空。
那么,我如何同步创建提供程序以等待 UserProvider 完全准备好然后初始化所有其他提供程序?
主要.dart
userProvider.dart
ContoProvider.dart
flutter - 未调用 ChangeNotifier 类中的函数
我有一个以 Provider 作为状态管理器的 Flutter 应用程序。位于ChangeNotifierProvier
我的应用程序的最顶部(即在 MaterialApp 小部件上方)。
- 我有一
ChangeNotifier
堂课如下:
- 然后我有另一堂课
TextField
:
- 在主应用程序下的另一个类中,我调用了
amount
变量:
问题是Provider.of(...)
无法调用该方法。我看了一些教程,找不到背后的原因。如果我使用静态文本而不是 AmountManager 对象,它可以工作。amount
程序只使用类中的初始值MyText
。
你觉得我哪里不对?
先感谢您,
flutter - 在 Gridview.builder 中使用 ChangeNotifierProvider.value 时遇到错误
这可能是一个错误并且不受支持。如果您处于这种情况,请考虑将
key
唯一性传递给每个单独的构造函数。
以上是反映在小时候使用颤振小部件运行代码的错误:-
flutter - 当我渲染我的子材料应用程序时,如何阻止我的更改通知提供程序重建我的父材料应用程序?
我有一个应用程序类,它返回一个MaterialApp()
它的主页设置为TheSplashPage()
. 如果任何首选项发生更改,此应用程序会侦听首选项通知。
然后在TheSplashPage()
我等待一些条件为真,如果它们是我向他们展示我的嵌套材料应用程序。
旁注:我在这里使用材质应用程序,因为它看起来更合乎逻辑,因为它具有父材质应用程序不应该有的路线。而且,一旦用户未经身份验证或断开连接,我希望整个嵌套应用程序关闭并显示另一个页面。这很好用!
但我的问题如下。这两个应用程序都会监听,ThePreferencesProvider()
因此当主题更改时,它们都会收到通知并重建。但这是一个问题,因为每当父材质应用程序重建时,它都会返回启动页面。所以现在TheSplashPage()
每当我更改TheSettingsPage()
.
所以我的问题是如何阻止我的应用程序TheSplashPage()
在我更改设置时返回?
主要.dart
TheSplashPage.dart
设置页面.dart