공부방/Flutter

Flutter unicode character in string to string extension (플러터 유니코드 문자열 변환)

soycrab 2023. 2. 9. 14:45

플러터로 개발을 하던중 

서버쪽에서 알림에 이모지를 보여주고 싶다는 요청이 들어왔어요. 

그와 동시에 알림 리스트 에 unicode 를 넣어서 내려 보내주기 시작했어요.

 

플러터 Text Widget 에서 유니코드 문자를 사용하려면 

아래와 같은 형식으로 사용을 해야지만,

Text("Is test. \u{1f60e}"}

 

클라이언트 개발자와 어떠한 협의도 없이 아래처럼 String 데이터를 내려 주는거에요........

U+1F389 나는 U+1F389 프로그래머에요

 

당연히 Flutter 에서는 지원하지 않는 형식이므로 원하는 형태로 보이지 않았고,

결국 유니코드 캐릭터가 포함된 값을 찾아서 

플러터에서 인식할 수 있는 형태로 바꿔주는 방식을 직접 구현하게 되었어요.

 String unicodeContainStringToString() {
    try {
      List<String> words = split(' ');
      for(final word in words) {
        if(word.contains("U+")) {
          String tempWord = word;
          tempWord = tempWord.replaceAll("U+", "").toLowerCase();
          var codePointValue = int.parse(tempWord, radix: 16);
          var emoji = String.fromCharCode(codePointValue);
          words[words.indexOf(word)] = emoji;
        }
      }
      return words.join(" ");
    } catch(e) {
      return this;
    }
  }

 

클라이언트 개발자들의 인권이 점점 사라지는 듯 하여 슬퍼요... 스프링 공부 하러 가야지 

 

반응형