본문 바로가기
Flutter/Flutter FAQ

Flutter 플러터에서 여러 위젯을 렌더링하기 위해 리스트를 반복하는 방법은 무엇인가요?, Iterating through a list to render multiple widgets in Flutter?

by 베타코드 2023. 5. 30.
반응형

질문


나는 다음과 같이 문자열 목록을 정의했다:

var list = ["one", "two", "three", "four"]; 

나는 텍스트 위젯을 사용하여 화면에 값들을 옆으로 렌더링하고 싶다. 이를 위해 다음 코드를 사용해 보았다:

for (var name in list) {
   return new Text(name);
}

그러나 이 코드를 실행할 때 for 루프는 한 번만 실행되고 목록의 첫 번째 항목인 one만 렌더링되는 텍스트 위젯이 하나만 생성된다. 또한, for 루프 내부에 로그 메시지를 추가하면 한 번만 트리거된다. 왜 내 for 루프는 목록의 길이에 따라 루프하지 않는 걸까? 그것은 한 번만 실행되고 종료되는 것 같다.


답변


기본적으로 함수에서 'return'을 누르면 함수가 중지되고 반복이 계속되지 않습니다. 따라서 모두 목록에 넣고 위젯의 자식으로 추가해야합니다.

다음과 같은 작업을 수행 할 수 있습니다.

  Widget getTextWidgets(List<String> strings)
  {
    List<Widget> list = new List<Widget>();
    for(var i = 0; i < strings.length; i++){
        list.add(new Text(strings[i]));
    }
    return new Row(children: list);
  }

또는 더 나은 방법으로 .map() 연산자를 사용하여 다음과 같이 수행 할 수 있습니다.

  Widget getTextWidgets(List<String> strings)
  {
    return new Row(children: strings.map((item) => new Text(item)).toList());
  }
반응형

댓글