From c206ed3e774c2dfc1dc8668cc41f4c1a8bf840a7 Mon Sep 17 00:00:00 2001 From: julian-CStack Date: Tue, 25 Apr 2023 07:28:10 -0600 Subject: [PATCH 1/3] Example --- lib/models/isar/sw_theme.dart | 17 +++++-- lib/utilities/extensions/impl/gradient.dart | 55 ++++++++++----------- 2 files changed, 38 insertions(+), 34 deletions(-) diff --git a/lib/models/isar/sw_theme.dart b/lib/models/isar/sw_theme.dart index 1f006dd83..969b25dec 100644 --- a/lib/models/isar/sw_theme.dart +++ b/lib/models/isar/sw_theme.dart @@ -59,15 +59,22 @@ class StackTheme { // ==== gradientBackground ===================================================== @ignore - Gradient get gradientBackground => + Gradient? get gradientBackground { + if (gradientBackgroundString == null) { + _gradientBackground = null; + } else { _gradientBackground ??= GradientExt.fromJson( Map.from( - jsonDecode(gradientBackgroundString) as Map, + jsonDecode(gradientBackgroundString!) as Map, ), ); + } + return _gradientBackground; + } + @ignore Gradient? _gradientBackground; - final String gradientBackgroundString; + final String? gradientBackgroundString; // ==== boxShadows ===================================================== @@ -1643,7 +1650,9 @@ class StackTheme { parseColor(json["colors"]["background"]["background"] as String), backgroundAppBarInt: parseColor( json["colors"]["background"]["backgroundAppBar"] as String), - gradientBackgroundString: jsonEncode(json["gradients"] as Map), + gradientBackgroundString: json["gradients"]["background"] == null + ? null + : jsonEncode(json["gradients"]["background"] as Map), standardBoxShadowString: jsonEncode(json["box_shadows"]["standard"] as Map), homeViewButtonBarBoxShadowString: diff --git a/lib/utilities/extensions/impl/gradient.dart b/lib/utilities/extensions/impl/gradient.dart index f34a24fe5..7ef99b3e1 100644 --- a/lib/utilities/extensions/impl/gradient.dart +++ b/lib/utilities/extensions/impl/gradient.dart @@ -14,8 +14,8 @@ final map = { "background": "0xFF848383", }, "gradients": { - "gradientBackground": { - "gradientType": "linear", + "background": { + "type": "linear", "begin": { "x": 0.0, "y": 1.0, @@ -34,35 +34,30 @@ final map = { extension GradientExt on Gradient { static Gradient fromJson(Map json) { - print("THIS GRADIENTS IS ${json.isEmpty}"); - if (!json.isEmpty) { - switch (json["background"]["type"]) { - case "Linear": - final colorStrings = - List.from(json["background"]["colors"] as List); - return LinearGradient( - begin: Alignment( - json["background"]["begin"]["x"] as double, - json["background"]["begin"]["y"] as double, - ), - end: Alignment( - json["background"]["end"]["x"] as double, - json["background"]["end"]["y"] as double, - ), - colors: colorStrings - .map( - (e) => Color( - e.toBigIntFromHex.toInt(), - ), - ) - .toList(), - ); + switch (json["type"]) { + case "linear": + final colorStrings = + List.from(json["background"]["colors"] as List); + return LinearGradient( + begin: Alignment( + json["background"]["begin"]["x"] as double, + json["background"]["begin"]["y"] as double, + ), + end: Alignment( + json["background"]["end"]["x"] as double, + json["background"]["end"]["y"] as double, + ), + colors: colorStrings + .map( + (e) => Color( + e.toBigIntFromHex.toInt(), + ), + ) + .toList(), + ); - default: - throw ArgumentError("Invalid json gradient: $json"); - } + default: + throw ArgumentError("Invalid json gradient: $json"); } - throw ArgumentError("Invalid json gradient: $json"); - // if () } } From fbc61403d8b6c82818f22f1218a4aeac9835b221 Mon Sep 17 00:00:00 2001 From: ryleedavis Date: Tue, 25 Apr 2023 07:49:50 -0600 Subject: [PATCH 2/3] check if gradientBackground is null --- lib/models/isar/sw_theme.dart | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/lib/models/isar/sw_theme.dart b/lib/models/isar/sw_theme.dart index 969b25dec..9b1b117b9 100644 --- a/lib/models/isar/sw_theme.dart +++ b/lib/models/isar/sw_theme.dart @@ -65,7 +65,7 @@ class StackTheme { } else { _gradientBackground ??= GradientExt.fromJson( Map.from( - jsonDecode(gradientBackgroundString!) as Map, + jsonDecode(gradientBackgroundString) as Map, ), ); } @@ -1650,9 +1650,7 @@ class StackTheme { parseColor(json["colors"]["background"]["background"] as String), backgroundAppBarInt: parseColor( json["colors"]["background"]["backgroundAppBar"] as String), - gradientBackgroundString: json["gradients"]["background"] == null - ? null - : jsonEncode(json["gradients"]["background"] as Map), + gradientBackgroundString: jsonEncode(json["gradients"] ?? ["background"]), standardBoxShadowString: jsonEncode(json["box_shadows"]["standard"] as Map), homeViewButtonBarBoxShadowString: From 83e1a9f7214e185ed5defd3a25a883cd84461ca9 Mon Sep 17 00:00:00 2001 From: ryleedavis Date: Tue, 25 Apr 2023 07:52:49 -0600 Subject: [PATCH 3/3] add null check --- lib/models/isar/sw_theme.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/models/isar/sw_theme.dart b/lib/models/isar/sw_theme.dart index 9b1b117b9..6b32a0b6a 100644 --- a/lib/models/isar/sw_theme.dart +++ b/lib/models/isar/sw_theme.dart @@ -65,7 +65,7 @@ class StackTheme { } else { _gradientBackground ??= GradientExt.fromJson( Map.from( - jsonDecode(gradientBackgroundString) as Map, + jsonDecode(gradientBackgroundString!) as Map, ), ); }