问题标签 [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.
flutter - AsyncSnapshot 状态始终为 connectionState.waiting
我正在尝试根据 TextField(搜索栏)的内容动态更新 ListView。
ListView 位于“ScenariosList”小部件内,并包含“Scenarios”列表,这是一个自定义小部件,包含标题、内容和其他数据位(不是真正相关但有助于上下文)。它的内容是通过“ScenariosBloc”从数据库中获取的。
TextField 包含在“SearchBar”小部件中。
目标是在检测到 TextField 发生更改时更改 ListView 的内容。
我目前正在使用两个单独的集团。ScenariosBloc 从数据库中获取所有场景,FilterScenariosBloc 使 List 呈现一个小部件以显示场景,如果它的标题包含 SearchBar 内 TextView 中的字符串。
我正在使用嵌套的 StreamBuilders 来执行此操作(请参见下面的代码)。
场景列表.dart
搜索栏.dart
Textfield 的 onChanged 方法包含:
FilterScenariosBloc.dart
用户输入发送到FilterScenariosBloc 一切正常,但状态filterSnapshot
始终是connectionState.waiting。关于如何解决这个问题的任何想法?
dart - 实现 BLoC 的小部件是否一定是 StatefulWidgets?
我是 BLoC 模式的新手,出现了一个我无法在其他地方找到的问题。使用 flutter_bloc 库,我可以访问 BlocBuilder 小部件,只要 BLoC 的状态发生变化,它就会重新构建。由于我正在处理独立于框架的状态,是否有必要将父小部件(比如包含来自 BLoC 的数据的卡片)声明为有状态?
我已经能够成功地将 BlocBuilders 实现为有状态和无状态小部件的子级,但我无法决定哪种是最佳实践,或者是否存在任何需要有状态的情况。
如果您不需要更新 BlocBuilder 之外的任何内容,我想我会说无状态很好,但是如果您要添加诸如 RefreshIndicator 之类的东西并且必须为此实现逻辑,那么您将需要有状态(并有条件地将事件传递给 BLoC)。那是对的吗?
我确定我在这里过度解释了,但本着这种精神,如果有助于理解我的问题,我在下面提供了一些代码。
这是与我的项目有关的简化无状态实现:
和有状态的实施:
flutter - 如何在 BLoC 模式上更改 Widget 时添加动画过渡?
所以我一直在关注bloc login tutorial,虽然我设法完成了它,但我对 Flutter & Dart 还是很陌生。
有一部分代码根据状态返回不同的小部件,而不是新的 Scaffold。由于它不使用路由,因此页面之间的过渡看起来不连贯且尴尬。
我尝试添加一个 Navigation.push 包装返回,如下所示:
但是,虽然在语法上没有错误,但这会使应用程序崩溃。有谁知道在维护 BLoC 示例的同时实现这一点的方法?谢谢。
dart - StreamBuilder TextField 在其他地方更改时不会更新其值
我有一个遵循 BLOC 模式的反应式登录表单。我正在尝试以编程方式清除其中的所有值。在我的 Bloc 中,我的提交函数将空字符串传递给我的流接收器:
当我按下调用此submit()
函数的提交按钮时,我收到两个文本字段的错误消息,因为电子邮件和密码的值在幕后发生了变化,但它们在 TextFields 中没有视觉更新。这是我的 TextFields 和提交按钮的 StreamBuilders:
这是我在 Bloc 中用于验证器的代码:
在我的验证器中,每当出现错误时,我都会发出一个空字符串。这使得 submitValid getter 在用户使曾经有效的内容无效时起作用。
dart - Flutter 'provider.bloc' 的 BloC 模式返回 null
我正在尝试在 register_page 上实现 BLoC 模式,但是当我尝试调用上下文时,似乎provider.bloc
返回了null
。在这里尝试了一些建议 stackoverflow 但没有运气。有人想告诉我我的代码有什么问题吗?见下文:
bloc_provider.dart
register_page.dart
其他部分
这可能是我MaterialPageRoute
在Navigator.push
. 请参阅下面的导航代码:
我相信我在register_page.dartScaffold
下BlocProvider
的包装方式是正确的……我不知道为什么它仍然返回值。null
flutter - 带有 StreamBuilder 的 TextField 的初始值
我在 aTextField
的帮助下进行了渲染StreamBuilder
,遵循BLoC
带有接收器和流的模式。
我的问题是如何设置初始值?我已尝试使用StreamBuilder
'initialData
属性,但TextField
.
dart - 如何从 B-BLoC 函数调用 A-BLoC 函数?
所以,像大多数人一样,我是 Flutter、Bloc 和 Firebase Analytics 的新手。有几种方法可以通过让一个听另一个来同步块,但这与我的情况完全不匹配,因为我想跟踪一些“与分析相关的状态变量”。
问题:有什么方法可以AnalyticsBloc.sendEvent
触发AppBloc
?
还是我应该以不同的方式设计它?
dart - 使用 SQLite 的 UI 缓慢
我开始在 Flutter 中开发一个简单的应用程序。我使用 SQLite 数据库来存储一些信息,然后在 ListView.Builder() 上显示它。
我在这里几乎也是如此。问题是当我删除例如几个帧的 ListTile 时,我可以看到删除 ListTile 在消失之前闪烁(我已经实现了滑动删除 ListTile)。我猜这是因为它需要时间来更新数据库并获取新记录并使用新信息重建 ListView。
我能做些什么来解决这个问题并使其更具响应性?欢迎任何提示。
PS:我已经开始研究BLOC模式了。不确定它是否有助于解决这个问题。
谢谢
dart - 使用 bloc 模式时缓存数据
我想在我的应用程序中实现缓存,这样数据只加载一次,然后每次重新加载页面时,不必再次获取数据
下面的代码是一个页面块。
上面的代码只是从数据库中获取一个列表。我希望它仅在应用程序启动时从数据库中获取,然后在后续请求中从缓存中加载数据。谢谢。
flutter - Flutter BLoC:构建()方法中 StreamBuilder 中的 Navigator.pop
我遵循 BLoC 模式并订阅流,并对构建方法中的状态变化做出反应。加载数据后,我想关闭屏幕。
当我Navigator.pop(context, true);
在build()
方法中做时,我得到:
在 BLoC 模式中处理此类情况的正确方法是什么?
我想出的解决方案之一是开始收听流媒体initState()
。在这种情况下,我需要broadcast()
我的流,因为我有 2 个订阅者。
有没有更好的解决方案?