问题标签 [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.
dart - Flutter 中何时何地调用 API
我正在实现包含三个选项卡的颤振应用程序,在这个应用程序中我使用块模式,块包含 API 调用和流。
现在 API 调用是在块类的构造函数中进行的。
我有三个选项卡,因此它将创建三个实例,FeedListingBlock
并且我必须StreamWidgets
收听流。
如果我这样做,它会在每次主屏幕状态发生变化时进行 API 调用,因为它会重新绘制选项卡。
那么当我们使用TabBarView
类似的小部件时,在哪里调用 API 呢?
我们是否必须在initState
或build
方法中调用API?
flutter - BottomNavigationBar 页面更改导致 StreamBuilder 数据重新加载
在底部导航里面我有 2 页。从网络加载数据并显示在 SliverList 中的第一页和显示静态列表数据的另一页。
从第 1 页移动到第 2 页后,第 1 页所有网络数据都消失了。我已经使用了 PageStorageKey 但仍然无法正常工作。但第二页从未重新加载。
为什么第一页没有保存具有 StreamBuilder 的状态?
我的代码:
底部导航页面:
主页:
类 HomePage 扩展 StatefulWidget { HomePage({ Key key, }) : super(key: key); @override _HomePageState createState() => _HomePageState(); }
聊天页面:
类 Chat 扩展 StatelessWidget { Chat({ Key key, }): super (key: key);
flutter - Scoped Model、BLoC 模式、StreamBuilder 和 Inherited Widget(或 Model)我应该选择哪一个,为什么?
我想我现在至少对如何在我的应用程序中使用BLoC、Stream Builder和Inherited Widget(或Model)有了一个模糊的想法(没什么特别的,但对我来说这需要时间),但是使用Scoped Model
我有一个一种生存危机:我觉得他们大多可以做同样的事情,或者至少我可以用他们中的任何一个获得相同的明显结果,但我没有能力理解何时 以及为什么一个人比另一个人更好。
firebase - Flutter:Firebase 身份验证和 Firestore 快照流
在我的颤振应用程序中,我使用 firebase 进行身份验证和 firestore 数据库。我也在尝试遵循 BLOC 模式。
成功登录后,我需要使用存储在文档中的一些数据来构建我的 UI 屏幕:
现在,一切正常。
Auth 是 Firebase Auth 扩展 InheritedWidget 的包装类,其中 .uid() 方法返回带有用户标识符的 Future。然后我使用 StreamBuilder 构建 UI,通过 uid 获取 DocumentSnapshot。
所以这是我的问题:是否有更好的方法来实现这一点并避免将 StreamBuilder 嵌套在 FutureBuilder 中?
dart - 如何在 Flutter 中使用 Bloc 正确设置 DropdownButton 的值?
我是 Bloc 编程模式的新手,在我的 bloc 类中使用 Dropdown 时遇到问题:
在我的小部件页面中,我添加了以下下拉小部件,以便所有内容都由 Bloc 类处理:
但是这样做,在设置 DropdownButton 的值(值:snapshot.data)时出现此错误:
我尝试了很多想法,例如在设置时检查 snapshotValues.data 是否不为空。我知道该值必须是列表中的某个值或 null。但是我放在那里的任何逻辑都没有使这个错误消失。如果我将值设置为 null,它可以工作,但所选值不会显示。我做错了吗?有更好的方法吗?我该如何解决这个问题?谢谢!
dart - 在 Firestore 中更改后从 BLoC 返回更改
我正在用 Flutter 做一些实验并遇到了一些问题。基本上,我使用带有 BLoC 模式的 Flutter 和 Firestore 作为远程存储。我有这样的事情:
排队:
我想用对象集合返回新状态。如果我只是简单地返回新状态,那么我在StatefulWidget中的构建方法不会被调用。您有什么建议我如何在 Firestore 集合中的每次更改后并基于该重建小部件通过集合传递新状态?
dart - Flutter BloC 模式:基于另一个 BloC 的流更新 BloC 流
设想
我正在尝试创建一个具有两个屏幕的 Flutter 应用程序:ContactsScreen
和EditContactScreen
. 在ContactsScreen
中,用户将看到一个DropdownButton
和Text
。DropdownButton
保存Contact
通过 api 获取的对象列表。每当用户从 中选择一个Contact
时DropdownButton
,该Text
对象将显示有关该特定联系人的信息。此外,在Contact
选择时,RaisedButton
将出现一个,单击它时,将引导用户到EditContactScreen
编辑选定的Contact
。我正在使用 BloC 模式。我创建了两个 BloC,每个屏幕一个:ContactsScreenBloc
和EditContactScreenBloc
. ContactsScreenBloc
持有 aStream<Contact>
和 aSink<Contact>
用于管理选定的Contact
. 而EditContactScreenBloc
持有流和汇Contact
字段。最后,我有一个GlobalBloc
包含Contact
s 的列表。是GlobalBloc
一个InheritedWidget
包裹MaterialApp
. 该应用程序过于简单,并且是较大应用程序的一部分,因此,我无法合并ContactsScreenBloc
and EditContactScreenBloc
,并且应该有一个GlobalBloc
具有Contact
s 列表的应用程序。
问题
我实际上对 Flutter 还很陌生,所以我不确定我的方法是否合理。如果是,那么当用户导航到EditContactScreen
并成功更新 时Contact
,我如何将其反映在所Contact
选中ContactsScreen
?
代码片段
联系人.dart
全局.bloc.dart
Contacts_screen.bloc.dart
edit_contacts_screen.bloc.dart
global.provider.dart
联系人.screen.dart
edit_contact.screen.dart
dart - 如何在 Flutter TextField 中使用 BLOC 模式进行后端验证?
我想创建一个 TextField 来检查数据库中是否存在该值。
如何使用带有TextField
小部件的 BLOC 模式进行异步验证?我应该使用StreamTransformer
将错误添加到Stream
? 我尝试使用DebounceStreamTransformer
,但它只是阻止Stream
接收新值。
这是我的Observable
这是我的StreamTransformer
这是我的Widget
oop - 通过字段、方法或 getter 公开 BLOC 流
我正在为我最新的 Flutter 应用程序使用 BLOC 模式,并且我开始在输出流中使用类似这样的东西:
但慢慢地,我发现自己在做类似这样的事情,一段时间后使用一种方法(或吸气剂):
对于想看的人... getter for todos
in TodosInteractor
:
当我查看不同的代码时,我看到第一个示例使用字段而不是方法来公开流,但我不明白为什么我会选择一个而不是另一个。在我看来,创建另一个控制器只是为了推动流有点多……除了在我的 todos 流定义中不可变之外,这还有什么好处吗?还是我只是分裂头发?
sql - 如何在 BLoC 模式中调用 sink.fromFuture?
我陷入了这种情况:我正在尝试利用 BLoC 模式来处理数据库,但是当我不知道如何在 Stream 的接收器中调用 .fromFuture 时
这是代码:
该错误显然表明
你能帮助我吗?提前谢谢你弗朗切斯科