问题标签 [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 - 提供者更新变量,但旧值被传递给依赖它的函数
我正在使用提供程序将输入字段的值存储在表单中。在 save() 方法上,TextFields 调用 FormInputProvider 上的一个方法,该方法更新保存更新后的输入值的变量 inputAnn。
_inputAnn 正在监听提供者的变量 inputAnn。
当我调用函数 _upDateAnnouncementProvider 时,我将 Announcement _inputAnn 添加到包含表单输入信息的公告列表中。但是 _inputAnn 的值不会由 inputAnn 提供程序更新。
我尝试因此插入一个异步函数: _upDateAnnouncementProvider 函数外的 2 条打印消息已更新,但异步函数内的打印消息仍然是旧的。
任何人都可以帮忙吗?如有必要,我可以提供更多代码。
谢谢。
flutter - Flutter/Dart - 如何在其他屏幕上的图像选择器后更新图像
我正在使用 Flutter 的Image Picker
插件以允许用户更改他们的头像。当他们转到他们的帐户页面时,他们会看到他们的常规头像照片,顶部带有相机图标。单击相机图标将允许他们从相机中拍照或从他们的图库中选择新头像。选择新的后,头像照片会自动更新。但是,当离开他们的帐户页面时,旧头像在应用程序的其余部分中可见。我在其他任何地方都使用Provider
aChange Notifier
和for Avatars。Consumers
但问题是我只能Provider
在构建中访问,所以我不知道在哪里可以调用Provider
在我的代码中。除此之外,我在应用程序中使用的 Avatar 来自一个互联网 URL。使用 Image Picker 选择后,新头像照片将上传到服务器。新照片的名称替换旧照片的名称。因此我的应用程序甚至不知道有什么变化。即使重新加载页面也不起作用。但是,如果我热启动我的应用程序,则会出现新的头像照片。有什么想法我能做什么?
这是图像选择器代码;
目前,Consumers
每当用户通过社交媒体登录获得新头像时,都会正确更新整个应用程序中的头像。新头像被上传到服务器并被ChangeNotifier
通知。这里的代码Provider
是;
所以我尝试将它放入我的Provider
并从 Image Picker 构建中的 onTap 函数中调用它。这是 onTap 函数;
这就是Provider
它的调用;
但这并没有用新的头像更新消费者。我猜是因为头像的外部 url 没有改变,因为照片只是被替换并保持相同的名称。
flutter - Flutter/Dart - 照片已更改但 URL 未更改,因此提供者的消费者未刷新
一旦将新照片上传到服务器以替换旧照片,我就会Provider with ChangeNotifier
发出警报。Consumer
问题是 URL 保持不变,因为照片只是被覆盖并保持相同的名称。因此,消费者不会意识到有任何变化,也不会用新照片刷新旧照片。
如何欺骗 ChangeNotifier 刷新 URL?这Consumer
是我的构建中的;
这是在图库中选择图像并上传以覆盖服务器上的旧图像的位置。
这是带有 ChangeNotifier 的 Provider 中的代码;
任何想法如何欺骗Consumer
相信 url 已更改以使其刷新?
flutter - 找不到正确的提供者在这个 AddSupervisor 小部件上方
Home主管班
AddSupervisor 类
SupervisorProvider 类
然后我得到了这样的错误
错误:在此 AddSupervisor 小部件上方找不到正确的提供程序
这可能是因为您使用了BuildContext
不包括您选择的提供者的 a。有几种常见的场景:
您尝试读取的提供程序位于不同的路径中。
提供者是“范围的”。因此,如果您在路由中插入提供程序,那么其他路由将无法访问该提供程序。
您使用的
BuildContext
是您尝试读取的提供程序的祖先。确保 AddSupervisor 在您的 MultiProvider/Provider 下。这通常发生在您创建提供程序并尝试立即读取它时。
例如,而不是:
Widget build(BuildContext context) { return Provider( create: (_) => Example(), // 将抛出 ProviderNotFoundError,因为
context
// 关联到作为Provider<Example>
child 父级的小部件:Text(context.watch() ), ), }考虑像这样使用构建器:
Widget build(BuildContext context) { return Provider( create: (_) => Example(), // 我们
builder
用来获取一个BuildContext
可以访问提供者的 new builder: (context) { // 不再抛出 return Text(context 。手表()), } ), }
如果这些解决方案都不起作用,请考虑在 StackOverflow 上寻求帮助: https ://stackoverflow.com/questions/tagged/flutter 相关的导致错误的小部件是:AddSupervisor file:///D:/Android_project/fyp/lib/屏幕/主页/HomeSupervisor.dart:20:83
有什么我想念的吗?我需要有人帮助
flutter - 等效于 Riverpod 中的 ChangeNotifierProvider 小部件
Riverpod 中是否有与 Provider 的 ChangeNotifierProvider 小部件等效的小部件?
用例是仅当父窗口小部件为 ChangeNotifierProvider/或在其窗口小部件树中具有 ChangeNotifierProvider 的页面已使用create
. 我希望在弹出页面时自动处理提供程序,并从小部件树中删除 ChangeNotifierProvider 小部件,就像在 Provider 中一样。
flutter - 如何在消费前使用提供者加载数据
在我的应用程序中,我以下列方式使用提供程序;
我像这样创建时间表视图;
创建函数;
在加载 ScheduleView 之前,我还想加载在 ScheduleView 中显示的初始数据集。
加载函数在名为“getSchedule()”的模型内部
目前我在“ScheduleView”中使用 initState 来调用这个函数并加载初始数据。
有没有办法在调用构建器之前加载数据。我见过名为 MultiProvider 和 ChangeNotifierProxyProvider 的选项。
它们可以在这里使用吗?
flutter - Flutter——关于架构、提供者和从服务器获取数据的问题
我是一个相当新的 Flutter 程序员,所以请原谅以下问题中的任何缺陷......</p>
我正在与结构/架构困境作斗争。这是背景: 应用原理:
- 我的应用程序允许其用户检查他们所在地区可用的少量工作,以及他们是否有时间并在适当的位置执行工作以获得报酬,
- 该应用程序使用标准 REST API(不是 Firebase),因此不能依赖服务器发送状态更改通知来触发重新获取数据,
- 关键要素是 (1) 给定地址的最新工作列表 - 其他用户可能已经在某个地址接受了工作(定时刷新列表,例如每 5 分钟一次),以及 (2) 应用程序需要跟踪用户的位置,如果用户在刷新时间内移动超过 2 公里,则相应地向服务器请求工作,
挑战:
- 我猜在基本层面上,应用程序应该有以下提供者:(1) auth - 提供 authToken,(2) geolocation - 定期检查用户的位置,(3) jobList - 特定位置(获取高级职位描述和地址(, (4) jobDetails – 获取执行特定作业的准确指令,
- 如您所见:(2) 地理位置和 (3) jobList – 需要以编程方式刷新(间隔或在地理位置发生某些变化时),而 (1) auth, (4) jobDetails 由用户触发。
最大的问题 ;) 是……对于上述类型的应用程序的正确架构是什么?进一步来说:
- 我应该使用服务连接到服务器 API,而这些服务又会被提供商使用吗?
- 如何确保在计时器上以编程方式重新获取jobList并从地理位置重新定位事件?
- 如何持续监听位置变化以检测重定位但又不会让应用程序不堪重负?
- 我应该将(快速过时的)jobLIst 数据存储在其对象类中,还是应该使用设置提供程序或本地数据库,或者可能有一种简单的方法来存储最新的 JSON 响应而不必构建设置提供程序或数据库映射?
- 在我对 Auth api 的所有调用中,我需要提供 deviceId - 如何使其在整个应用程序中可用 - 这是非常静态的,但在身份验证中需要,所以检查它是否应该是身份验证提供程序的一部分?
如果您能对上述内容发表评论或提出相关示例的来源,我将不胜感激。
谢谢和欢呼!
flutter - 不同页面之间的ChangeNotifierProvider
我已经被搜索过,但我没有找到任何问题(对不起,如果我还有一些问题......)我的问题是:我有两个页面,我在这两个页面中使用了 ChangeNotifierProvider,但是当我在第二页并返回第一页,小部件不会用新值刷新。编码:
主要飞镖:
first_page.dart:
second_page.dart:
提供者.dart:
非常感谢大家!!
flutter - 具有现有 ChangeNotifier 的 ChangeNotifierProxyProvider
我想知道如何将 ChangeNotifierProxyProvider 与现有的 ChangeNotifier 一起使用?
文档清楚地说明了使用 ChangeNotifierProvider.value 来提供现有的 ChangeNotifier。
但
ChangeNotifierProxyProvider 没有 .value 方法,所以可以将我现有的 ChangeNotifier 提供给 create 方法吗?