From c22bc1c8ea2206a75041ed40799951776d048aed Mon Sep 17 00:00:00 2001 From: fondoger Date: Tue, 9 May 2023 05:00:46 +0800 Subject: [PATCH] [dart-gen] Fix lists containing atomic types (#3210) --- tools/goctl/api/dartgen/gendata.go | 4 +++- tools/goctl/api/dartgen/util.go | 6 +++++- tools/goctl/api/dartgen/vars.go | 2 ++ 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/tools/goctl/api/dartgen/gendata.go b/tools/goctl/api/dartgen/gendata.go index 08ca1354..7894cfb3 100644 --- a/tools/goctl/api/dartgen/gendata.go +++ b/tools/goctl/api/dartgen/gendata.go @@ -45,8 +45,10 @@ class {{.Name}} { return {{.Name}}( {{range .Members}} {{lowCamelCase .Name}}: {{appendNullCoalescing .}} - {{if isDirectType .Type.Name}} + {{if isAtomicType .Type.Name}} m['{{getPropertyFromMember .}}'] {{appendDefaultEmptyValue .Type.Name}} + {{else if isAtomicListType .Type.Name}} + m['{{getPropertyFromMember .}}']?.cast<{{getCoreType .Type.Name}}>() {{appendDefaultEmptyValue .Type.Name}} {{else if isClassListType .Type.Name}} ((m['{{getPropertyFromMember .}}'] {{appendDefaultEmptyValue .Type.Name}}) as List).map((i) => {{getCoreType .Type.Name}}.fromJson(i)).toList() {{else}} diff --git a/tools/goctl/api/dartgen/util.go b/tools/goctl/api/dartgen/util.go index 0847057d..79d94e80 100644 --- a/tools/goctl/api/dartgen/util.go +++ b/tools/goctl/api/dartgen/util.go @@ -71,7 +71,11 @@ func isListType(s string) bool { } func isClassListType(s string) bool { - return strings.HasPrefix(s, "List<") && !isAtomicType(getCoreType(s)) + return isListType(s) && !isAtomicType(getCoreType(s)) +} + +func isAtomicListType(s string) bool { + return isListType(s) && isAtomicType(getCoreType(s)) } func isListItemsNullable(s string) bool { diff --git a/tools/goctl/api/dartgen/vars.go b/tools/goctl/api/dartgen/vars.go index 233a889c..3dcff8e7 100644 --- a/tools/goctl/api/dartgen/vars.go +++ b/tools/goctl/api/dartgen/vars.go @@ -6,8 +6,10 @@ var funcMap = template.FuncMap{ "getBaseName": getBaseName, "getPropertyFromMember": getPropertyFromMember, "isDirectType": isDirectType, + "isAtomicType": isAtomicType, "isNumberType": isNumberType, "isClassListType": isClassListType, + "isAtomicListType": isAtomicListType, "isListItemsNullable": isListItemsNullable, "isNullableType": isNullableType, "appendNullCoalescing": appendNullCoalescing,