From 08432b95e915a2fb56bd6f500676716109f121e0 Mon Sep 17 00:00:00 2001 From: Ankit Mahato Date: Thu, 20 Apr 2023 12:51:20 +0530 Subject: [PATCH] Refactor Request Details Card --- .../details_card/details_card.dart | 50 +++--------------- lib/widgets/cards.dart | 24 +++++++++ lib/widgets/splitviews.dart | 52 +++++++++++++++++++ 3 files changed, 83 insertions(+), 43 deletions(-) diff --git a/lib/screens/home_page/editor_pane/details_card/details_card.dart b/lib/screens/home_page/editor_pane/details_card/details_card.dart index 047d41e1..b7e60fc5 100644 --- a/lib/screens/home_page/editor_pane/details_card/details_card.dart +++ b/lib/screens/home_page/editor_pane/details_card/details_card.dart @@ -1,11 +1,10 @@ import 'package:flutter/material.dart'; -import 'package:multi_split_view/multi_split_view.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 'request_pane/request_pane.dart'; -import 'response_pane/response_pane.dart'; -import 'code_pane/code_pane.dart'; +import 'response_pane.dart'; +import 'code_pane.dart'; class EditorPaneRequestDetailsCard extends ConsumerStatefulWidget { const EditorPaneRequestDetailsCard({super.key}); @@ -17,49 +16,14 @@ class EditorPaneRequestDetailsCard extends ConsumerStatefulWidget { class _EditorPaneRequestDetailsCardState extends ConsumerState { - final MultiSplitViewController _controller = MultiSplitViewController( - areas: [ - Area(minimalSize: 300), - Area(minimalSize: 300), - ], - ); - @override Widget build(BuildContext context) { final codePaneVisible = ref.watch(codePaneVisibleStateProvider); - return Card( - shape: RoundedRectangleBorder( - side: BorderSide( - color: Theme.of(context).colorScheme.surfaceVariant, - ), - borderRadius: kBorderRadius12, - ), - elevation: 0, - child: MultiSplitViewTheme( - data: MultiSplitViewThemeData( - dividerThickness: 3, - dividerPainter: DividerPainters.background( - color: Theme.of(context).colorScheme.surfaceVariant, - highlightedColor: Theme.of(context).colorScheme.outline.withOpacity( - kHintOpacity, - ), - animationEnabled: false, - ), - ), - child: MultiSplitView( - controller: _controller, - children: [ - const EditRequestPane(), - codePaneVisible ? const CodePane() : const ResponsePane(), - ], - ), + return RequestDetailsCard( + child: EqualSplitView( + leftWidget: const EditRequestPane(), + rightWidget: codePaneVisible ? const CodePane() : const ResponsePane(), ), ); } - - @override - void dispose() { - _controller.dispose(); - super.dispose(); - } } diff --git a/lib/widgets/cards.dart b/lib/widgets/cards.dart index d3c59c64..1da93c13 100644 --- a/lib/widgets/cards.dart +++ b/lib/widgets/cards.dart @@ -75,3 +75,27 @@ class _SidebarRequestCardState extends State { ); } } + +class RequestDetailsCard extends StatefulWidget { + const RequestDetailsCard({super.key, this.child}); + + final Widget? child; + @override + State createState() => _RequestDetailsCardState(); +} + +class _RequestDetailsCardState extends State { + @override + Widget build(BuildContext context) { + return Card( + shape: RoundedRectangleBorder( + side: BorderSide( + color: Theme.of(context).colorScheme.surfaceVariant, + ), + borderRadius: kBorderRadius12, + ), + elevation: 0, + child: widget.child, + ); + } +} diff --git a/lib/widgets/splitviews.dart b/lib/widgets/splitviews.dart index 237081ee..578ca4ee 100644 --- a/lib/widgets/splitviews.dart +++ b/lib/widgets/splitviews.dart @@ -67,3 +67,55 @@ class DashboardSplitViewState extends State { super.dispose(); } } + +class EqualSplitView extends StatefulWidget { + const EqualSplitView({ + super.key, + required this.leftWidget, + required this.rightWidget, + }); + + final Widget leftWidget; + final Widget rightWidget; + + @override + State createState() => _EqualSplitViewState(); +} + +class _EqualSplitViewState extends State { + final MultiSplitViewController _controller = MultiSplitViewController( + areas: [ + Area(minimalSize: 300), + Area(minimalSize: 300), + ], + ); + + @override + Widget build(BuildContext context) { + return MultiSplitViewTheme( + data: MultiSplitViewThemeData( + dividerThickness: 3, + dividerPainter: DividerPainters.background( + color: Theme.of(context).colorScheme.surfaceVariant, + highlightedColor: Theme.of(context).colorScheme.outline.withOpacity( + kHintOpacity, + ), + animationEnabled: false, + ), + ), + child: MultiSplitView( + controller: _controller, + children: [ + widget.leftWidget, + widget.rightWidget, + ], + ), + ); + } + + @override + void dispose() { + _controller.dispose(); + super.dispose(); + } +}