[英]The argument type 'Widget Function(BuildContext)' can't be assigned to the parameter type 'Widget Function(BuildContext, Widget)'?
[英]'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;
}
}
非常感謝您的幫助!
BlocBuilder
的builder
參數不能是異步的。 它需要立即返回小部件。
您應該通過 BLoC 消息向構建器 function 提供等待isRead()
的結果,而不是在構建 function 中執行此異步工作。
可能state
元素已經有了該信息?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.