问题标签 [flutter-state]

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 回答
1390 浏览

flutter - 在颤振多选列表中,在一个多选中选择一个项目时,应选择具有相同项目的所有其他多选

我有多个多选下拉菜单,通过下拉菜单重复选项。示例 Dropdown1 - 选项 [A,B,C,D] Dropdown2 - 选项 [D,E,F,G] 所以我希望当我在第一个下拉列表中选择选项 A,D 时,第二个下拉列表的选项 D 也被选中同时。

问题是 FlutterMultiChipSelect (package: flutter_multi_chip_select) 小部件不提供像 on_selection/on_change 这样的任何事件,我可以在其中编写代码来更改其他多选下拉菜单的选择。它在内部管理选择更改。

我尝试了提供者来实现它,但提供者在我调用注册提供者的对象的设置器/获取器之前不起作用。但是 FlutterMultiChipSelect 需要对列表的引用。所以我不能明确地调用设置器。

0 投票
0 回答
100 浏览

firebase - Flutter:如何防止在通过电子邮件验证用户时才显示主页的情况下出现奇怪的导航?

预期流程:仅在用户验证其电子邮件时显示主页。实际发生的情况:用户可以弹出导航堆栈以显示主页。

我正在使用 Firebase 来处理我的身份验证流程,目前正在使用 StreamBuilder 在应用程序的根目录中显示登录页面或主页,具体取决于用户是否经过验证且不为空。

然后我有一个 StreamBuilder,它位于我的 main.dart 文件之上:

然后这是我的 main.dart 文件,其中 StreamBuilder 和 AuthService 类位于小部件树的顶部:

为什么我可以弹出导航堆栈以显示主页,即使我还没有通过电子邮件验证用户?在验证他们的电子邮件后,我需要在我的代码中进行哪些更改以确保用户只能看到主页?有什么资源可以让我更好地理解这些概念吗?

0 投票
0 回答
351 浏览

android - 如果有动画小部件,Flutter 不会重建

我在 Flutter 中遇到了一个奇怪的问题。在我的应用程序中,在我的模型和其他东西被初始化之前,我会显示一个启动画面,然后我会在应用程序的持续时间内显示一个不同的小部件。

事情按预期工作 - 除非第一个 Widget 包含任何动画(CircularProgressIndicator例如)!在这种情况下,当我调用时,该build方法永远不会再次调用setState- 即使我在setState几秒钟后从Timer.

如果我在 IDE 中点击“Hot Restart”或“Hot Reload”,应用程序将按预期重建。如果第一个 Widget 不包含CircularProgressIndicator或任何其他动画小部件,它也可以工作。

最小的例子:

结果与CircularProgressIndicator礼物:

结果没有CircularProgressIndicator,或在“热重载”/“热刷新”之后:

这里发生了什么?

我在调试模式下的 Android 模拟器上看到了这一点。

更新

在另一台电脑上试了一下,果然成功了。那台电脑有 Flutter 版本 1.12.13+hotfix.8,所以我尝试在它不起作用的电脑上将 Flutter 更新到 1.22。结果还是一样。我检查了模拟器——它们在两台计算机上运行完全相同的 API、系统映像、模拟器版本和相同的 HAXM 版本。

在故障计算机上,我尝试使用较低的 Android API - 它有效。所以我尝试更新 API 30 的系统映像修订版 - 新的 AVD 仍然存在同样的问题。作为最后的手段,我将模拟器和 HAXM 更新到了最新版本。现在它可以在 API 30 上运行。所以看起来问题出在模拟器/HAXM 的某个地方,即使完全相同的版本在另一台计算机上也可以运行。

0 投票
1 回答
1735 浏览

flutter - Flutter/Dart - 如何在其他屏幕上的图像选择器后更新图像

我正在使用 Flutter 的Image Picker插件以允许用户更改他们的头像。当他们转到他们的帐户页面时,他们会看到他们的常规头像照片,顶部带有相机图标。单击相机图标将允许他们从相机中拍照或从他们的图库中选择新头像。选择新的后,头像照片会自动更新。但是,当离开他们的帐户页面时,旧头像在应用程序的其余部分中可见。我在其他任何地方都使用ProvideraChange Notifier和for Avatars。Consumers但问题是我只能Provider在构建中访问,所以我不知道在哪里可以调用Provider在我的代码中。除此之外,我在应用程序中使用的 Avatar 来自一个互联网 URL。使用 Image Picker 选择后,新头像照片将上传到服务器。新照片的名称替换旧照片的名称。因此我的应用程序甚至不知道有什么变化。即使重新加载页面也不起作用。但是,如果我热启动我的应用程序,则会出现新的头像照片。有什么想法我能做什么?

这是图像选择器代码;

目前,Consumers每当用户通过社交媒体登录获得新头像时,都会正确更新整个应用程序中的头像。新头像被上传到服务器并被ChangeNotifier通知。这里的代码Provider是;

所以我尝试将它放入我的Provider并从 Image Picker 构建中的 onTap 函数中调用它。这是 onTap 函数;

这就是Provider它的调用;

但这并没有用新的头像更新消费者。我猜是因为头像的外部 url 没有改变,因为照片只是被替换并保持相同的名称。

0 投票
1 回答
585 浏览

flutter - 未处理的异常:在构建期间调用了 setState() 或 markNeedsBuild()。在 BlocListener 内部

我是新来的颤振并试图在应用程序中实现 bloc 。我想通过事件改变flag的值,在flag的布尔值改变后刷新状态。我尝试在博客侦听器中设置状态(),但返回以下异常。

下面是我的代码。帮我解决这个问题。提前致谢。

0 投票
0 回答
23 浏览

flutter - 我收到以下错误 NoSuchMethodError was throwed building Consumer(脏,依赖:[InheritedProvider]):

我收到以下错误 NoSuchMethodError was throw building Consumer(dirty, dependencies: [InheritedProvider]): This is the app.dart file

运行时错误是

这是应用模型

在添加消费者小部件之前它工作正常,但现在我必须添加应用程序结帐功能,我已经添加了代码,但我收到错误请建议我在哪里做错了

0 投票
0 回答
823 浏览

flutter - 在 Flutter 中更新对象不起作用

我尝试从子小部件更新 Flutter 中的对象。我要更新的对象作为参数传递给孩子。问题:对象不想改变。我在一个有状态的小部件上工作并用 更新状态setState,但没有任何变化。也许您可以在我的代码中找到错误。

我的对象

我将Guestbook对象传递给子小部件的函数

在下一个小部件上,我更新了数据库中的一些值,并且还想更改我的本地对象,以便用户可以看到更新成功。因此,我将具有更新值的对象作为参数传递回父视图。

正如您在检索新对象后在上面看到的那样,我使用以下方式更新状态setState

Bot 视图中没有任何变化。我总是看到旧的状态。如果我拉刷新以直接从数据库中加载新条目,它会更新。有没有办法简单地更新本地对象,这样我就不需要额外的服务器请求?

0 投票
0 回答
51 浏览

flutter - 如何在本地存储数据并在 FLUTTER 的输入编辑字段中显示和编辑?

我有 2 个屏幕 (1) 设置屏幕 (2) 登录屏幕当我在设置屏幕中输入用户名(文本编辑字段)并按下保存按钮后应用程序导航到登录屏幕上方显示在登录屏幕中的用户名以及当我我回到设置屏幕已经写的用户名没有显示

我想在设置屏幕上显示用户名,并在我输入用户名的同一字段中进行编辑,并将我输入的设置保存在磁盘存储中?

请帮助我如何解决问题

0 投票
4 回答
397 浏览

flutter - 从 initState 导航返回“findAncestorStateOfType”在 null 上调用

我正在 initState 中监听数据库更改(firestore)。在特定更改上,我需要将用户路由到另一个屏幕。

我的 initState 函数:

两种情况

  1. 第一个是数据库更改在用户打开应用程序之前生效。然后当用户打开应用程序时,他直接路由到另一个屏幕,没有任何问题
  2. 另一方面,当应用程序打开并且数据库更改生效时,用户被重定向到另一个屏幕并出现上述错误:

调度程序库捕获的异常在 null 上调用了方法“findAncestorStateOfType”。接收方:null 尝试调用:findAncestorStateOfType()

我不明白为什么错误只在第二种情况下生效。

请帮我弄清楚我做错了什么。提前致谢。

额外信息(完整代码):

问题出在 Navigator 中的 joinUserToGroup 函数中。谢谢!

0 投票
1 回答
260 浏览

flutter - Flutter:从小部件树外部访问提供者

在我的 Flutter 应用程序中,我必须在推送通知到达后立即更新 Provider 的状态,以便可以重建 UI。PushNotifications 服务是一个类(不是小部件),如下所示:

这是我的简单提供者:

由于 PushNotifications 类没有上下文,我无法想出如何实现这一点。