问题标签 [flutter-provider]

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 投票
2 回答
7464 浏览

flutter - “在构建期间调用 setState() 或 markNeedsBuild()”错误尝试在消费者小部件(提供程序包)内的导航器中推送替换

这周我开始在颤振中发展,我无法解决这个问题。

我正在构建一个登录页面,该页面调用 API 进行登录,然后重定向到主页。Navigator.pushReplacement这是第一个代码块中生成的异常。在那一刻apiCall.isFetching是错误的,因为提取结束并apiCall.response包含所需的数据。

异常详情:

这是我创建登录按钮的函数,它是从LoginScreen (StatelessWidget)的构建函数中调用的

尝试登录功能:

ApiCallChangeNotifier

MyApiServices.attemptLogin是一个处理 API 调用并返回 Object LoginResponse 的函数

希望我已经提供了足够的信息!

0 投票
0 回答
653 浏览

flutter - 未来完成后,Flutter FutureProvider 不会更新孩子

我正在使用提供程序包。我正在使用 FutureProvider 加载一个 json 文件。FutureProvider 也有一个 ChangeNotifierProvider 作为孩子。我不确定我这样做时出了什么问题,但我的孩子没有得到重建。

使用提供程序的底部工作表:

要从 json 文件加载数据的提供程序。

将与 DropDownButton 交互的提供程序。

0 投票
5 回答
2576 浏览

flutter - Flutter中提供者有什么用?

好吧,我对 Flutter 有点陌生,我的问题是为什么我们在 Flutter 中使用提供程序,我知道它用于状态管理。但我希望了解提供者最常见的用例。

0 投票
0 回答
538 浏览

flutter - ListView 中的提供者没有被处置?

我有一个包含约 600 个对象ListView的列表 ( ):values

随着根据AlbumEntryView

我在我的应用程序中检查了内存中 ChangeNofifierProxyProvider对象数量,当我滚动列表时它不断增加(它包含AlbumEntryView对象)。

据我所知,ListView当它们不在视口中时发布小部件,并且当它不再在视图层次结构中时,提供者将被处置。这是否意味着列表项没有被处理/重用导致对象在内存视图中增长或者我误解了什么?如果是这样,我怎样才能正确地将提供程序用作列表项,而不会面临应用程序潜在泄漏的问题?

0 投票
0 回答
129 浏览

flutter - 如何将流与提供者混合?

我正在使用Provider。我想将不同的数据源与stream.

用例:聊天应用程序,其中一些消息来自系统(日期/错误消息),但其他消息来自数据库(Firestore)。

例如,仅从我现在使用的数据库中获取消息StreamBuilder

StreamBuilder不能混合来自其他来源的数据。messages[index]我想为不同的消息类型注入消息。

可能的解决方案是创建单独的消息列表并输入ListView.builder

但是我如何Provider将来自 Firestore 的流和系统消息混合到messages列表中呢?

我如何将数据源整合到一起final List messages

感谢帮助!

0 投票
2 回答
2097 浏览

flutter - 将两个 Stream 合并为一个 StreamProvider

我有两个流:

  • Stream<FirebaseUser> FirebaseAuth.instance.onAuthStateChanged
  • Stream<User> userService.streamUser(String uid)

我的 userService 需要经过身份验证的 FirebaseUser 的 uid 作为参数。

由于我可能需要在我的应用程序的多个部分访问 streamUser() 流,我希望它成为我项目根目录的提供者。

这就是我的 main.dart 的样子:

问题是当我导航到不同的页面时,MaterialApp 下面的所有内容都被更改了,并且我失去了 StreamProvider 的上下文。

有没有办法将 StreamProvider 添加到 MultiProvider 提供者列表中?因为当我尝试时,我还必须为 FirebaseUser 创建另一个 onAuthStateChanged 流,而且我不知道如何将它们组合成一个 Provider。

0 投票
2 回答
599 浏览

flutter - 导航到新屏幕时无法访问提供程序

有一个问题,我现在坐了几天。有一个应用程序:

  • 根据 AUTH 状态,显示“LoginScreen”或“MainScreen”。

  • 在 MainScreen 中,我使用屏幕(HomeScreen、ShoppingScreen、MyFavorites)设置底部导航

  • 我还使用 MultiProvider 在那里设置了我的 StreamProviders(那些依赖于 Auth)
  • 当我在 HomeScreen 上使用 Provider.of(context) 时,它的工作原理应该是这样
  • 但是当我使用时:

    /li>

` 并在此处使用 Provider.of(context) 我得到“找不到正确的提供者....在此之上...小部件

我阅读了一些关于这方面的问题,解决方案是在 MaterailApp 上方取消提供程序,在我的情况下我不能这样做,因为我只能在 Auth 成功后设置这些。

尝试将上下文(从 HomeScreen)传递给 ProfileScreen(通过构造函数)并且有效,但是当 UserData 的值更改时,它没有更新屏幕(猜测是因为不同的“上下文”)

我在这里做错了什么,有什么想法吗?:S

0 投票
1 回答
2355 浏览

flutter - Flutter get_it 和 FutureBuilder 无法使用热重载

下面的应用程序按预期工作,但不幸的是它不适用于热重载。我想知道如何使用它进行热重载。

代码所做的只是等待特定Future<String>的可用,然后在屏幕上显示该字符串。在等待期间,会显示一个进度指示器。

正如我所说,这按预期工作,但问题是如果我改变任何东西(我的意思只是简单的装饰性东西)并且热重新加载启动,应用程序将永远坐在那里显示进度指示器,因为connectionState保持ConnectionState.waiting模式。

这是代码更详细的功能:

我将一个String对象注册为GetIt. 由于该字符串包含在 a 中Future,因此代码必须等待它准备好才能注册。

(在实际代码中,我正在从资产加载 JSON 字符串。这就是为什么它位于Future.)

AFutureBuilder通过等待GetIt一个名为 的属性来等待字符串单例可用readyFuture

当字符串可用时,将其FutureBuilder显示在屏幕上。在此之前,将CircularProgressIndicator显示 a。

我的 pubspec.yaml 中有这些依赖项:

0 投票
1 回答
370 浏览

flutter - 使用 Provider 的长度为空

应用程序运行顺利。但是错误显示在控制台上。

在 null 上调用了 getter 'length'。接收者:空尝试调用:长度用户创建的导致错误的小部件的祖先是:
StreamProvider> file:///Users/Documents/flutter_job_manager/lib/components/router.dart:23:24

我将 Firebase 云存储与 Provider 一起使用

错误来了:(在我的generateRoute上)

只是要知道: streamCategories在 DatabaseService()

AddCategory在 StatelessWidget

0 投票
2 回答
1667 浏览

flutter - 找不到正确的提供者在带有导航流的 Flutter 中这个 Y 小部件上方

我不明白为什么这里不接受提供者。

我的 main.dart 看起来像这样。

Provider 在 Content Class 中完美运行。现在我使用此代码从内容移动到内容详细信息

在内容详细信息中,我只是想再次访问提供者

但这给了我以下错误

错误:在此 ContentDetails 小部件上方找不到正确的提供程序

要修复,请:

  • 确保 Provider 是此 ContentDetails 小部件的祖先 * 向 Provider 提供类型 * 向 Consumer 提供类型 * 向 Provider.of() 提供类型 * 始终使用包导入。例如:import 'package:my_app/my_code.dart'; * Ensure the correct上下文`正在被使用。

内容详细信息代码

我是一名正在尝试学习 Flutter 的 iOS 开发人员,我认为 Provider 应该可用于属于导航流的所有类,而无需使用任何 DI。

帮助我意识到我错过了什么。在上述情况下的导航流的情况下应该如何使用 Provider。

提前致谢