问题标签 [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.
flutter - “在构建期间调用 setState() 或 markNeedsBuild()”错误尝试在消费者小部件(提供程序包)内的导航器中推送替换
这周我开始在颤振中发展,我无法解决这个问题。
我正在构建一个登录页面,该页面调用 API 进行登录,然后重定向到主页。Navigator.pushReplacement
这是第一个代码块中生成的异常。在那一刻apiCall.isFetching
是错误的,因为提取结束并apiCall.response
包含所需的数据。
异常详情:
这是我创建登录按钮的函数,它是从LoginScreen (StatelessWidget)的构建函数中调用的
尝试登录功能:
ApiCallChangeNotifier
MyApiServices.attemptLogin
是一个处理 API 调用并返回 Object LoginResponse 的函数
希望我已经提供了足够的信息!
flutter - 未来完成后,Flutter FutureProvider 不会更新孩子
我正在使用提供程序包。我正在使用 FutureProvider 加载一个 json 文件。FutureProvider 也有一个 ChangeNotifierProvider 作为孩子。我不确定我这样做时出了什么问题,但我的孩子没有得到重建。
使用提供程序的底部工作表:
要从 json 文件加载数据的提供程序。
将与 DropDownButton 交互的提供程序。
flutter - Flutter中提供者有什么用?
好吧,我对 Flutter 有点陌生,我的问题是为什么我们在 Flutter 中使用提供程序,我知道它用于状态管理。但我希望了解提供者最常见的用例。
flutter - ListView 中的提供者没有被处置?
我有一个包含约 600 个对象ListView
的列表 ( ):values
随着根据AlbumEntryView
我在我的应用程序中检查了内存中的 ChangeNofifierProxyProvider
对象数量,当我滚动列表时它不断增加(它包含AlbumEntryView
对象)。
据我所知,ListView
当它们不在视口中时发布小部件,并且当它不再在视图层次结构中时,提供者将被处置。这是否意味着列表项没有被处理/重用导致对象在内存视图中增长或者我误解了什么?如果是这样,我怎样才能正确地将提供程序用作列表项,而不会面临应用程序潜在泄漏的问题?
flutter - 如何将流与提供者混合?
我正在使用Provider
。我想将不同的数据源与stream
.
用例:聊天应用程序,其中一些消息来自系统(日期/错误消息),但其他消息来自数据库(Firestore)。
例如,仅从我现在使用的数据库中获取消息StreamBuilder
:
但StreamBuilder
不能混合来自其他来源的数据。messages[index]
我想为不同的消息类型注入消息。
可能的解决方案是创建单独的消息列表并输入ListView.builder
:
但是我如何Provider
将来自 Firestore 的流和系统消息混合到messages
列表中呢?
我如何将数据源整合到一起final List messages
?
感谢帮助!
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。
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
flutter - Flutter get_it 和 FutureBuilder 无法使用热重载
下面的应用程序按预期工作,但不幸的是它不适用于热重载。我想知道如何使用它进行热重载。
代码所做的只是等待特定Future<String>
的可用,然后在屏幕上显示该字符串。在等待期间,会显示一个进度指示器。
正如我所说,这按预期工作,但问题是如果我改变任何东西(我的意思只是简单的装饰性东西)并且热重新加载启动,应用程序将永远坐在那里显示进度指示器,因为connectionState
保持ConnectionState.waiting
模式。
这是代码更详细的功能:
我将一个String
对象注册为GetIt
. 由于该字符串包含在 a 中Future
,因此代码必须等待它准备好才能注册。
(在实际代码中,我正在从资产加载 JSON 字符串。这就是为什么它位于Future
.)
AFutureBuilder
通过等待GetIt
一个名为 的属性来等待字符串单例可用readyFuture
。
当字符串可用时,将其FutureBuilder
显示在屏幕上。在此之前,将CircularProgressIndicator
显示 a。
我的 pubspec.yaml 中有这些依赖项:
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
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。
提前致谢