From 00dc5789ab3cb5a97657a9a31818769c437da9d2 Mon Sep 17 00:00:00 2001 From: Bart Ariens Date: Tue, 27 Feb 2024 14:30:38 +0100 Subject: [PATCH] adds the possibility to start the list and maps expanded or collapsed --- .../primitive_builders/list_builder.dart | 21 +++++++++---------- .../primitive_builders/map_builder.dart | 12 +++++++---- lib/src/theme/json_view_theme.dart | 10 +++++++++ 3 files changed, 28 insertions(+), 15 deletions(-) diff --git a/lib/src/builders/primitive_builders/list_builder.dart b/lib/src/builders/primitive_builders/list_builder.dart index 30244ab..7c894e9 100644 --- a/lib/src/builders/primitive_builders/list_builder.dart +++ b/lib/src/builders/primitive_builders/list_builder.dart @@ -4,11 +4,7 @@ import 'package:flutter_json_view/src/utils/typer.dart'; import 'package:flutter_json_view/src/widgets/widgets.dart'; class JsonListBuilder extends StatefulWidget { - const JsonListBuilder({ - Key? key, - required this.jsonObj, - required this.jsonViewTheme, - }) : super(key: key); + const JsonListBuilder({Key? key, required this.jsonObj, required this.jsonViewTheme}) : super(key: key); final List jsonObj; final JsonViewTheme jsonViewTheme; @@ -18,7 +14,13 @@ class JsonListBuilder extends StatefulWidget { } class _JsonListBuilderState extends State { - bool isOpened = true; + late bool isOpened; + + @override + void initState() { + isOpened = widget.jsonViewTheme.listInitialExpanded; + super.initState(); + } @override Widget build(BuildContext context) { @@ -28,9 +30,7 @@ class _JsonListBuilderState extends State { children: [ GestureDetector( onTap: () => setState(() => isOpened = !isOpened), - child: isOpened - ? widget.jsonViewTheme.closeIcon - : widget.jsonViewTheme.openIcon, + child: isOpened ? widget.jsonViewTheme.closeIcon : widget.jsonViewTheme.openIcon, ), _buildItem(items), ], @@ -43,8 +43,7 @@ class _JsonListBuilderState extends State { isList: true, jsonViewTheme: widget.jsonViewTheme, count: widget.jsonObj.length, - type: Typer.getType( - widget.jsonObj.isNotEmpty ? widget.jsonObj.first : null), + type: Typer.getType(widget.jsonObj.isNotEmpty ? widget.jsonObj.first : null), ); } return Column( diff --git a/lib/src/builders/primitive_builders/map_builder.dart b/lib/src/builders/primitive_builders/map_builder.dart index 482f667..afbfd76 100644 --- a/lib/src/builders/primitive_builders/map_builder.dart +++ b/lib/src/builders/primitive_builders/map_builder.dart @@ -17,7 +17,13 @@ class JsonMapBuilder extends StatefulWidget { } class _JsonMapBuilderState extends State { - bool isOpened = true; + late bool isOpened; + + @override + void initState() { + isOpened = widget.jsonViewTheme.mapInitialExpanded; + super.initState(); + } @override Widget build(BuildContext context) { @@ -26,9 +32,7 @@ class _JsonMapBuilderState extends State { children: [ GestureDetector( onTap: () => setState(() => isOpened = !isOpened), - child: isOpened - ? widget.jsonViewTheme.closeIcon - : widget.jsonViewTheme.openIcon, + child: isOpened ? widget.jsonViewTheme.closeIcon : widget.jsonViewTheme.openIcon, ), _buidItem(), ], diff --git a/lib/src/theme/json_view_theme.dart b/lib/src/theme/json_view_theme.dart index e1e5f6e..6385858 100644 --- a/lib/src/theme/json_view_theme.dart +++ b/lib/src/theme/json_view_theme.dart @@ -35,6 +35,8 @@ class JsonViewTheme { this.loadingWidget = const CircularProgressIndicator(), this.viewType = JsonViewType.collapsible, this.backgroundColor = const Color(0xFF1E1F28), + this.listInitialExpanded = true, + this.mapInitialExpanded = true, }) : _keyStyle = keyStyle ?? const TextStyle(color: Colors.deepPurple), _doubleStyle = doubleStyle ?? const TextStyle(color: Colors.blue), _intStyle = intStyle ?? const TextStyle(color: Colors.blue), @@ -95,4 +97,12 @@ class JsonViewTheme { /// This style used as default for all styles /// and for not parsed values final TextStyle defaultTextStyle; + + /// Set if the lists should show + /// collapsed or expanded on its first render. + final bool listInitialExpanded; + + /// Set if the maps should show + /// collapsed or expanded on its first render. + final bool mapInitialExpanded; }