flutter - Flutter Image assets 和 Stream 值仅在用户交互后呈现
问题描述
第一次打开应用程序时,图像和流值在我点击屏幕或开始滚动之前不会呈现。在流构建器中返回小部件之前,请确保 snapshot.data 打印出正确的值。
Row(
mainAxisSize: MainAxisSize.min,
children: [
Image.asset(
'assets/profile_image.png',
height: 36.0,
width: 36.0,
),
SizedBox(width: 10.0),
StreamBuilder<String>(
stream: context.read<UserBloc>().balanceStream,
builder: (context, snapshot) {
print('ConnectionState is ${snapshot.connectionState}');
switch (snapshot.connectionState) {
case ConnectionState.active:
print('Value is ${snapshot.data}');
return NonScalingTextView(
"\$ ${snapshot.data}",
style: TitleTiny,
);
break;
default:
return Container();
}
},
),
],
);
在首次启动后执行一些用户交互或热重新加载或热重启应用程序,小部件按预期呈现。
解决方案
我有一个 Authentication Bloc 作为 Material App 的父母。在里面,我在成功的 Auth 上创建了一个用户块。在这种情况下,我遇到了上述问题。该问题仅发生在基于 User Bloc 发出的状态呈现的小部件上。因此,我没有在状态更改时返回这些小部件,而是更改了我的侦听器以导航到状态更改时的这些小部件。现在,为了从这条导航路线调用我的用户群,我必须将用户群移动到 Material App 的顶部。这样做解决了我的问题。
这解决了它,但我仍然不知道是什么导致以前的架构失败。如果有人可以解释我,那就太好了。
推荐阅读
- mysql - 在 GCP 帐户之间迁移 MySQL 数据库的最佳方法是什么?
- graphql - graphql vue apollo 的本地状态管理
- javascript - 有没有办法兄弟非活动div?
- c - 为什么我的二分查找总是返回 -1
- r - 如何在 Shiny R 中进一步聚合过滤后的数据
- python - 如何在 CMU 发音词典中查找某个 arpabet 发音是否存在?
- amazon-web-services - 如何在 AWS 上设置 Web 套接字并将传入消息记录到 s3(弹性 beanstalk 项目)mysql db
- java - 需要帮助创建使用比较器的 ksmallest 方法吗?
- json - JQ - 如何连接两个数组,一个来自本地 json 的请求
- node.js - 首次请求域时出现 Nginx 屏幕