From 2136c4354c3165434be0b47661379b8ad99f6f3f Mon Sep 17 00:00:00 2001 From: ikku47 Date: Mon, 30 Jun 2025 15:05:19 +0400 Subject: [PATCH] feat: Add support for double default values - Add doubleDefaultValue field and doubleFieldDefaultValue() method to Settings - Add double case in ClassDefinition field generation logic - Add UI input field for double default values in JsonInputDialog - Fix existing bugs where bool/int checks used stringFieldDefaultValue() Fixes issue where double fields didn't get default values when 'set default' option was enabled, causing inconsistent behavior compared to other primitive types. --- .../action/jsontodart/ClassDefinition.kt | 6 ++++-- .../flutterjsonbeanfactory/setting/Settings.kt | 9 +++++++++ .../flutterjsonbeanfactory/ui/JsonInputDialog.kt | 5 +++++ 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/main/kotlin/com/github/zhangruiyu/flutterjsonbeanfactory/action/jsontodart/ClassDefinition.kt b/src/main/kotlin/com/github/zhangruiyu/flutterjsonbeanfactory/action/jsontodart/ClassDefinition.kt index 4f7086b..1e5774a 100644 --- a/src/main/kotlin/com/github/zhangruiyu/flutterjsonbeanfactory/action/jsontodart/ClassDefinition.kt +++ b/src/main/kotlin/com/github/zhangruiyu/flutterjsonbeanfactory/action/jsontodart/ClassDefinition.kt @@ -118,10 +118,12 @@ class ClassDefinition(private val name: String, private val privateFields: Boole } else if (f.subtype == null) { if (f.name == "String" && settings.stringFieldDefaultValue()?.isNotEmpty() == true) { sb.append(" = ${settings.stringFieldDefaultValue()}") - } else if (f.name == "bool" && settings.stringFieldDefaultValue()?.isNotEmpty() == true) { + } else if (f.name == "bool" && settings.boolFieldDefaultValue()?.isNotEmpty() == true) { sb.append(" = ${settings.boolFieldDefaultValue()}") - } else if (f.name == "int" && settings.stringFieldDefaultValue()?.isNotEmpty() == true) { + } else if (f.name == "int" && settings.intFieldDefaultValue()?.isNotEmpty() == true) { sb.append(" = ${settings.intFieldDefaultValue()}") + } else if (f.name == "double" && settings.doubleFieldDefaultValue()?.isNotEmpty() == true) { + sb.append(" = ${settings.doubleFieldDefaultValue()}") } } } diff --git a/src/main/kotlin/com/github/zhangruiyu/flutterjsonbeanfactory/setting/Settings.kt b/src/main/kotlin/com/github/zhangruiyu/flutterjsonbeanfactory/setting/Settings.kt index 6d8ae36..54882cf 100644 --- a/src/main/kotlin/com/github/zhangruiyu/flutterjsonbeanfactory/setting/Settings.kt +++ b/src/main/kotlin/com/github/zhangruiyu/flutterjsonbeanfactory/setting/Settings.kt @@ -13,6 +13,7 @@ data class Settings( var boolDefaultValue: String = "false", var stringDefaultValue: String = "''", var intDefaultValue: String = "0", + var doubleDefaultValue: String = "0.0", var listDefaultValue: String = "[]", ) : PersistentStateComponent { @@ -52,6 +53,14 @@ data class Settings( } } + fun doubleFieldDefaultValue(): String? { + return if (setDefault == true && doubleDefaultValue.isNotEmpty()) { + doubleDefaultValue + } else { + null + } + } + fun listFieldDefaultValue(): String? { return if (setDefault == true && listDefaultValue.isNotEmpty()) { listDefaultValue diff --git a/src/main/kotlin/com/github/zhangruiyu/flutterjsonbeanfactory/ui/JsonInputDialog.kt b/src/main/kotlin/com/github/zhangruiyu/flutterjsonbeanfactory/ui/JsonInputDialog.kt index 1955d00..1286a80 100644 --- a/src/main/kotlin/com/github/zhangruiyu/flutterjsonbeanfactory/ui/JsonInputDialog.kt +++ b/src/main/kotlin/com/github/zhangruiyu/flutterjsonbeanfactory/ui/JsonInputDialog.kt @@ -173,6 +173,11 @@ open class JsonInputDialog( }, settings.intDefaultValue).forEach { defaultContainer.add(it) } + buildDefaultItem("double", { newText -> + settings.doubleDefaultValue = newText + }, settings.doubleDefaultValue).forEach { + defaultContainer.add(it) + } buildDefaultItem("bool", { newText -> settings.boolDefaultValue = newText }, settings.boolDefaultValue).forEach {