import 'package:flutter/material.dart'; import 'package:apidash_core/apidash_core.dart'; import 'package:apidash/models/models.dart'; import 'package:apidash/utils/utils.dart'; import 'package:apidash/consts.dart'; import 'error_message.dart'; import 'response_body_success.dart'; class ResponseBody extends StatelessWidget { const ResponseBody({ super.key, this.selectedRequestModel, }); final RequestModel? selectedRequestModel; @override Widget build(BuildContext context) { final responseModel = selectedRequestModel?.httpResponseModel; if (responseModel == null) { return const ErrorMessage( message: '$kNullResponseModelError $kUnexpectedRaiseIssue'); } var body = responseModel.body; var formattedBody = responseModel.formattedBody; if (body == null) { return const ErrorMessage( message: '$kMsgNullBody $kUnexpectedRaiseIssue'); } if (body.isEmpty) { return const ErrorMessage( message: kMsgNoContent, showIcon: false, showIssueButton: false, ); } final mediaType = responseModel.mediaType ?? MediaType(kTypeText, kSubTypePlain); // Fix #415: Treat null Content-type as plain text instead of Error message // if (mediaType == null) { // return ErrorMessage( // message: // '$kMsgUnknowContentType - ${responseModel.contentType}. $kUnexpectedRaiseIssue'); // } var responseBodyView = getResponseBodyViewOptions(mediaType); var options = responseBodyView.$1; var highlightLanguage = responseBodyView.$2; if (formattedBody == null) { options = [...options]; options.remove(ResponseBodyView.code); } return ResponseBodySuccess( key: Key("${selectedRequestModel!.id}-response"), mediaType: mediaType, options: options, bytes: responseModel.bodyBytes!, body: body, formattedBody: formattedBody, highlightLanguage: highlightLanguage, ); } }