목록Programing/Flutter (43)
스마트시대
https://pub.dev/packages/dart_openai 키는 여기다 보관? https://pub.dev/packages/envied 잘안되니까 그냥 보통 방법으로 하자

30.1 Security Rules 로그인 하지 않은 사용자가 users collection에 document를 만들지 않게 하기 위해 로그인한 대상이 다른 사용자의 프로필을 수정하지 못하게 하기 write는 update, create, delete를 다 합친 거기 때문에 요구사항에 따라 쓰기 rules_version = '2'; service cloud.firestore { match /databases/{database}/documents { //로그인 했을 때만 사용자 프로필에 read, write, update, createm를 허용 match /users/{document=**} { allow read, update, create : if request.auth != null //resource..

flutter pub add firebase_messaging flutterfire configure 29.1 getToken 여기서 토큰 생긴거 확인하고 토큰 복사해 밑에 붙여넣기 29.2 Foreground Notifications 29.3 Background Notification 백그라운드에 있던 앱의 노티를 클릭하면 이런식으로 프린트 된다. 이걸로 유저가 chatroom으로 가는데 정확이 어느 룸으로 유저를 보낼지도 정할 수 있다. 29.4 ShellRoute 진짜 route를 감싸는 일종의 wrapper 이걸로 다른 모든 라우트를 감싸서 알림 provider를 초기화 할 수 있음 깃헙 참조 이 코드로 background에서 알림 눌렀을 때는 ChatsScreen으로 kill했다가 알림 눌렀을 ..

28.1 Send Message 28.2 StreamProvider 이route에 있는 변경 사항을 listen하고 있는 것 .collection("chat_rooms") .doc("pBBIEx03rE6EfisDgtbv") .collection("texts") .orderBy("createdAy") 여기서 어떤게 변경되었는지 이벤트(어떤 데이터가 들어있는 QueryShnapshot)로써 받을 수 있음(챗이 삭제되거나 추가, 수정) .map( (event) => event.docs 알림을 준 snapshot에 포함된 모든 documents(아래의 문서)를 한 번더 맵핑 28.3 autoDispose autodispose를 해줘야하는 이유 riverpod는 플러터에 상관없이 그냥 클래스와 global var..

27.1 VideoPost => {} 의 차이 =>여기에는 리턴이 포함되어 있음 {}는 리턴해줄 데이터가 없으니까 안에 return써줘야함 video_post는 깃헙참조 이 부분에 화면에 꽉차게 보이는 건 썸네일 27.2 Infinite Firebase 좀더 간단하게 바꾸는 방법 27.3 FamilyAsyncNotifier 좋아요 버튼 눌러서 밑에 아이디들 생김 27.4 likeVideo 이런식으로 비디오아이디, 유저아이디가 같이 제목이 된다. 27.5 dislikeVideo % firebase deploy --only functions === Deploying to 'tiktok-clone-b524f'... i deploying functions Running command: npm --prefix "..

import 'dart:io'; import 'package:cloud_firestore/cloud_firestore.dart'; import 'package:firebase_storage/firebase_storage.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; //(26.1) class VideosRepository { final FirebaseFirestore _db = FirebaseFirestore.instance; final FirebaseStorage _storage = FirebaseStorage.instance; // upload a video file UploadTask uploadVideoFile(File video..

https://console.firebase.google.com/u/1/project/tiktok-clone-b524f/firestore?hl=ko firebase cloud firestore(database), storage(Nosql)활성화하기 25.1 FireStore Intro users안에 또 만들려면 컬렉션 시작 누르기(likes) 25.2 UserProfileModel 25.3 createProfile import 'dart:async'; import 'package:firebase_auth/firebase_auth.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:tiktok_clone/featur..

24.0 createUserWithEmailAndPassword 이메일 비밀번호 import 'dart:async'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:tiktok_clone/features/authentication/repos/authentication_repo.dart'; //(24.0) class SignUpViewModel extends AsyncNotifier { late final AuthenticationRepository _authRepo; @override FutureOr build() { _authRepo = ref.read(authRepo); } Future signUp() async { ..

CLI install https://firebase.google.com/docs/cli?hl=ko&authuser=1#mac-linux-auto-script Flutter 앱에 Firebase 추가 https://firebase.google.com/docs/flutter/setup?authuser=1&hl=ko&platform=ios 크롬에서 파이어베이스 로그인 > 콘솔로 이동 > 새 프로젝트 생성하고 오래 걸리네... 23.2 AuthenticationRepository --------------- //(23.2) class TikTokApp extends ConsumerWidget { // class TikTokApp extends StatelessWidget { --------------- cons..

22.1 NotifierProvider import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:tiktok_clone/features/videos/models/playback_config_model.dart'; import 'package:tiktok_clone/features/videos/repos/playback_config_repo.dart'; //(21.3) // class PlaybackConfigViewModel extends ChangeNotifier { //(22.1) class PlaybackConfigViewModel extends Notifier { final PlaybackConfigRepository _re..