创建有关聊天通知的徽章时,出现此问题:“无法将参数类型”Future Function(BuildContext,ChatsState)“分配给参数类型”Widget Function(BuildContext,ChatsState)“。"。有人能帮助我吗?
下面我上传我的代码:
@override
Widget build(BuildContext context) {
return BlocProvider(
create: (context) => ChatsBloc(
// apiClient: context.read<ApiClient>(),
chatsRepository: context.read<ChatsRepository>(),
usersRepository: context.read<UsersRepository>(),
)..add(
const GetChats(),
),
child: BlocBuilder<ChatsBloc, ChatsState>(
builder: (context, state) async {
return Badge(
showBadge: await context.read<ChatsBloc>().isRead(),
child: const Icon(
Icons.mode_comment_outlined,
),
);
},
),
);
}
这是我的集团:
Future<bool> isRead() async {
final user = _usersRepository.currentLoginUser;
final isRead = _chatsRepository.findUserUnreadChat(user.id);
return isRead;
}
这是我的回购:
Future<bool> findUserUnreadChat(
String userId,
) async {
final chatData = await _apiClient.findUserChat(userId);
if (chatData == null) {
return false;
} else {
final chat = await _fromChatDataToUserChat(chatData);
return chat.isRead;
}
}
非常感谢您的帮助!
1条答案
按热度按时间vyswwuz21#
BlocBuilder
的builder
参数不能异步,需要马上返回widget。您应该通过BLoC消息向构建器函数提供等待
isRead()
的结果,而不是在构建函数中执行此异步工作。可能
state
元素已经有了这些信息?