首页 > 解决方案 > 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();
          }
        },
      ),
    ],
  );

在首次启动后执行一些用户交互或热重新加载或热重启应用程序,小部件按预期呈现。

标签: flutterdartbloc

解决方案


我有一个 Authentication Bloc 作为 Material App 的父母。在里面,我在成功的 Auth 上创建了一个用户块。在这种情况下,我遇到了上述问题。该问题仅发生在基于 User Bloc 发出的状态呈现的小部件上。因此,我没有在状态更改时返回这些小部件,而是更改了我的侦听器以导航到状态更改时的这些小部件。现在,为了从这条导航路线调用我的用户群,我必须将用户群移动到 Material App 的顶部。这样做解决了我的问题。

这解决了它,但我仍然不知道是什么导致以前的架构失败。如果有人可以解释我,那就太好了。


推荐阅读