12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace FlutterCodeGenerator.ModelTypes
- {
- internal class EnumModelType : ComplexModelType
- {
- public Dictionary<int, string> UserDefinedEnumDictionary { get; }
- public EnumModelType(Type type, string name) : base(type, name)
- {
- UserDefinedEnumDictionary = new Dictionary<int, string>();
- var fields = ParameterType.GetFields();
- if (fields != null && fields.Length > 1)
- {
- for (int i = 1; i < fields.Length; i++)
- {
- var fieldName = fields[i].GetValue(null).ToString();
- var fieldValue = (int)fields[i].GetValue(null);
- if (fieldValue < 0)
- {
- continue;
- }
- else
- {
- UserDefinedEnumDictionary.Add(fieldValue, fieldName);
- }
- }
- UserDefinedEnumDictionary = UserDefinedEnumDictionary.OrderBy(x => x.Key).ToDictionary(p => p.Key, o => o.Value);
- }
- var firstChildName = UserDefinedEnumDictionary.FirstOrDefault().Value;
- DefaultValue = $"{GetFlutterTypeName()}.{firstChildName}";
- }
- public override string GetFlutterTypeName(bool isDefault = true, bool isGenericName = false, bool isSingle = false)
- {
- if (Index > 1)
- {
- return $"{ParameterType.Name}{Index}";
- }
- else
- {
- return $"{ParameterType.Name}";
- }
- }
- public override string GetDartString()
- {
- var dartString = new StringBuilder();
- dartString.AppendLine($"enum {GetFlutterTypeName()} {{");
- int lastValue = 0;
- foreach (var userDefinedEnum in UserDefinedEnumDictionary)
- {
- var index = userDefinedEnum.Key;
- var name = userDefinedEnum.Value;
- while (lastValue != index)
- {
- dartString.AppendLine($"\tplaceHolder_{lastValue},");
- lastValue++;
- }
- if (lastValue == index)
- {
- dartString.AppendLine($"\t{name},");
- lastValue++;
- }
- }
- dartString.AppendLine("}");
- return dartString.ToString();
- }
- protected override void ChangeIndex()
- {
- if (UserDefinedEnumDictionary != null)
- {
- var firstChildName = UserDefinedEnumDictionary.FirstOrDefault().Value;
- DefaultValue = $"{GetFlutterTypeName()}.{firstChildName}";
- }
- }
- }
- }
|