File tree Expand file tree Collapse file tree 4 files changed +72
-0
lines changed Expand file tree Collapse file tree 4 files changed +72
-0
lines changed Original file line number Diff line number Diff line change @@ -96,6 +96,29 @@ class CollectionStateNotifier
96
96
state = map;
97
97
}
98
98
99
+ void clearResponse (String id) {
100
+ var map = {...state! };
101
+ map[id] = RequestModel (
102
+ id: id,
103
+ method: state! [id]! .method,
104
+ url: state! [id]! .url,
105
+ name: state! [id]! .name,
106
+ description: state! [id]! .description,
107
+ requestTabIndex: state! [id]! .requestTabIndex,
108
+ requestHeaders: state! [id]! .requestHeaders,
109
+ requestParams: state! [id]! .requestParams,
110
+ isHeaderEnabledList: state! [id]! .isHeaderEnabledList,
111
+ isParamEnabledList: state! [id]! .isParamEnabledList,
112
+ requestBodyContentType: state! [id]! .requestBodyContentType,
113
+ requestBody: state! [id]! .requestBody,
114
+ requestFormDataList: state! [id]! .requestFormDataList,
115
+ responseStatus: null ,
116
+ message: null ,
117
+ responseModel: null ,
118
+ );
119
+ state = map;
120
+ }
121
+
99
122
void duplicate (String id) {
100
123
final newId = getNewUuid ();
101
124
Original file line number Diff line number Diff line change
1
+ import 'package:apidash/providers/providers.dart' ;
1
2
import 'package:flutter/material.dart' ;
2
3
import 'package:flutter/services.dart' ;
4
+ import 'package:flutter_riverpod/flutter_riverpod.dart' ;
3
5
import 'package:url_launcher/url_launcher.dart' ;
4
6
import 'package:apidash/utils/utils.dart' ;
5
7
import 'package:apidash/consts.dart' ;
@@ -235,3 +237,34 @@ class SaveButton extends StatelessWidget {
235
237
);
236
238
}
237
239
}
240
+
241
+ class ClearResponseButton extends ConsumerWidget {
242
+ const ClearResponseButton ({super .key});
243
+
244
+ @override
245
+ Widget build (BuildContext context, WidgetRef ref) {
246
+ var sm = ScaffoldMessenger .of (context);
247
+ return Tooltip (
248
+ message: 'Clear response' ,
249
+ child: TextButton (
250
+ style: TextButton .styleFrom (minimumSize: const Size (40 , 40 )),
251
+ onPressed: () {
252
+ final selectedId = ref.watch (selectedIdStateProvider);
253
+ ref
254
+ .read (collectionStateNotifierProvider.notifier)
255
+ .clearResponse (selectedId! );
256
+ sm.hideCurrentSnackBar ();
257
+ sm.showSnackBar (
258
+ const SnackBar (
259
+ content: Text ('Response cleared' ),
260
+ ),
261
+ );
262
+ },
263
+ child: const Icon (
264
+ Icons .delete,
265
+ size: 20 ,
266
+ ),
267
+ ),
268
+ );
269
+ }
270
+ }
Original file line number Diff line number Diff line change @@ -116,6 +116,8 @@ class ResponsePaneHeader extends StatelessWidget {
116
116
color: Theme .of (context).colorScheme.secondary,
117
117
),
118
118
),
119
+ kHSpacer10,
120
+ const ClearResponseButton ()
119
121
],
120
122
),
121
123
),
Original file line number Diff line number Diff line change @@ -186,4 +186,18 @@ void main() {
186
186
expect (find.byIcon (Icons .save), findsOneWidget);
187
187
expect (find.text ("Save" ), findsOneWidget);
188
188
});
189
+
190
+ testWidgets ('Testing for ClearResponseButton' , (tester) async {
191
+ await tester.pumpWidget (
192
+ MaterialApp (
193
+ title: 'ClearResponseButton' ,
194
+ theme: kThemeDataLight,
195
+ home: const Scaffold (
196
+ body: ClearResponseButton (),
197
+ ),
198
+ ),
199
+ );
200
+
201
+ expect (find.byIcon (Icons .delete), findsOneWidget);
202
+ });
189
203
}
You can’t perform that action at this time.
0 commit comments