簡體   English   中英

'未來<badge> Function(BuildContext, ChatsState)' 不能分配給參數類型 'Widget Function(BuildContext, ChatsState)'</badge>

[英]'Future<Badge> Function(BuildContext, ChatsState)' can't be assigned to the parameter type 'Widget Function(BuildContext, ChatsState)'

創建有關聊天通知的 Badge 時,出現此問題:“無法將參數類型‘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;
   }
  }

非常感謝您的幫助!

BlocBuilderbuilder參數不能是異步的。 它需要立即返回小部件。

您應該通過 BLoC 消息向構建器 function 提供等待isRead()的結果,而不是在構建 function 中執行此異步工作。

可能state元素已經有了該信息?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM