diff --git a/lib/providers/providers.dart b/lib/providers/providers.dart index 4163f7b9..579a8aa4 100644 --- a/lib/providers/providers.dart +++ b/lib/providers/providers.dart @@ -8,6 +8,7 @@ const _uuid = Uuid(); final activeIdStateProvider = StateProvider((ref) => null); final sentRequestIdStateProvider = StateProvider((ref) => null); +final codePaneVisibleStateProvider = StateProvider((ref) => false); final StateNotifierProvider> collectionStateNotifierProvider = diff --git a/lib/screens/home_page/editor_pane/details_card/code_pane/code_pane.dart b/lib/screens/home_page/editor_pane/details_card/code_pane/code_pane.dart new file mode 100644 index 00000000..d0ea6a6f --- /dev/null +++ b/lib/screens/home_page/editor_pane/details_card/code_pane/code_pane.dart @@ -0,0 +1,15 @@ +import 'package:flutter/material.dart'; + +class CodePane extends StatefulWidget { + const CodePane({super.key}); + + @override + State createState() => _CodePaneState(); +} + +class _CodePaneState extends State { + @override + Widget build(BuildContext context) { + return Container(); + } +} 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 a44e5e6a..047d41e1 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,19 +1,22 @@ 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 'request_pane/request_pane.dart'; import 'response_pane/response_pane.dart'; +import 'code_pane/code_pane.dart'; -class EditorPaneRequestDetailsCard extends StatefulWidget { +class EditorPaneRequestDetailsCard extends ConsumerStatefulWidget { const EditorPaneRequestDetailsCard({super.key}); @override - State createState() => + ConsumerState createState() => _EditorPaneRequestDetailsCardState(); } class _EditorPaneRequestDetailsCardState - extends State { + extends ConsumerState { final MultiSplitViewController _controller = MultiSplitViewController( areas: [ Area(minimalSize: 300), @@ -23,6 +26,7 @@ class _EditorPaneRequestDetailsCardState @override Widget build(BuildContext context) { + final codePaneVisible = ref.watch(codePaneVisibleStateProvider); return Card( shape: RoundedRectangleBorder( side: BorderSide( @@ -44,9 +48,9 @@ class _EditorPaneRequestDetailsCardState ), child: MultiSplitView( controller: _controller, - children: const [ - EditRequestPane(), - ResponsePane(), + children: [ + const EditRequestPane(), + codePaneVisible ? const CodePane() : const ResponsePane(), ], ), ), 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 2e681862..7785d5ae 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 @@ -30,6 +30,7 @@ class _EditRequestPaneState extends ConsumerState @override Widget build(BuildContext context) { final activeId = ref.watch(activeIdStateProvider); + final codePaneVisible = ref.watch(codePaneVisibleStateProvider); _controller.index = ref .read(collectionStateNotifierProvider.notifier) .getRequestModel(activeId!) @@ -48,11 +49,20 @@ class _EditRequestPaneState extends ConsumerState style: Theme.of(context).textTheme.titleMedium, ), FilledButton.tonalIcon( - onPressed: () {}, - icon: const Icon( - Icons.code_rounded, + onPressed: () { + ref + .read(codePaneVisibleStateProvider.notifier) + .update((state) => !codePaneVisible); + }, + icon: Icon( + codePaneVisible + ? Icons.code_off_rounded + : Icons.code_rounded, + ), + label: SizedBox( + width: 75, + child: Text(codePaneVisible ? "Hide Code" : "Show Code"), ), - label: const Text("Generate Code"), ), ], ),