BlocListener不根据状态变化构建小部件



我试图显示基于块状态的文本,所以我决定使用BlocListener,因为我认为这是小部件的主要目的。我想在状态为AuthFailed时显示一个文本。

BlocListener

BlocListener<AuthBloc, AuthState>(
listener: (context, state) {
if (state is AuthFailed)
return Text(
'Oops, Invalid Credentials.',
style: TextStyle(color: Colors.red),
);
},
child: Container(),
),

问题是,当状态为AuthFailed时,文本不会出现,但如果我使用BlocBuilder代替,它就会工作。

BlocBuilder

BlocBuilder<AuthBloc, AuthState>(
builder: (context, state) {
if (state is AuthFailed)
return Text(
'Oops, Invalid Credentials.',
style: TextStyle(color: Colors.red),
);
return Container(
width: 0,
height: 0,
);
},
),

您应该使用BlocBuilder来完成该任务。构建器的目的是基于状态返回一个小部件。

BlocListener用于诸如路由或显示基于状态的零食栏等任务。当你想做一些基于状态的事情。

文档非常出色,请查看:

https://pub.dev/packages/flutter_bloc

此外,侦听器函数是一个void函数,因此当您返回文本小部件时,它将被丢弃。如果你身上有绒毛,你可能会得到一个警告。

相关内容

  • 没有找到相关文章

最新更新