Flutter 图像资产和流值仅在用户交互后呈现

Flutter Image assets and Stream values only render after user interactions

第一次打开应用程序时,在我点击屏幕或开始滚动之前,图像和流值不会呈现。确保 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 应用程序。在我的内部,我在成功的 Auth 上创建了一个 User Bloc。在这种情况下,我遇到了上述问题。该问题仅发生在基于 User Bloc 发出的状态呈现的 Widget 上。因此,我没有在状态更改时返回这些小部件,而是更改了我的侦听器以在状态更改时导航到这些小部件。现在,为了从此导航路线调用我的 User Bloc,我必须将 User Bloc 移动到 Material 应用程序的顶部。这样做解决了我的问题。

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