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 应用程序的顶部。这样做解决了我的问题。
这解决了,但我仍然不知道是什么原因导致以前的架构失败。如果有人能向我解释一下,那就太好了。
第一次打开应用程序时,在我点击屏幕或开始滚动之前,图像和流值不会呈现。确保 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 应用程序的顶部。这样做解决了我的问题。
这解决了,但我仍然不知道是什么原因导致以前的架构失败。如果有人能向我解释一下,那就太好了。