Merge pull request #320 from mdmohsin7/add-clear-response-functionality

feat: ability to clear current response
This commit is contained in:
Ashita Prasad
2024-03-17 20:12:22 +05:30
committed by GitHub
4 changed files with 72 additions and 0 deletions

View File

@ -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();

View File

@ -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,
),
),
);
}
}

View File

@ -116,6 +116,8 @@ class ResponsePaneHeader extends StatelessWidget {
color: Theme.of(context).colorScheme.secondary,
),
),
kHSpacer10,
const ClearResponseButton()
],
),
),

View File

@ -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);
});
}