Files
apidash/lib/widgets/response_headers.dart
2025-04-05 21:14:34 +05:30

86 lines
2.1 KiB
Dart

import 'package:flutter/material.dart';
import 'package:apidash_core/apidash_core.dart';
import 'package:apidash_design_system/apidash_design_system.dart';
import 'package:apidash/consts.dart';
import 'button_copy.dart';
import 'table_map.dart';
class ResponseHeadersHeader extends StatelessWidget {
const ResponseHeadersHeader({
super.key,
required this.map,
required this.name,
});
final Map map;
final String name;
@override
Widget build(BuildContext context) {
return SizedBox(
height: kHeaderHeight,
child: Row(
children: [
Expanded(
child: Text(
"$name (${map.length} $kLabelItems)",
style: Theme.of(context).textTheme.labelMedium?.copyWith(
fontWeight: FontWeight.bold,
),
),
),
if (map.isNotEmpty)
CopyButton(
toCopy: kJsonEncoder.convert(map),
),
],
),
);
}
}
class ResponseHeaders extends StatelessWidget {
const ResponseHeaders({
super.key,
required this.responseHeaders,
required this.requestHeaders,
});
final Map responseHeaders;
final Map requestHeaders;
@override
Widget build(BuildContext context) {
return Padding(
padding: kPh20v5,
child: ListView(
children: [
ResponseHeadersHeader(
map: responseHeaders,
name: kLabelResponseHeaders,
),
if (responseHeaders.isNotEmpty) kVSpacer5,
if (responseHeaders.isNotEmpty)
MapTable(
map: responseHeaders,
colNames: kHeaderRow,
firstColumnHeaderCase: true,
),
kVSpacer10,
ResponseHeadersHeader(
map: requestHeaders,
name: kLabelRequestHeaders,
),
if (requestHeaders.isNotEmpty) kVSpacer5,
if (requestHeaders.isNotEmpty)
MapTable(
map: requestHeaders,
colNames: kHeaderRow,
firstColumnHeaderCase: true,
),
],
),
);
}
}