
* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.
* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.
@override
Widget build(BuildContext context) {
// 음식 사진 데이터
List<Map<String, dynamic>> dataList = [
{
"category": "탑건: 매버릭",
"imgUrl": "https://i.ibb.co/sR32PN3/topgun.jpg",
}
=>
[1] scaffold 위에 적힌 이 코드는 listview.builder에서 return 함수(이 말이 맞나요?)를 위해 쓰여진 건가요?
Expanded(
child: ListView.builder(
itemCount: dataList.length,
itemBuilder: (context, index) {
String imgUrl = dataList[index]["imgUrl"];
return Card(
child: Stack(
children: [
Image.network(
imgUrl,
height: 200,
width: double.infinity,
=
[2] 위의 itembuilder에서
String imgUrl = dataList[index]["imgUrl"]; 의 의미가 잘 이해가 되지 않습니다.
returm Card의 Stack에서 image.network(imgUrl)이라는 변수의 인수와 관련된 정보인 것 같은데(?)
이것이 무엇을 뜻하는지,
특히 listview.builder와 관련된 함수에 대해 자세한 셜명이 필요합니다.
(여러번의 구글링을 통해 '콜백함수'까지 찾게 되었는데 여러 정보들이 정리가 안돼서 질문드립니다.ㅜ)
작성한 코드 및 에러 메세지
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: HomePage(), // 홈페이지 보여주기
);
}
}
class HomePage extends StatelessWidget {
const HomePage({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
// 음식 사진 데이터
List<Map<String, dynamic>> dataList = [
{
"category": "탑건: 매버릭",
"imgUrl": "https://i.ibb.co/sR32PN3/topgun.jpg",
},
{
"category": "마녀2",
"imgUrl": "https://i.ibb.co/CKMrv91/The-Witch.jpg",
},
{
"category": "범죄도시2",
"imgUrl": "https://i.ibb.co/2czdVdm/The-Outlaws.jpg",
},
{
"category": "헤어질 결심",
"imgUrl": "https://i.ibb.co/gM394CV/Decision-to-Leave.jpg",
},
{
"category": "브로커",
"imgUrl": "https://i.ibb.co/MSy1XNB/broker.jpg",
},
{
"category": "문폴",
"imgUrl": "https://i.ibb.co/4JYHHtc/Moonfall.jpg",
},
];
// 화면에 보이는 영역
return Scaffold(
appBar: AppBar(
backgroundColor: Colors.white,
elevation: 0,
centerTitle: false,
title: Text("Movie Reviews"),
titleTextStyle: TextStyle(color: Colors.black, fontSize: 35),
actions: [
IconButton(
onPressed: () {},
icon: Icon(Icons.person_2_outlined),
color: Colors.black,
iconSize: 25)
],
),
body: Padding(
padding: const EdgeInsets.all(8.0),
child: Column(
children: [
TextField(
decoration: InputDecoration(
border: OutlineInputBorder(
borderSide: BorderSide(color: Colors.grey),
borderRadius: BorderRadius.all(
Radius.circular(8),
),
),
hintText: "영화 제목을 입력하세요.",
suffixIcon: Icon(Icons.search),
),
),
Expanded(
child: ListView.builder(
itemCount: dataList.length,
itemBuilder: (context, index) {
String imgUrl = dataList[index]["imgUrl"];
return Card(
child: Stack(
children: [
Image.network(
imgUrl,
height: 200,
width: double.infinity,
),
],
),
);
},
),
),
],
),
),
);
}
}
오류 발생 시, 작성한 코드 전체와 에러 메시지를 첨부해 주세요.
Tip 1) </> 아이콘을 눌러 코드박스를 만들어 보세요.
Tip 2) Ctrl+A(맥의 경우 Command+A) 단축키로 코드를 한 번에 선택할 수 있어요!
