Thumbnail
개발 · 프로그래밍 모바일 앱 개발

Flutter로 SNS 앱 만들기 대시보드

(5)
3개의 수강평 ∙  62명의 수강생

66,000원

지식공유자: DEV MOO
총 73개 수업 (13시간 28분)
수강기한: 
무제한
수료증: 발급
난이도: 
입문
-
초급
-
중급이상
지식공유자 답변이 제공되는 강의입니다
폴더에 추가 공유

초급자를 위해 준비한
[모바일 앱 개발] 강의입니다.

Flutter의 Provider / StateNotifier 상태 관리와 Firebase를 활용해서 SNS 앱을 제작합니다.

✍️
이런 걸
배워요!
Provider / StateNotifier를 활용한 상태관리
Firebase Auth를 활용한 회원가입 / 이메일 인증 / 로그인 / 로그아웃
Firestore의 Transation / Batch
Firestorage를 활용한 이미지 업로드 / 조회 / 삭제
Flutter Animation
Pagination
Debounce
앱 실행 아이콘 변경

비슷비슷한 투두 앱 대신 멋진 SNS를! 
만들며 배우는 플러터 상태관리 

내 손으로 만드는 인★그램
모바일 앱 개발계의 대세, Flutter!

실무에서 사용할 수 있는 다양한 기능을 학습할 수 있도록 강의를 만들었습니다. 유사 인스타그램 SNS 앱을 만들며 꼭 필요한 플러터 관련 기능을 학습해 보세요!

Flutter 기초 + Provider 상태 관리

유사 인스타그램 SNS 앱을 만들어가면서 Provider(StateNotifier) 상태관리를 익히고, Flutter Animation에 대해 간단히 학습합니다.

SNS 앱을 만들고 싶으신 분, 구조와 상태 관리에 대해 궁금하셨던 분들, To-Do App 이상의 복잡한 기능을 구현하고 싶은 분들께 추천합니다.

Firebase 주요 서비스 총정리

Firebase 연동, Firebase Authentication을 활용한 회원가입 및 이메일 인증 로그인, Firestore 데이터 조회/저장/수정/삭제/페이지네이션 및 Transation/Batch, Cloud Store에 이미지 파일 저장/삭제하는 방법 등 Firebase의 주요 서비스에 대해 학습합니다.


배우는 내용을 
확인해보세요.

  • 실무에 활용할 수 있는 기술, 지식을 학습할 수 있습니다.
  • 기본적인 패턴, 틀을 구성한 상태에서 각종 기능을 구현하는 방식으로 강의를 진행하기 때문에 후반으로 갈수록 강의를 이해하기 쉬워집니다.

1. 프로젝트 환경 설정

  • Flutter 프로젝트와 Firebase 프로젝트를 생성하고 연동합니다.
  • Firebase 서비스를 등록하고 rule을 설정합니다.

2. 회원가입 화면

  • 스마트폰 갤러리에서 프로필 사진을 선택하고 화면에 표시합니다.
  • 각 필수입력 항목에 검증 로직을 적용합니다.
  • Firebase Authentication, Firestore, Cloud Storage에 데이터를 저장합니다.
  • 입력한 이메일에 인증 링크가 작성된 이메일을 전송하고 메시지를 출력합니다.

3. 로그인 화면

  • 각 필수 입력 항목에 검증 로직을 적용합니다.
  • 이메일 인증이 완료된 사용자에 대해서만 로그인 인증 상태를 변경합니다.

4. AuthStatus 상태에 따른 화면 이동

  • Firebase Authentication 인증 상태에 따라 AuthStatus 의 상태값을 변경합니다.
  • AuthStatus 상태값이 미인증일 경우, 로그인 화면으로 이동합니다.

5. 메인 화면

  • TabBarVIew 위젯을 사용해서 페이지 이동시, 애니메이션 효과를 적용합니다.
  • BottomNavigatorBar 위젯을 사용해서 하단 버튼으로 페이지를 이동합니다.

6. 게시글 등록 화면

  • 갤러리에서 여러 개의 사진을 선택하고 선택한 사진을 슬라이드로 확인 합니다.
  • 게시글 내용을 입력하고 불필요한 사진은 삭제 후, 등록하면 화면 이동과 동시에 등록 완료 메시지를 출력합니다.

7. 게시글 목록 화면

  • 등록한 게시글 목록을 화면에 표시합니다.
  • 여러 장의 게시글 사진을 슬라이드로 확인하고 확대/축소합니다.
  • 최상단에서 화면을 아래로 내려서 게시글 목록을 새로고침합니다.

8. 프로필 화면

  • 현재 접속 중인 사용자 또는 프로필 사진을 터치하여 특정 사용자의 정보를 화면에 표시합니다.
  • 사용자가 작성한 게시물 수, following, follower, 게시물 목록을 화면에 표시합니다.
  • Folllow, Unfollow 기능을 실행합니다.

9. 게시물 화면

  • 게시물에 좋아요 기능을 추가하고 좋아요 수를 표시합니다.
  • 좋아요 기능에 애니메이션을 적용합니다.

10. 좋아요 목록 화면

  • 접속 중인 사용자가 좋아요를 누른 게시물의 목록을 화면에 표시합니다.

11. 댓글 화면

  • 게시글에 댓글을 등록하고 출력하는 화면을 작성합니다.

12. 게시글 삭제 기능

  • 사용자가 작성한 게시글을 삭제합니다.
  • 삭제한 게시글과 관련된 이미지 파일, 게시글 내용, 댓글 등의 데이터를 firebase 서비스에서 삭제합니다.

13. 사용자 검색 화면

  • 이름으로 사용자를 검색합니다.
  • 검색 결과에서 프로필 화면으로 이동하여 특정 사용자의 정보를 표시합니다.
  • 사용자 검색 로직에 Debounce를 적용합니다.

14. 페이징 기능

  • 게시글 목록 화면, 좋아요 목록 화면, 프로필 화면에 페이징 기능을 적용해서 지정된 수 만큼 게시글 데이터를 가져옵니다.

15. 앱 실행 아이콘 변경

  • 앱 실행 아이콘과 Splash Screen을 변경합니다.

이 강의를 만든 사람, DEV MOO

  • (현) 웹/Flutter 앱 개발 프리랜서
  • (전) 소프트엔지니어소사이어티 SMART CLOUD IT MASTER 과정 강사
  • (전) TOSHIBA ETC 제어 모듈 개발 참여 (일본)
  • (전) SMBC 고객관리 플랫폼 개발 참여 (일본)
  • (전) 미식의시대 배달앱 개발 참여
  • 유튜브 채널 운영 중 

Q&A 💬

Q. 강의에 사용된 Flutter 버전을 알려주세요.

Flutter 3.13.7을 사용했습니다.

Q. 상태관리에 Provider를 사용한 이유가 무엇인가요?

Flutter에는 Riverpod, Bloc, GetX 등 여러 가지 상태 관리 패키지가 있습니다. 그 중에서도 Provider는 Google에서 활발하게 지원하고 추천하는 상태 관리 패키지로 인터넷 커뮤니티 등을 통해서 원하는 정보를 쉽게 검색할 수 있습니다. 또 Provider에서 Rivderpod 등 다른 상태관리 패키지로의 이전 작업도 비교적 어렵지 않을 것이라 생각합니다.

Q. 강의 내용이 iOS에는 대응하지 않나요?

현재 강의 내용은 Android에서만 검증된 상태입니다. iOS 대응은 업데이트 예정입니다.

Q. 강의를 듣기 위한 사전 지식이 필요한가요?

Flutter 기본과 Provider 상태관리에 대한 사전 지식이 필요합니다. 간단한 Todo 앱이나 메모장 정도를 만들어 보셨다면 강의를 충분히 따라오실 수 있을 겁니다.

Q. 소스 코드를 제공하시나요?

수강생에게는 Github을 통해 소스코드를 제공해 드립니다.

📢 수강 전 참고사항 안내

  • 실습 환경으로는 Windows 10, Android Studio를 요구합니다.
  • Flutter 개발 환경이 구축되어 있어야 합니다. (강의에서는 3.13.7 버전을 사용합니다.)
  • 수강생에게는 최종 소스 코드와 실습 자료(이미지 파일 등)를 제공합니다.
  • 학습에 필요한 선수 지식을 확인해주세요. Flutter 기초 지식 및 Provider 상태 관리 기초 지식이 필요하며, Flutter를 이용해 To-do 앱 내지 간단한 메모장을 만든 경험이 있다면 충분히 수강하실 수 있습니다.
  • 강의 내용은 Android에 맞춰져 있습니다. (iOS 대응은 추후 업데이트 예정입니다.)

이런 분들께 추천드려요!

🎓
학습 대상은
누구일까요?
SNS 앱을 만들고 싶으신 분
Todo 앱 다음 단계로 넘어가고 싶은 분
Provider 상태 관리를 학습하고 싶은 분
각종 Firebase 서비스를 경험하고 싶은 분
📚
선수 지식,
필요할까요?
Flutter로 간단한 앱을 만들 정도의 스킬
Provider / StateNotifier 기초 지식

안녕하세요
DEV MOO 입니다.
DEV MOO의 썸네일

안녕하세요

한국, 일본에서 웹 개발 및 안드로이드 앱 개발자로 활동했습니다.
프로그래밍 강사로도 활동하면서 지식을 전파하여 사람을 가르친다는 일에
책임감을 갖고 학생분들이 성장하는 모습에 보람을 느끼고 있습니다.

excusme@naver.com

커리큘럼 총 73 개 ˙ 13시간 28분의 수업
이 강의는 영상, 수업 노트, 첨부 파일이 제공됩니다. 미리보기를 통해 콘텐츠를 확인해보세요.
섹션 0. 강의 소개
강의 소개 미리보기 02:53
github 주소 / 프로젝트에 사용한 패키지 목록
섹션 2. 회원 가입 화면
svg 파일 사용 06:39
Stack 위젯으로 위젯 겹치기 05:27
TextFormField / ElevatedButton / TextButton 사용 09:53
로컬 기기의 갤러리에서 선택한 이미지 화면에 표시 10:15
이메일 유효성 검사 07:55
이름 / 패스워드 / 패스워드 확인 검증 로직 작성 09:42
인증 상태를 상태관리 10:28
상태관리 등록 후, 회원 가입 테스트 13:38
인증 메일 전송 / Firebase Storage 에 프로필 이미지 저장 05:27
Firebase Storage 이미지가 일반 파일로 저장되는 이슈 발생 시
Firestore 에 회원 정보 저장 11:33
예외 처리 적용 12:23
가입완료 메시지 표시 / 회원 가입중일 경우, 입력 항목 비활성화 11:20
섹션 3. 로그인 화면
로그인 화면 작성 09:38
Firebase Auth 로 메일 인증 유저만 로그인 15:05
섹션 4. AuthStatus 상태에 따른 화면 이동
로그인 인증 상태(AuthStatus) 에 따라 메인 또는 로그인 화면으로 이동 11:30
pushAndRemoveUntil 사용해서 화면 이동 10:59
Firebase Auth 인증 상태에 따라 AuthStatus 상태 변경 16:56
섹션 5. 메인 화면
TabBarView 사용 05:43
BottomNavigationBar 사용 08:45
섹션 6. 게시글 등록 화면
갤러리에서 여러 개의 이미지 선택 12:15
선택한 이미지 슬라이드 가능하게 표시 13:35
게시글 내용 입력 위젯 / 이미지 삭제 기능 구현 05:05
게시글 상태 관리를 위한 클래스 선언 10:32
Firebase Storage 에 게시글 이미지 저장 18:12
Firestore 에 게시글 정보 저장 08:32
사용자 정보, 게시글 정보를 Model 클래스로 관리 17:16
게시글 등록 처리 상태에 따라 상태값 변경 / 예외 처리 적용 17:21
등록 완료 메시지 표시 / 등록 완료 후, 화면 이동 08:57
Firestore 작업에 Batch 적용 11:58
섹션 7. 게시글 목록 화면
게시글 정보 가져오기 18:30
게시글 정보 화면에 표시 22:40
게시글 이미지 슬라이드 기능 추가 17:36
게시글 이미지 확대, 축소 기능 추가 06:21
게시글 목록 새로고침 기능 추가 12:43
섹션 8. 프로필 화면
접속 중인 사용자의 정보 가져오기 19:15
접속 중인 사용자가 작성한 게시글 목록 가져오기 06:37
접속 중인 사용자의 정보 표시 11:52
접속 중인 사용자의 게시글 목록 표시 10:18
접속 중인 사용자의 정보 상태관리 11:42
특정 사용자의 정보 표시 06:35
Follow, Unfollow 기능 추가 21:44
Follow, Unfollow 결과를 화면에 반영 06:48
섹션 9. 게시물 화면
좋아요 기능 추가 18:15
좋아요 결과를 화면에 반영 16:09
프로필 화면을 통한 좋아요 기능 15:21
좋아요 애니메이션 추가 25:56
섹션 10. 좋아요 목록 화면
좋아요 누른 게시글 정보 가져오기 24:06
좋아요 누른 게시글 정보를 화면에 표시 03:29
좋아요 기능 처리 결과를 좋아요 목록 화면에 반영 07:54
섹션 11. 댓글 화면
댓글 입력 화면 만들기 14:20
댓글 등록 기능 추가 17:37
댓글 정보 가져오기 16:16
댓글 정보 화면에 표시 15:55
댓글 등록중 상태일 경우, 내용 입력 / 등록 버튼 위젯 비활성화 01:53
섹션 12. 게시글 삭제 기능
작성한 게시글에만 삭제 버튼 표시 03:09
게시글 삭제 기능 추가 15:20
게시글 삭제 후, 화면에 반영 13:27
섹션 13. 사용자 검색 화면
Firestore 에서 사용자 검색 22:00
사용자 검색 결과를 화면에 표시 07:31
사용자 검색 기능에 Debounce 적용 07:07
섹션 14. 페이징 기능
게시글 목록 화면에 페이징 적용 20:08
페이징 처리중 상태일 경우, 로딩 위젯 표시 02:20
좋아요 목록 화면에 페이징 적용 13:00
프로필 화면에 페이징 적용 07:43
섹션 15. 앱 실행 아이콘 변경
앱 실행 아이콘 변경 07:04
강의 게시일 : 2023년 11월 02일 (마지막 업데이트일 : 2023년 11월 14일)
수강평 총 3개
수강생분들이 직접 작성하신 수강평입니다.
5
3개의 수강평
5점
4점
3점
2점
1점
VIEW 추천 순 최신 순 높은 평점 순 낮은 평점 순 평점 순 높은 평점 순 낮은 평점 순
koyk0408 thumbnail
5
플러터랑 파이어베이스 같이 하는 강의 찾다가 구매하게 되었어요. 프로바이더를 처음 접해서 처음에 좀 어려웠고, 프로바이더 기본만 좀 공부하고 마저 후다닥 들었습니다. n번 들으려고... 근데 프로바이더를 더 공부해야 완전히 이해가 될 것 같네요..ㅜㅜ 일단 음질이 명확하고 일정해서 좋아요. 글씨도 깔끔하게 잘 보입니다. 그리고 코드 작성하면서 왜 이렇게 하는지 이유를 말씀해주시는 게 좋았어요. 코드를 개선해나가는 방식도 좋았구요. 기본적인 CRUD 동작을 구현할 수 있어서 인스타 클론 강의지만 어떤 앱을 만들어도 활용할 수 있을 것 같아요. 전반적으로 깔끔하고 꼼꼼하며 명료한 강의였습니다!
2023-11-30
지식공유자 DEV MOO
감사합니다! 질문 있으시면 언제든지 남겨주세요.
2023-11-30
GO thumbnail
5
일단 좋은 강의만들어주셔서 감사드립니다. 강사님 목소리도 좋고 진행 속도도 좋고, 내용도 좋아서 강의 잘 봤습니다. 또 강의수준과 구성이 매우 좋기 때문에 그래서 더 잘됐음 하는 바람에 아쉬운점들 개선해서 더 대박나시길 바랍니다. 1. 상태관리툴 - 프로바이더가 쉬운편에다 플러터의 기본위젯인stateless,stateful 를 그대로 사용하기 때문에 선택하셨는진 모르겠지만, 강의수준과 복잡성을 봤을때나.. 차후 교육자가 이앱을 더 발전시킨다는 미래를 봤을때 RiverPod으로 가르쳐 주셨으면 좋았을 것 같습니다. 리버팟은 widget ref를 통해서 뿌려주면 되고, 메인페이지에서도 provider scope만 달면 끝이고, 프로바이더 끼리 참조도 쉬운데 , 강의내 프로바이더는 중간중간 main.dart에 전역 프로바이더 지정하고 read.context를 사용하면서도 제너릭을 커서이동으로 돌아와서 입력해야하는 사용성에서 아쉬웠습니다. 또 리버팟은 hook과 조합이 가능해서 더 배움이 필요한 상태관리툴인것 같습니다. 2. 모바일은 라우터가 크게 중요하진 않지만, 강의수준에 맞게 고라우터가 적용 된 강의였음 좋았을 것 같았습니다. 3. 프로필이미지를 회원 가입에서만 등록하는게 아니라 프로필에서 이미지를 눌러 수정할 수 있었으면 좋았겠다 싶었습니다. 마찬가지로 게시물 수정기능이 없고 등록,삭제만 있는게 아쉬웠습니다. 이런 몇가지 아쉬운 부분이 개선 된다면 손꼽을 만큼 좋은 플러터 강의인 것 같습니다. 차후 개선판이 나와서 인기가 많아지고 그래서 이 강사님의 다른 플러터 강의가 계속 나왔으면 좋겠습니다. 기대가 됩니다.
2024-04-20
지식공유자 DEV MOO
감사합니다. 현재 리버팟 적용한 강의를 제작중 입니다. 말씀하신 내용은 새로운 강의의 추가 섹션으로 넣어보도록 노력하겠습니다.
2024-04-21
코린이 thumbnail
5
인프런에 있는 여러 플러터 강의들을 들어봤는데, 이 인스타그램 클론 코딩은 실전에 아주 유익한 기능들을 많이 배운 것 같아서 후회없는 강의라고 생각됩니다. 다만 기본적인 다트언어 지식을 쌓고 수강하시는 걸 추천드립니다! 또 멋진 강의 기대하겠습니다~
2024-01-07
지식공유자 DEV MOO
감사합니다!
2024-01-07