인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

지니님의 프로필 이미지
지니

작성한 질문수

Flutter 앱 개발 기초

온보딩 화면 만들기

ListView.Builder 에서 질문이 있습니다.

해결된 질문

작성

·

30

1

ListView.Builder에서 Map 데이터를 사용을 할때

final List<Map<String, String>> menu = const [

{

"ko": "추천",

"en": "Recommend",

"imgUrl": "https://i.ibb.co/SwGPpzR/9200000003687-20211118142543832.jpg",

},

{

"ko": "리저브 에스프레소",

"en": "Reserve Espresso",

"imgUrl": "https://i.ibb.co/JHVXZ72/9200000003690-20211118142702357.jpg",

},

{

"ko": "리저브 드립",

"en": "Reserve Drip",

"imgUrl": "https://i.ibb.co/M91G17c/9200000003693-20211118142933650.jpg",

},

{

"ko": "콜드브루",

"en": "ColdBrew",

"imgUrl": "https://i.ibb.co/jyZK4C9/9200000003696-20211118143125337.jpg",

},

];

final item = menu[index % menu.length];

이부분이 이해가 안갑니다.

자세한 설명좀 부탁드리겠습니다~

답변 1

1

DevStory님의 프로필 이미지
DevStory
지식공유자

안녕하세요.

Dart에서 5 % 3는 5를 3으로 나눈 나머지이므로 2가 반환됩니다. index % menu.length이라고 하면 index를 menu 배열의 길이로 나눈 나머지로 항상 배열의 개수보다 작은 값이 반환됩니다.

따라서 배열의 원소 개수가 5개인 경우 index가 5 이상인 경우 out of index 에러가 발생하지만, 위와 같이 index % menu.length를 사용하시면 항상 4이하의 값만 반환되므로 index가 아무리 커도 out of index 문제가 발생하지 않으며 배열을 순환하는 효과를 구현할 수 있습니다.

감사합니다 :)

지니님의 프로필 이미지
지니

작성한 질문수

질문하기