flutter 无法将“将来< Badge>函数(BuildContext,ChatsState)”分配给参数类型“小部件函数(BuildContext,ChatsState)”

flmtquvp  于 2023-01-10  发布在  Flutter
关注(0)|答案(1)|浏览(146)

创建有关聊天通知的徽章时,出现此问题:“无法将参数类型”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;
   }
  }

非常感谢您的帮助!

vyswwuz2

vyswwuz21#

BlocBuilderbuilder参数不能异步,需要马上返回widget。
您应该通过BLoC消息向构建器函数提供等待isRead()的结果,而不是在构建函数中执行此异步工作。
可能state元素已经有了这些信息?

相关问题