问题标签 [flutter-bloc]

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

flutter - 电子邮件验证不随电子邮件文本字段更改而更新

所以,这是我的表单小部件的相关部分。

每次电子邮件字段更改时,我都会EmailChanged向我的 RegistrationFormBloc 添加一个事件来验证该值。这是集团逻辑。

这是该_onEmailChanged()功能的 logoc。

这里相关的是emailError字段。这是该validateEmail()函数的代码。

似乎导致错误的行是emailIsValidForm()函数(因为返回了响应错误)。这是该功能的代码。我使用EmailValidator包来验证电子邮件。

我遇到的问题是即使我输入了有效的电子邮件地址,错误字段也会​​显示“电子邮件无效”。

关于造成这种情况的任何建议?

这是我的状态和事件类。

这是我的事件代码。

这是_onFirstNameChange()

_validateFirstName()方法。

还不如包括我的构建方法。

_showFormSection() 向用户显示适当的表单部分(名称部分、电子邮件部分等...),以使其具有“多页表单”效果。该函数只是根据当前索引返回适当的小部件。

0 投票
0 回答
65 浏览

flutter - Flutter BLoc:构建一系列 Flutter 页面/路由并保存状态

我的颤振应用程序有一系列收集数据的页面(一系列表单)。每次用户输入数据并进入下一个屏幕时,数据都会存储在我的远程数据库中。用户应该能够返回并更改他输入的数据。这意味着每次用户导航到前一个屏幕时,都需要检索屏幕的状态。如何使用 Bloc 构建此解决方案(我使用的是 flutter_bloc 包)?

这是我想到的一些选项

  1. 对所有这些页面使用一个 Bloc 并将该 bloc 传递给所有这些页面:如果我使用这种方法,应该有一种方法可以在用户单击后退按钮重新访问该页面时检索上一页的当前状态页。我不确定这是如何完成的。
  2. 使用 hydrad bloc 包 - 如果我使用这个包,每个屏幕的状态都会在本地保存,所以我可以在每个屏幕上拥有一个块,并在用户返回时检索屏幕的状态。
  3. 每个屏幕使用一个块:在这种情况下,如果没有持久性,我不确定当用户导航返回时如何检索页面的当前状态?

是否有任何其他解决方案可以实现这一目标(最好使用 bloc)?

提前致谢 !

0 投票
3 回答
9049 浏览

flutter - flutter_bloc :使 initialState 方法异步

我正在使用 flutter_bloc 包来管理我的应用程序中的状态。我有一个用例,我必须从远程数据库加载初始状态。这要求 initialState 方法是异步的,但事实并非如此。

如果不使用 initialState 方法,从远程数据库加载 Bloc 初始状态的最佳方法是什么?

0 投票
1 回答
3035 浏览

flutter - 如何在颤动中重复更新倒数计时器

设想

在这个应用程序中有一个倒数计时器,每当我打开应用程序时,倒数计时器会自动从 5 开始并在 0 处停止。

问题

当计时器编号达到 0 并自动回到 5 并再次启动(循环)时,如何更新/更改计时器编号。以下是 dart 和 bloc 代码。

代码飞镖

TimerBloc.dart

TimerEvent.dart

TimerState.dart

主要.dart

0 投票
1 回答
1414 浏览

flutter - Flutter:在 Bloc 转换之间的小部件中保存状态

我正在使用flutter_bloc在我的应用程序中实现 bloc 。

我有一个可以进行多次转换的屏幕。因此,在页面上的不同操作上调度了多个事件,并且返回的每个状态都代表了该特定事件的返回状态。

如何在这些转换之间维护我的小部件中的状态?

例如,屏幕有 3 个按钮。每个按钮单击都会调度一个事件,并且状态会返回一段文本。所以点击 button1 后,状态返回一个带有文本的 State 对象,并且按钮被这个文本替换。现在,当用户单击 button2 时,它会返回另一段文本并替换 button2。但是当这种情况发生时,button1 的文本消失了。

我有一个 StatefulWidget 的状态看起来像这样 -

但是更新此状态不起作用,因为调用 setState 会引发此错误-

我该如何解决这个问题?

提前致谢。

0 投票
0 回答
1470 浏览

flutter - 使用 bloc 中的状态显示加载指示器,如果发生错误则显示对话框

我是 Flutter 开发的新手,我正在构建一个应用程序,我在其中使用 Bloc 库与状态和事件。我有一个页面,用户可以在 TextFormField 中输入他的电子邮件地址。之后,他需要按下发送按钮,应用程序将通过 Bloc 发送 api 调用。我的问题是在 api 调用运行时显示圆形进度对话框,然后隐藏圆形加载指示器并显示成功对话框或错误消息。

我正在使用干净的架构,所以应用程序是 UI - Bloc - Usecas - Repository - RemoteDataSource 之类的结构。下面是我使用的 UI 和 Bloc 的代码,当前应用程序显示一个对话框,但是我不确定这是否是根据我从 Bloc 收到的状态更新 UI 的正确方法。此外,我不确定当状态为 Loaded 或 Error 时如何显示对话框,因为与当前实现一样,我需要返回一个小部件。任何帮助将不胜感激。

0 投票
1 回答
1411 浏览

flutter - 在状态更改期间触发 bloc 事件以打开模式

使用flutter_bloc在flutter状态更改期间触发事件是否是一种好习惯(或至少可能)?如:

在这种情况下,我的用例是触发模态,作为对某些状态变化的反应,但是每次我这样做(尝试使用 BlocListener 和 BlocBuilder)时,模态总是被触发两次,因为你必须关闭 2 个模态。

我必须这样做,因为我做了 2 个 api 调用,每个事件触发一个调用 PostEvent 和 GetEvent 比方说,我希望模态仅在第二个完成后打开。

PostEvent -> Request -> StateChange -> Builder -> add(GetEvent) -> Request -> StateChange -> Builder -> showModal()

我还想知道我是否应该以相同的方法进行两次调用,但尚未测试过。

在进行了一些挖掘之后,我发现即使只添加了一次事件,小部件也会以相同的状态重建 2 次(例如 GetFinished),因此显示了 2 个模态。

任何帮助,将不胜感激。

谢谢

0 投票
0 回答
180 浏览

firebase - Flutter Bloc 和 Firebase 图像架构

我正忙于我的第一个颤振应用程序,并且有一个关于如何设置架构以正确管理应用程序中的图像/媒体的问题。我使用颤振 bloc todos 示例作为起点。我的问题是如何将存储在 Firestore 中的图像作为实体和模型属性进行管理?我已将我的问题分解为以下内容:

  1. 如果TodoEntity我将图像(或图像列表)添加为属性,那么正确使用的类是什么(Image)?或者我应该将 URL 存储为String?
  1. 那么在我的Todo课堂上,这个图像是如何存储的呢?又是图片还是网址?我假设toEntity()andFromEntity()方法是转换发生的地方。

  2. 在我有一个“父”类的情况下,例如ListOfTodos它有一个List<Todo> todos属性,在这种情况下如何管理它?ListOfTodosEntity 类是否应该存储待办事项的 ID 并在fromEntity()方法中从数据库中收集它们?

我的想法是在类中存储一个 URL并在方法内Entity将其转换为类中的 Image 对象?这是正确的想法吗?TodofromEntity

任何帮助是极大的赞赏。如果您碰巧有一个这样做的例子,请提供一个链接,因为我找不到一个。

0 投票
1 回答
2209 浏览

android - Flutter MultiBlocProvider 性能

我有一个MultiBlocProvider分配给一个应用程序,它有一个底部导航栏来浏览主要路线,比如HomeSearchWishlist ...

setState(){}用来更改currentPage每条路线的。

最近我通过使用包向它们中的每一个添加了Blocsflutter_bloc ,并且我正在使用BlocProvider为每个提供 bloc BlocBuilder

可以MultiBlocProvider用来提供我需要的所有 BlocsProviders 吗?

他们可能是 10 多个提供商,这会影响应用程序的性能吗?

0 投票
1 回答
809 浏览

flutter - Flutter Bloc 与“InProgress”的提供者状态管理

我可以通过Flutter Bloc中的“yield”运算符管理 InProgress 状态,

我的集团:

页:

(状态:InitState、ContentLoadInProgress、ContentLoadSuccess、ContentLoadFailure)

如何在提供者状态管理中管理“ContentLoadInProgress”状态?