mirror of
https://github.com/foss42/apidash.git
synced 2025-06-19 13:27:34 +08:00
Merge pull request #320 from mdmohsin7/add-clear-response-functionality
feat: ability to clear current response
This commit is contained in:
@ -96,6 +96,29 @@ class CollectionStateNotifier
|
||||
state = map;
|
||||
}
|
||||
|
||||
void clearResponse(String id) {
|
||||
var map = {...state!};
|
||||
map[id] = RequestModel(
|
||||
id: id,
|
||||
method: state![id]!.method,
|
||||
url: state![id]!.url,
|
||||
name: state![id]!.name,
|
||||
description: state![id]!.description,
|
||||
requestTabIndex: state![id]!.requestTabIndex,
|
||||
requestHeaders: state![id]!.requestHeaders,
|
||||
requestParams: state![id]!.requestParams,
|
||||
isHeaderEnabledList: state![id]!.isHeaderEnabledList,
|
||||
isParamEnabledList: state![id]!.isParamEnabledList,
|
||||
requestBodyContentType: state![id]!.requestBodyContentType,
|
||||
requestBody: state![id]!.requestBody,
|
||||
requestFormDataList: state![id]!.requestFormDataList,
|
||||
responseStatus: null,
|
||||
message: null,
|
||||
responseModel: null,
|
||||
);
|
||||
state = map;
|
||||
}
|
||||
|
||||
void duplicate(String id) {
|
||||
final newId = getNewUuid();
|
||||
|
||||
|
@ -1,5 +1,7 @@
|
||||
import 'package:apidash/providers/providers.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:url_launcher/url_launcher.dart';
|
||||
import 'package:apidash/utils/utils.dart';
|
||||
import 'package:apidash/consts.dart';
|
||||
@ -235,3 +237,34 @@ class SaveButton extends StatelessWidget {
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class ClearResponseButton extends ConsumerWidget {
|
||||
const ClearResponseButton({super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
var sm = ScaffoldMessenger.of(context);
|
||||
return Tooltip(
|
||||
message: 'Clear response',
|
||||
child: TextButton(
|
||||
style: TextButton.styleFrom(minimumSize: const Size(40, 40)),
|
||||
onPressed: () {
|
||||
final selectedId = ref.watch(selectedIdStateProvider);
|
||||
ref
|
||||
.read(collectionStateNotifierProvider.notifier)
|
||||
.clearResponse(selectedId!);
|
||||
sm.hideCurrentSnackBar();
|
||||
sm.showSnackBar(
|
||||
const SnackBar(
|
||||
content: Text('Response cleared'),
|
||||
),
|
||||
);
|
||||
},
|
||||
child: const Icon(
|
||||
Icons.delete,
|
||||
size: 20,
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -116,6 +116,8 @@ class ResponsePaneHeader extends StatelessWidget {
|
||||
color: Theme.of(context).colorScheme.secondary,
|
||||
),
|
||||
),
|
||||
kHSpacer10,
|
||||
const ClearResponseButton()
|
||||
],
|
||||
),
|
||||
),
|
||||
|
@ -186,4 +186,18 @@ void main() {
|
||||
expect(find.byIcon(Icons.save), findsOneWidget);
|
||||
expect(find.text("Save"), findsOneWidget);
|
||||
});
|
||||
|
||||
testWidgets('Testing for ClearResponseButton', (tester) async {
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
title: 'ClearResponseButton',
|
||||
theme: kThemeDataLight,
|
||||
home: const Scaffold(
|
||||
body: ClearResponseButton(),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
expect(find.byIcon(Icons.delete), findsOneWidget);
|
||||
});
|
||||
}
|
||||
|
Reference in New Issue
Block a user