|
@@ -1,3 +1,4 @@
|
|
|
+using System;
|
|
|
using System.Collections.Generic;
|
|
|
using System.Data;
|
|
|
using System.Linq;
|
|
@@ -16,7 +17,15 @@ namespace FlutterCodeGenerator
|
|
|
{
|
|
|
ParameterModeTypes = new List<ModelType>();
|
|
|
_methodName = method.Name;
|
|
|
- var returnParameterType = method.ReturnType.GetGenericArguments()[0];
|
|
|
+ Type returnParameterType;
|
|
|
+ if (!method.ReturnType.IsGenericType)
|
|
|
+ {
|
|
|
+ returnParameterType = typeof(void);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ returnParameterType = method.ReturnType.GetGenericArguments()[0];
|
|
|
+ }
|
|
|
|
|
|
ReturnParameterModelType = ModelTypeGenerator.Create(returnParameterType, "", true);
|
|
|
|
|
@@ -39,53 +48,59 @@ namespace FlutterCodeGenerator
|
|
|
argumentNames = "[" + argumentNames + "]";
|
|
|
}
|
|
|
dartString.AppendLine($"\tFuture<{ReturnParameterModelType.GetFlutterTypeName()}> {LetterConverterHelper.FirstCharToLower(_methodName)}({parameterNames}) async {{");
|
|
|
- dartString.AppendLine($"\t\tvar rpcRst = await call(\"{_methodName}\", {argumentNames});");
|
|
|
- if (ReturnParameterModelType is SimpleModelType && !(ReturnParameterModelType is ListModelType) && !(ReturnParameterModelType is DictionaryModelType) && !(ReturnParameterModelType is ArrayModelType))
|
|
|
+ if (ReturnParameterModelType is VoidModelType)
|
|
|
{
|
|
|
- dartString.AppendLine("\t\treturn rpcRst;");
|
|
|
+ dartString.AppendLine($"\t\tawait call(\"{_methodName}\", {argumentNames});");
|
|
|
}
|
|
|
- else if (ReturnParameterModelType is UserDefinedModeType || ReturnParameterModelType is UserDefinedGenericModelType || ReturnParameterModelType is UserDefinedDerivedModelType)
|
|
|
+ else
|
|
|
{
|
|
|
- dartString.AppendLine($"\t\tvar result = {ReturnParameterModelType.GetFlutterTypeName()}.fromJson(rpcRst as Map<String, dynamic>);");
|
|
|
- dartString.AppendLine("\t\treturn result;");
|
|
|
- }
|
|
|
- else if (ReturnParameterModelType is ListModelType genericModelType)
|
|
|
- {
|
|
|
- if (genericModelType.GenericArgumentModelType is SimpleModelType simpleModelType)
|
|
|
- {
|
|
|
- dartString.AppendLine($"\t\tvar result = (rpcRst as List).cast<{simpleModelType.GetFlutterTypeName()}>().toList();");
|
|
|
- dartString.AppendLine("\t\treturn result;");
|
|
|
- }
|
|
|
- else if (genericModelType.GenericArgumentModelType is UserDefinedModeType userDefinedComplexModeType)
|
|
|
+ dartString.AppendLine($"\t\tvar rpcRst = await call(\"{_methodName}\", {argumentNames});");
|
|
|
+ if (ReturnParameterModelType is SimpleModelType && !(ReturnParameterModelType is ListModelType) && !(ReturnParameterModelType is DictionaryModelType) && !(ReturnParameterModelType is ArrayModelType))
|
|
|
{
|
|
|
- dartString.AppendLine($"\t\tvar result = (rpcRst as List).map((e)=>{userDefinedComplexModeType.GetFlutterTypeName()}.fromJson(e as Map<String, dynamic>)).toList();");
|
|
|
- dartString.AppendLine("\t\treturn result;");
|
|
|
+ dartString.AppendLine("\t\treturn rpcRst;");
|
|
|
}
|
|
|
- else if (genericModelType.GenericArgumentModelType is UserDefinedDerivedModelType userDefinedDerivedModelType)
|
|
|
+ else if (ReturnParameterModelType is UserDefinedModeType || ReturnParameterModelType is UserDefinedGenericModelType || ReturnParameterModelType is UserDefinedDerivedModelType)
|
|
|
{
|
|
|
- dartString.AppendLine($"\t\tvar result = (rpcRst as List).map((e)=>{userDefinedDerivedModelType.GetFlutterTypeName()}.fromJson(e as Map<String, dynamic>)).toList();");
|
|
|
+ dartString.AppendLine($"\t\tvar result = {ReturnParameterModelType.GetFlutterTypeName()}.fromJson(rpcRst as Map<String, dynamic>);");
|
|
|
dartString.AppendLine("\t\treturn result;");
|
|
|
}
|
|
|
- }
|
|
|
- else if (ReturnParameterModelType is ArrayModelType arrayModelType)
|
|
|
- {
|
|
|
- if (arrayModelType.Child is SimpleModelType simpleModelType)
|
|
|
+ else if (ReturnParameterModelType is ListModelType genericModelType)
|
|
|
{
|
|
|
- dartString.AppendLine($"\t\tvar result = (rpcRst as List).cast<{simpleModelType.GetFlutterTypeName()}>().toList();");
|
|
|
- dartString.AppendLine("\t\treturn result;");
|
|
|
+ if (genericModelType.GenericArgumentModelType is SimpleModelType simpleModelType)
|
|
|
+ {
|
|
|
+ dartString.AppendLine($"\t\tvar result = (rpcRst as List).cast<{simpleModelType.GetFlutterTypeName()}>().toList();");
|
|
|
+ dartString.AppendLine("\t\treturn result;");
|
|
|
+ }
|
|
|
+ else if (genericModelType.GenericArgumentModelType is UserDefinedModeType userDefinedComplexModeType)
|
|
|
+ {
|
|
|
+ dartString.AppendLine($"\t\tvar result = (rpcRst as List).map((e)=>{userDefinedComplexModeType.GetFlutterTypeName()}.fromJson(e as Map<String, dynamic>)).toList();");
|
|
|
+ dartString.AppendLine("\t\treturn result;");
|
|
|
+ }
|
|
|
+ else if (genericModelType.GenericArgumentModelType is UserDefinedDerivedModelType userDefinedDerivedModelType)
|
|
|
+ {
|
|
|
+ dartString.AppendLine($"\t\tvar result = (rpcRst as List).map((e)=>{userDefinedDerivedModelType.GetFlutterTypeName()}.fromJson(e as Map<String, dynamic>)).toList();");
|
|
|
+ dartString.AppendLine("\t\treturn result;");
|
|
|
+ }
|
|
|
}
|
|
|
- else if (arrayModelType.Child is UserDefinedModeType userDefinedComplexModeType)
|
|
|
+ else if (ReturnParameterModelType is ArrayModelType arrayModelType)
|
|
|
{
|
|
|
- dartString.AppendLine($"\t\tvar result = (rpcRst as List).map((e)=>{userDefinedComplexModeType.GetFlutterTypeName()}.fromJson(e as Map<String, dynamic>)).toList();");
|
|
|
- dartString.AppendLine("\t\treturn result;");
|
|
|
- }
|
|
|
- else if (arrayModelType.Child is UserDefinedDerivedModelType userDefinedDerivedModelType)
|
|
|
- {
|
|
|
- dartString.AppendLine($"\t\tvar result = (rpcRst as List).map((e)=>{userDefinedDerivedModelType.GetFlutterTypeName()}.fromJson(e as Map<String, dynamic>)).toList();");
|
|
|
- dartString.AppendLine("\t\treturn result;");
|
|
|
+ if (arrayModelType.Child is SimpleModelType simpleModelType)
|
|
|
+ {
|
|
|
+ dartString.AppendLine($"\t\tvar result = (rpcRst as List).cast<{simpleModelType.GetFlutterTypeName()}>().toList();");
|
|
|
+ dartString.AppendLine("\t\treturn result;");
|
|
|
+ }
|
|
|
+ else if (arrayModelType.Child is UserDefinedModeType userDefinedComplexModeType)
|
|
|
+ {
|
|
|
+ dartString.AppendLine($"\t\tvar result = (rpcRst as List).map((e)=>{userDefinedComplexModeType.GetFlutterTypeName()}.fromJson(e as Map<String, dynamic>)).toList();");
|
|
|
+ dartString.AppendLine("\t\treturn result;");
|
|
|
+ }
|
|
|
+ else if (arrayModelType.Child is UserDefinedDerivedModelType userDefinedDerivedModelType)
|
|
|
+ {
|
|
|
+ dartString.AppendLine($"\t\tvar result = (rpcRst as List).map((e)=>{userDefinedDerivedModelType.GetFlutterTypeName()}.fromJson(e as Map<String, dynamic>)).toList();");
|
|
|
+ dartString.AppendLine("\t\treturn result;");
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
dartString.AppendLine("\t}");
|
|
|
return dartString.ToString();
|
|
|
}
|