커뮤니티
포인트
쿠폰
내 강의실
국비 신청 내역
증명서
계정
로그아웃
학습 질문
개발 일지
나의 활동
답변 완료
3-17 이미지 피커 라이브러리 설치 후 나타난 현상
[왕초보] 플러터(Flutter)로 시작하는 앱개발 종합반
3주차
북마크
최*완
댓글
11
추천
0
조회수
25
조회수
25
답변 완료

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

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



이전 질문의 답변에 대하여 답변을 달았는데 왜인지 해당 질문이 종료되었다고 나와서 다시 답변을 달아 봅니다.


Flutter --version

Flutter 3.24.1 • channel stable • https://github.com/flutter/flutter.git  ;

Framework • revision 5874a72aa4 (4 months ago) • 2024-08-20 16:46:00 -0500

Engine • revision c9b9d5780d

Tools • Dart 3.5.1 • DevTools 2.37.2


위와 같고, 코드는 아래와 같습니다. 고맙습니다.


main.dart

import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:thread_app_sample/home.dart';


void main() {
  runApp(const MyApp());
}


class MyApp extends StatelessWidget {
  const MyApp({super.key});


  @override
  Widget build(BuildContext context) {
    return GetMaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        scaffoldBackgroundColor: Colors.white,
        textTheme: TextTheme(
          bodyMedium: TextStyle(color: Colors.white),
        ),
        useMaterial3: true,
      ),
      home: Home(),
    );
  }
}

home.dart

import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:thread_app_sample/thread_write_page.dart';


class Home extends StatelessWidget {
  const Home({super.key});


  Widget _header() {
    return Row(
      mainAxisAlignment: MainAxisAlignment.spaceBetween,
      children: [
        SizedBox(
          width: 50,
        ),
        Image.asset(
          'assets/images/thread_logo.png',
          width: 50,
        ),
        Image.asset(
          'assets/images/more_icon.png',
          width: 50,
        ),
      ],
    );
  }


  Widget _quickFeedWriteView() {
    return GestureDetector(
      onTap: () {
        Get.to(() => ThreadWritePage());
      },
      child: Column(
        children: [
          Row(
            children: [
              Image.asset(
                'assets/images/profile_image.png',
                width: 50,
              ),
              SizedBox(width: 10),
              Expanded(
                child: Column(
                  crossAxisAlignment: CrossAxisAlignment.stretch,
                  children: [
                    Text(
                      'Kimsungduck',
                      style: TextStyle(
                        fontWeight: FontWeight.bold,
                        color: Color(0xff262626),
                      ),
                    ),
                    Text(
                      '새로운 소식이 있나요?',
                      style: TextStyle(color: Color(0xff9a9a9a), fontSize: 14),
                    ),
                  ],
                ),
              )
            ],
          ),
          SizedBox(height: 15),
          Row(
            mainAxisAlignment: MainAxisAlignment.start,
            children: [
              SizedBox(width: 60),
              GestureDetector(
                  child:
                      Image.asset('assets/images/photo_icon.png', width: 30)),
              SizedBox(width: 10),
              GestureDetector(
                  child:
                      Image.asset('assets/images/photo_icon.png', width: 30)),
              SizedBox(width: 10),
              GestureDetector(
                  child: Image.asset('assets/images/gif_icon.png', width: 30)),
              SizedBox(width: 10),
              GestureDetector(
                  child: Image.asset('assets/images/mic_icon.png', width: 30)),
              SizedBox(width: 10),
              GestureDetector(
                  child:
                      Image.asset('assets/images/align_icon.png', width: 30)),
            ],
          )
        ],
      ),
    );
  }


  Widget _singleFeed() {
    return Row(
      crossAxisAlignment: CrossAxisAlignment.start,
      children: [
        _leftProfileArea(),
        Expanded(
          child: _contentArea(),
        ),
      ],
    );
  }


  Widget _leftProfileArea() {
    return Column(
      children: [
        SizedBox(
          width: 60,
          height: 60,
          child: Stack(
            children: [
              Align(
                alignment: Alignment.centerLeft,
                child: ClipRRect(
                  borderRadius: BorderRadius.circular(50),
                  child: Image.network(
                    'https://images.pexels.com/photos/5723941/pexels-photo-5723941.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1',
                    //'https://yt3.googleusercontent.com/CRfIeldfkRMlZQDIFjl9JOiO0vfbaoAcozOXhxOWSupfmajfSMBBEcs3_2axkGeaiToUt-Ry=s900-c-k-c0x00ffffff-no-rj',
                    width: 50,
                  ),
                ),
              ),
              Positioned(
                  right: 5,
                  bottom: 2,
                  child: SizedBox(
                    width: 20,
                    height: 20,
                    child: ClipRRect(
                      borderRadius: BorderRadius.circular(20),
                      child: Container(
                        decoration: BoxDecoration(color: Colors.black),
                        child: Icon(
                          Icons.add,
                          color: Colors.white,
                          size: 17,
                        ),
                      ),
                    ),
                  ))
            ],
          ),
        ),
        SizedBox(height: 15),
        Container(
          width: 2,
          height: 200,
          color: Color(0xffe5e5e5),
        ),
      ],
    );
  }


  Widget _contentArea() {
    return Column(
      children: [
        SizedBox(
          height: 30,
          child: Row(
            mainAxisAlignment: MainAxisAlignment.spaceBetween,
            children: [
              Row(
                children: [
                  Text(
                    '개발하는남자',
                    style: TextStyle(
                      color: Colors.black,
                      fontSize: 14,
                      fontWeight: FontWeight.bold,
                    ),
                  ),
                  SizedBox(width: 7),
                  Text(
                    '14시간',
                    style: TextStyle(
                      color: Color(0xff999999),
                      fontSize: 14,
                    ),
                  )
                ],
              ),
              GestureDetector(
                onTap: () {},
                child: Icon(
                  Icons.more_horiz,
                  color: Color(0xff999999),
                ),
              )
            ],
          ),
        ),
        Text(
          '장진우 셰프님이 제주시 산지천에 레스토랑을 또 하 나 오픈했다. 이번에는 태국식당. "쏨" 아직 가오픈 인데 어째어째 초대를 받아 점심을 먹으러 갔다. 제 주도에 있는 진우님 식당 거의 다 먹어봤는데 난 여 기가 최고인듯 ^^ 마침 진우님 생일이어서 간단한 간식거리도 사드리고 ^^ 여긴 자주 와야겠다 ㅎㅎ 카오만가이(닭수육+닭육수밥), 느어팟끄라파오(타이 바질 소고기 볶음 덮밥), 쏨꾀이튀유톰양(쏨표 새 우 & 돼지고기 톰양 계란면), 공신채볶음과 타이밀 크티와 코코넛쿨러를 것들였다. 느므 맛있네... 제주',
        ),
        SizedBox(height: 10),
        SizedBox(
          height: 200,
          child: PageView(
            padEnds: false,
            controller: PageController(viewportFraction: 0.75),
            children: [
              Image.asset('assets/images/2.png'),
              Image.asset('assets/images/1.png'),
              Image.asset('assets/images/3.png'),
            ],
          ),
        ),
        SizedBox(height: 10),
        Row(
          children: [
            GestureDetector(
              onTap: () {},
              child: SizedBox(
                width: 55,
                child: Row(
                  children: [
                    Image.asset(
                      'assets/images/icon_like.png',
                      width: 30,
                    ),
                    Text('24'),
                  ],
                ),
              ),
            ),
            GestureDetector(
              onTap: () {},
              child: SizedBox(
                width: 55,
                child: Row(
                  children: [
                    Image.asset(
                      'assets/images/icon_message.png',
                      width: 30,
                    ),
                    Text('14'),
                  ],
                ),
              ),
            ),
            GestureDetector(
              onTap: () {},
              child: SizedBox(
                width: 55,
                child: Row(
                  children: [
                    Image.asset(
                      'assets/images/icon_share.png',
                      width: 30,
                    ),
                    Text('7'),
                  ],
                ),
              ),
            ),
            GestureDetector(
              onTap: () {},
              child: Image.asset(
                'assets/images/icon_send.png',
                width: 30,
              ),
            ),
          ],
        ),
      ],
    );
  }


  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: SafeArea(
        child: ListView(
          children: [
            _header(),
            SizedBox(height: 20),
            Padding(
              padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 10),
              child: _quickFeedWriteView(),
            ),
            Divider(),
            Padding(
              padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 10),
              child: _singleFeed(),
            ),
          ],
        ),
      ),
    );
  }
}

feed_write_area.dart

import 'package:flutter/material.dart';


class FeedWriteArea extends StatelessWidget {
  const FeedWriteArea({super.key});


  @override
  Widget build(BuildContext context) {
    return Column(
      // 이 부분은 home과 thread_write_page의 같은 부분을 대체해서 코드를 깔끔하게 해 보기 위한
      // 것이나 현재 프로젝트에는 이런 게 있다고만 알고 활용은 안 함
      children: [
        Row(
          children: [
            Image.asset(
              'assets/images/profile_image.png',
              width: 50,
            ),
            SizedBox(width: 10),
            Expanded(
              child: Column(
                crossAxisAlignment: CrossAxisAlignment.stretch,
                children: [
                  Text(
                    'Kimsungduck',
                    style: TextStyle(
                      fontWeight: FontWeight.bold,
                      color: Color(0xff262626),
                    ),
                  ),
                  Text(
                    '새로운 소식이 있나요?',
                    style: TextStyle(color: Color(0xff9a9a9a), fontSize: 14),
                  ),
                ],
              ),
            )
          ],
        ),
        SizedBox(height: 15),
        Row(
          mainAxisAlignment: MainAxisAlignment.start,
          children: [
            SizedBox(width: 60),
            GestureDetector(
                child: Image.asset('assets/images/photo_icon.png', width: 30)),
            SizedBox(width: 10),
            GestureDetector(
                child: Image.asset('assets/images/photo_icon.png', width: 30)),
            SizedBox(width: 10),
            GestureDetector(
                child: Image.asset('assets/images/gif_icon.png', width: 30)),
            SizedBox(width: 10),
            GestureDetector(
                child: Image.asset('assets/images/mic_icon.png', width: 30)),
            SizedBox(width: 10),
            GestureDetector(
                child: Image.asset('assets/images/align_icon.png', width: 30)),
          ],
        )
      ],
    );
  }
}









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