Refactor Request Details Card

This commit is contained in:
Ankit Mahato
2023-04-20 12:51:20 +05:30
parent 03b89d0b43
commit 08432b95e9
3 changed files with 83 additions and 43 deletions

View File

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

View File

@ -75,3 +75,27 @@ class _SidebarRequestCardState extends State<SidebarRequestCard> {
);
}
}
class RequestDetailsCard extends StatefulWidget {
const RequestDetailsCard({super.key, this.child});
final Widget? child;
@override
State<RequestDetailsCard> createState() => _RequestDetailsCardState();
}
class _RequestDetailsCardState extends State<RequestDetailsCard> {
@override
Widget build(BuildContext context) {
return Card(
shape: RoundedRectangleBorder(
side: BorderSide(
color: Theme.of(context).colorScheme.surfaceVariant,
),
borderRadius: kBorderRadius12,
),
elevation: 0,
child: widget.child,
);
}
}

View File

@ -67,3 +67,55 @@ class DashboardSplitViewState extends State<DashboardSplitView> {
super.dispose();
}
}
class EqualSplitView extends StatefulWidget {
const EqualSplitView({
super.key,
required this.leftWidget,
required this.rightWidget,
});
final Widget leftWidget;
final Widget rightWidget;
@override
State<EqualSplitView> createState() => _EqualSplitViewState();
}
class _EqualSplitViewState extends State<EqualSplitView> {
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();
}
}