커뮤니티
포인트
쿠폰
내 강의실
국비 신청 내역
증명서
계정
로그아웃
학습 질문
개발 일지
나의 활동
답변 완료
플러터 2-7 다양한 피드 이미지 보여주기 에러
[왕초보] 플러터(Flutter)로 시작하는 앱개발 종합반 v0
2주차
북마크
어*광
댓글
2
추천
0
조회수
24
조회수
24
답변 완료

* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.

* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.


플러터 2-7 다양한 피드 이미지 보여주기에서

그전까지는 모두 맞게 실행되었는데. 마지막

child: Feed(imageUrl: image), // imageUrl 전달

코드 스니펫을 복사후 실행시 각기 다른이미지가 보여지지 않네요.


feed.dart 코드 에러인걸로 확인 되는데, 밑에 feed.dart 어디 부분이 에러인가요?









작성한 코드 및 에러 메세지

import 'package:flutter/cupertino.dart';

import 'package:flutter/material.dart';


import 'feed.dart';


class HomePage extends StatelessWidget {

 const HomePage({super.key});


 @override

 Widget build(BuildContext context) {

  final List<String> images = [

   "https://cdn2.thecatapi.com/images/6bt.jpg",

   "https://cdn2.thecatapi.com/images/ahr.jpg",

   "https://cdn2.thecatapi.com/images/arj.jpg",

   "https://cdn2.thecatapi.com/images/brt.jpg",

   "https://cdn2.thecatapi.com/images/cml.jpg",

   "https://cdn2.thecatapi.com/images/e35.jpg",

   "https://cdn2.thecatapi.com/images/MTk4MTAxOQ.jpg",

   "https://cdn2.thecatapi.com/images/MjA0ODM5MQ.jpg",

   "https://cdn2.thecatapi.com/images/AuY1uMdmi.jpg",

   "https://cdn2.thecatapi.com/images/AKUofzZW_.png",

  ];

  return Scaffold(

   appBar: AppBar(

    backgroundColor: Colors.white,

    elevation: 0.5,

    leading: Row(

     children: [

      SizedBox(width: 16),

      Text(

       '중앙동',

       style: TextStyle(

        color: Colors.black,

        fontWeight: FontWeight.bold,

        fontSize: 20,

       ),

      ),

      Icon(

       Icons.keyboard_arrow_down_rounded,

       color: Colors.black,

      ),

     ],

    ),

    leadingWidth: 100,

    actions: [

     IconButton(

      onPressed: () {},

      icon: Icon(CupertinoIcons.search, color: Colors.black),

     ),

     IconButton(

      onPressed: () {},

      icon: Icon(Icons.menu_rounded, color: Colors.black),

     ),

     IconButton(

      onPressed: () {},

      icon: Icon(CupertinoIcons.bell, color: Colors.black),

     ),

    ],

   ),

   body: Padding(

    padding: const EdgeInsets.symmetric(horizontal: 16),

    child: ListView.separated(

     itemCount: images.length, // 이미지 개수만큼 보여주기

     itemBuilder: (context, index) {

      final image = images[index]; // index에 해당하는 이미지

      return Padding(

       padding: const EdgeInsets.symmetric(vertical: 12),

       child: Feed(imageUrl: image), // imageUrl 전달

      );

     },

     separatorBuilder: (context, index) {

      return Divider();

     },

    ),

   ),

   floatingActionButton: FloatingActionButton(

    onPressed: () {},

    backgroundColor: Color(0xFFFF7E36),

    elevation: 1,

    child: Icon(

     Icons.add_rounded,

     size: 36,

    ),

   ),

   bottomNavigationBar: BottomNavigationBar(

    fixedColor: Colors.black,

    unselectedItemColor: Colors.black,

    showUnselectedLabels: true,

    selectedFontSize: 12,

    unselectedFontSize: 12,

    iconSize: 28,

    type: BottomNavigationBarType.fixed,

    items: [

     BottomNavigationBarItem(

      icon: Icon(Icons.home_filled),

      label: '홈',

      backgroundColor: Colors.white,

     ),

     BottomNavigationBarItem(

      icon: Icon(Icons.my_library_books_outlined),

      label: '동네생활',

     ),

     BottomNavigationBarItem(

      icon: Icon(Icons.fmd_good_outlined),

      label: '내 근처',

     ),

     BottomNavigationBarItem(

      icon: Icon(CupertinoIcons.chat_bubble_2),

      label: '채팅',

     ),

     BottomNavigationBarItem(

      icon: Icon(

       Icons.person_outline,

      ),

      label: '나의 당근',

     ),

    ],

    currentIndex: 0,

   ),

  );

 }

}

=========================Feed Code===========================

import 'package:flutter/cupertino.dart';

import 'package:flutter/material.dart';


class feed extends StatefulWidget {

 const feed({

  super.key,

  required this.imageUrl,

 });


 final String imageUrl; // 이미지를 담을 변수


 @override

 State<feed> createState() => _feedState();

}


class _feedState extends State<feed> {

 // 좋아요 여부

 bool isFavorite = false;


 @override

 Widget build(BuildContext context) {

  return Row(

   crossAxisAlignment: CrossAxisAlignment.start,

   children: [

    // CilpRRect 를 통해 이미지에 곡선 border 생성

    ClipRRect(

     borderRadius: BorderRadius.circular(8),

     // 이미지

     child: Image.network(

      widget.imageUrl, // 10번째 줄의 imageUrl 가져오기

      width: 100,

      height: 100,

      fit: BoxFit.cover,

     ),

    ),

    SizedBox(width: 12),

    Expanded(

     child: Column(

      crossAxisAlignment: CrossAxisAlignment.start,

      children: [

       Text(

        'M1 아이패드 프로 11형(3세대) 와이파이 128G 팝니다.',

        style: TextStyle(

         fontSize: 16,

         color: Colors.black,

        ),

        softWrap: false,

        maxLines: 2,

        overflow: TextOverflow.ellipsis,

       ),

       SizedBox(height: 2),

       Text(

        '봉천동 · 6분 전',

        style: TextStyle(

         fontSize: 12,

         color: Colors.black45,

        ),

       ),

       SizedBox(height: 4),

       Text(

        '100만원',

        style: TextStyle(

         fontSize: 14,

         fontWeight: FontWeight.bold,

        ),

       ),

       Row(

        children: [

         Spacer(),

         GestureDetector(

          onTap: () {

           // 화면 갱신

           setState(() {

            isFavorite = !isFavorite; // 좋아요 토글

           });

          },

          child: Row(

           children: [

            Icon(

             isFavorite

               ? CupertinoIcons.heart_fill

               : CupertinoIcons.heart,

             color: isFavorite ? Colors.pink : Colors.black,

             size: 16,

            ),

            Text(

             '1',

             style: TextStyle(color: Colors.black54),

            ),

           ],

          ),

         )

        ],

       ),

      ],

     ),

    ),

   ],

  );

 }

}


취소
 공유
취소
댓글 0
댓글 알림
나의얼굴