mirror of
https://github.com/foss42/apidash.git
synced 2025-12-01 18:28:25 +08:00
Refactor response widgets
This commit is contained in:
67
lib/widgets/response_body.dart
Normal file
67
lib/widgets/response_body.dart
Normal file
@@ -0,0 +1,67 @@
|
||||
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,
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user