From 1c3eccd9fda84fabe3325ce43ec5316b84796d93 Mon Sep 17 00:00:00 2001 From: Udhay-Adithya Date: Fri, 5 Sep 2025 12:43:30 +0530 Subject: [PATCH] feat: enhance EditRequestPane with segmented layout for Dashbot window --- .../request_pane/request_pane.dart | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/lib/screens/home_page/editor_pane/details_card/request_pane/request_pane.dart b/lib/screens/home_page/editor_pane/details_card/request_pane/request_pane.dart index af82951e..a1868159 100644 --- a/lib/screens/home_page/editor_pane/details_card/request_pane/request_pane.dart +++ b/lib/screens/home_page/editor_pane/details_card/request_pane/request_pane.dart @@ -1,8 +1,13 @@ +import 'package:apidash/dashbot/core/providers/dashbot_window_notifier.dart'; import 'package:apidash_core/apidash_core.dart'; import 'package:apidash_design_system/apidash_design_system.dart'; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:apidash/providers/providers.dart'; +import 'package:apidash/consts.dart'; +import 'package:apidash/widgets/widgets.dart'; +import 'package:apidash/screens/common_widgets/common_widgets.dart'; +import '../response_pane.dart'; import 'ai_request/request_pane_ai.dart'; import 'request_pane_graphql.dart'; import 'request_pane_rest.dart'; @@ -15,6 +20,46 @@ class EditRequestPane extends ConsumerWidget { ref.watch(selectedIdStateProvider); final apiType = ref .watch(selectedRequestModelProvider.select((value) => value?.apiType)); + final isPopped = + ref.watch(dashbotWindowNotifierProvider.select((s) => s.isPopped)); + + // When Dashbot window is popped, compact segmented layout like History page should be shown + if (isPopped == false && apiType == APIType.rest) { + return DefaultTabController( + length: 3, + child: Builder( + builder: (context) { + final controller = DefaultTabController.of(context); + return Column( + children: [ + kVSpacer10, + SegmentedTabbar( + controller: controller, + tabs: const [ + Tab(text: kLabelRequest), + Tab(text: kLabelResponse), + Tab(text: kLabelCode), + ], + ), + kVSpacer10, + Expanded( + child: TabBarView( + controller: controller, + children: const [ + EditRestRequestPane(), + ResponsePane(), + CodePane(), + ], + ), + ), + kVSpacer8, + ], + ); + }, + ), + ); + } + return switch (apiType) { APIType.rest => const EditRestRequestPane(), APIType.graphql => const EditGraphQLRequestPane(),