• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 Flutter 게시판 Map에서 key로 접근할 때 생기는 오류의 이유가 궁금합니다.

Map에서 key로 접근할 때 생기는 오류의 이유가 궁금합니다.

3 글 보임 - 1 에서 3 까지 (총 3 중에서)
  • 글쓴이
  • #28655

    한준규
    참가자

    전화번호부 정렬을 하면서 map object를 사용해서 하는 중이었습니다.

    map은 정렬이 안되니  key_list를 따로 생성하여 key_list를 정렬하고 key로 접근해서 출력해서 정렬에는 성공했습니다. 그런데 과정에서 의문이 있습니다.

    var nameAndPhone = {
      '영희': '010-1549-1511',
      '횟집': '02-5164-1261',
      '미용실': '070-9852-1598'
    };

    var nameKey = ['영희', '횟집', '미용실'];

    이런 상태에서 

    body: ListView.builder(
      itemCount: total, 
      itemBuilder: (c,i){
        return ListTile(
          leading: Icon(Icons.account_circle,size: 40),
          title: Text(nameKey[i]),
          subtitle: Text(nameAndPhone[nameKey[i]]),
        );
      },
    ),

    이 부분의 subtitle: Text() 위젯부분의 border 부분이 빨간밑줄이 끄이면서 오류가 나고 프로그램 실행이 되지 않습니다. 그래서 혹시나 key를 통해 접근한 map value의 type이 String이 아니라선가? 해서

    Text(nameAndPhone[nameKey[i]].toString()) 으로 바꿨더니 오류가 사라지고 실행이 가능했습니다. 

    어 그러면 map value의  type이 진짜 String이 아니라고? 가 궁금해서 따로 type을 print해봤습니다.

     

    print(nameAndPhone[nameKey[0]].runtimeType);
    print(nameAndPhone[nameKey[0]].toString().runtimeType);

    Output> String, String

     

    엥 둘다 String이 나옵니다.

    그러면 대체 어떤 차이로 오류가 발생하고 발생하지 않는 건가요??

    #28668

    codingapple
    키 마스터

    마우스올려보면 String? 타입이라 Text 위젯에 못넣는다는 소리가 나올텐데 

    나중에 저 변수에 String이 아니라 다른게 들어올 수 있기 때문에 미리 에러를 내주고 있는것일 뿐입니다 

    #28673

    한준규
    참가자

    아 물음표가 그런 의미였군요. 감사합니다!

    구글링만 할게 아니라 커서 올리는 에러를 더 유심히 보고 링크되어있는 document도 참고해야겠네요.

3 글 보임 - 1 에서 3 까지 (총 3 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠