Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- divider
- enum
- transform
- Swift
- swift 문법
- globalkey
- platformexception
- permission
- signout
- Snapshot
- switch
- ListView.builder
- provider
- consumer
- snackbar
- Navigator
- reference
- Firebase
- Stream
- changenotifierprovider
- borderRadius
- multiprovider
- setstate
- controller
- user
- 문법
- Camera
- datetime
- runTransaction
- changenotifier
Archives
- Today
- Total
코딩하는 제리
[Flutter/Project](Instagram Clone) FireStore UserModel 및 상태 파일 본문
Flutter/Project_InstaClone(완)
[Flutter/Project](Instagram Clone) FireStore UserModel 및 상태 파일
JerryCho 2021. 2. 11. 19:03
소스코드 및 pubspec.yaml
// models/firestore/user_model.dart
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter_project_IJ/constants/firestore_keys.dart';
class UserModel {
final String userKey;
final String profileImg;
final String email;
final List<dynamic> myPosts;
final int followers;
final List<dynamic> likedPosts;
final String username;
final List<dynamic> followings;
// 해당 데이터의 위치를 저장하는 타입
final DocumentReference reference;
// fromMap -> dart 내부 메서드
UserModel.fromMap(Map<String, dynamic> map, this.userKey, {this.reference})
: profileImg = map[KEY_PROFILEIMG],
email = map[KEY_EMAIL],
likedPosts = map[KEY_LIKEDPOSTS],
followers = map[KEY_FOLLOWERS],
followings = map[KEY_FOLLOWINGS],
myPosts = map[KEY_MYPOSTS],
username = map[KEY_USERNAME];
// fromSnapshot -> cloud_firestore 메서드
// snapshot -> FireStore 각각의 Document
// id -> Document 키
// reference -> 해당 Document 위치값
UserModel.fromSnapshot(DocumentSnapshot snapshot)
: this.fromMap(snapshot.data(), snapshot.id,
reference: snapshot.reference);
}
// models/user_model_state.dart
import 'package:flutter/foundation.dart';
import 'package:flutter_project_IJ/models/firestore/user_model.dart';
// 유저마다 다른 데이터를 위젯에 새로 출력하기 위해 작성.
class UserModelState extends ChangeNotifier {
UserModel _userModel;
UserModel get userModel => _userModel;
// userModel 데이터가 바뀔 때 해당 위젯에 알려줌.
set userModel(UserModel userModel) {
_userModel = userModel;
notifyListeners();
}
}
'Flutter > Project_InstaClone(완)' 카테고리의 다른 글
[Flutter/Project](Instagram Clone) Firestore 회원가입 유저 데이터 생성 (0) | 2021.02.16 |
---|---|
[Flutter/Project](Instagram Clone) Firestore 데이터 입/출력 (0) | 2021.02.11 |
[Flutter/Project](Instagram Clone) 파이어베이스 버전 업에 의한 변경점 (0) | 2021.02.11 |
[Flutter/Project](Instagram Clone) 페이스북 로그아웃 및 인디케이터 (0) | 2021.02.09 |
[Flutter/Project](Instagram Clone) 페이스북 로그인 (0) | 2021.02.09 |
Comments