TextLayerData.fromMap constructor

TextLayerData.fromMap(
  1. Layer layer,
  2. Map map
)

Implementation

factory TextLayerData.fromMap(Layer layer, Map map) {
  TextDecoration getDecoration(String decoration) {
    if (decoration.contains('combine')) {
      List<TextDecoration> decorations = [];

      if (decoration.contains('lineThrough')) {
        decorations.add(TextDecoration.lineThrough);
      }
      if (decoration.contains('overline')) {
        decorations.add(TextDecoration.overline);
      }
      if (decoration.contains('underline')) {
        decorations.add(TextDecoration.underline);
      }

      return TextDecoration.combine(decorations);
    } else {
      if (decoration.contains('lineThrough')) {
        return TextDecoration.lineThrough;
      } else if (decoration.contains('overline')) {
        return TextDecoration.overline;
      } else if (decoration.contains('underline')) {
        return TextDecoration.underline;
      }
    }

    return TextDecoration.none;
  }

  String? fontFamily = map['fontFamily'];
  double? wordSpacing = map['wordSpacing'];
  double? height = map['height'];
  double? letterSpacing = map['letterSpacing'];
  int? fontWeight = map['fontWeight'];
  String? fontStyle = map['fontStyle'];
  String? decoration = map['decoration'];
  return TextLayerData(
    flipX: layer.flipX,
    flipY: layer.flipY,
    offset: layer.offset,
    rotation: layer.rotation,
    scale: layer.scale,
    text: map['text'] ?? '-',
    fontScale: map['fontScale'] ?? 1.0,
    textStyle: map['fontFamily'] != null
        ? TextStyle(
            fontFamily: fontFamily,
            height: height,
            wordSpacing: wordSpacing,
            letterSpacing: letterSpacing,
            decoration: decoration != null ? getDecoration(decoration) : null,
            fontStyle: fontStyle != null
                ? FontStyle.values
                    .firstWhere((element) => element.name == fontStyle)
                : null,
            fontWeight: fontWeight != null
                ? FontWeight.values
                    .firstWhere((element) => element.value == fontWeight)
                : null,
          )
        : null,
    colorMode: LayerBackgroundMode.values
        .firstWhere((element) => element.name == map['colorMode']),
    color: Color(map['color']),
    background: Color(map['background']),
    colorPickerPosition: map['colorPickerPosition'] ?? 0,
    align: TextAlign.values
        .firstWhere((element) => element.name == map['align']),
    customSecondaryColor: map['customSecondaryColor'] ?? false,
  );
}