묻고 답해요
143만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
람다 함수 중복 문제가 발생했는대 해결을 못하고있습니다.
명언 앱 마지막 부분에서 컴파일을 실행하면 발생하는 오류가 있습니다. Type com.cho.goodwards.MainActivity$$ExternalSyntheticLambda0 is defined multiple times: /Users/mac/Desktop/개인공부/Kotlin_ex/ex.5/app/build/intermediates/project_dex_archive/debug/out/com/cho/goodwards/MainActivity 2.dex, /Users/mac/Desktop/개인공부/Kotlin_ex/ex.5/app/build/intermediates/project_dex_archive/debug/out/com/cho/goodwards/MainActivity.dex 예제 파일을 받아 복붙해도 똑같이 오류가 발생합니다. gpt 에 질문 하니 binding = DataBindingUtil.setContentView(this, R.layout.activity_main) binding.showAllSentenceBtn.setOnClickListener { val intent = Intent(this, SentenceActivity::class.java) startActivity(intent) } binding.goodWordTextArea.setText(sentenceList.random()) } 이부분에서 문제가 생긴다고 하는대 안드로이드 처음이라 오류 찾는게 좀 힘듭니다. 구글링에서도 그래들 빌드 설정을 바꿔라는대 제가 잘못 수정했는지 오류가 여전히 걸리더군요
-
미해결[초중급편] 안드로이드 데이팅 앱 만들기(Android Kotlin)
매칭리스트를 눌러도 아무 반응이 없어요
계정 여러개 생성하여 서로 매칭을 시켜 알람까지 갔는데 MY MATCHING LIST를 눌러도 아무 반응이 없네요 어디가 문제인지 봐주실 수 있을까요?전체코드 깃허브 주소 -https://github.com/alsxm4625/sogating4/commit/e1307ce30381e77d678b715b3227f2e1a00d9a09
-
해결됨[Bloc 응용] 실전 앱 만들기 (책 리뷰 앱) : SNS 로그인, Firebase 적용, Bloc 상태 관리, GoRouter
플러터 바탕화면 빠진후 앱 진행시
안녕하세요 . 섹션7의 검색 라우터를 진행하다가 우연히 바탕화면에 들어갔다가 앱마크를 재생버튼이 아닌앱 마크를 클릭을 했더니 splash 화면에서 로딩중으로만 계속 되어있고print를 찍었더니 아예 App()에 있는 Gorouter 자체를 타지를 않는 현상이 생기고 있습니다.혹시 바탕화면 갔다가 다시 홈페이지 화면으로 들어가려고 하는데방법이 있을까 해서 글을 작성드렸습니다. 감사합니다 ㅠㅠ
-
미해결틴더 파이어베이스 클론 | 리액트 네이티브
더이상 학습 진행이 안됨...
FB) 파이어 베이스 로그인 (2) - Google Auth 여기서부터 진행이 안되는데 화면에서 혹시 빼먹은 부분이 있는게 아닌가 생각이 듭니다.
-
해결됨Flutter로 SNS 앱 만들기
접속중인 사용자의 정보 가져오기 강의 관련 질문
안녕하세요.강의 잘 듣고 있습니다.접속중인 사용자의 정보 가져오기 강의 관련 질문 있습니다.아래와 같이 영상과 같이 코딩했는데 빨간 줄이 지워지지 않습니다.Future<UserModel> 로 함수 정의를 했는데 빨간 줄이 지워지지 않습니다.무슨 문제인지 모르겠습니다. 바쁘신데 질문 읽어주셔서 감사합니다.
-
해결됨Flutter로 SNS 앱 만들기
사용자 정보, 게시글 정보를 Model 클래스로 관리 강의 관련 질문
안녕하세요.강의 잘 듣고 있습니다.사용자 정보, 게시글 정보를 Model 클래스로 관리 강의 관련 질문 있습니다.그 전 강의인 firestore에 게시글 정보 저장 강의 까지는 firestore database에 정상적으로 data가 올라갔습니다.하지만, 사용자 정보, 게시글정보를 Model 클래스로 관리 강의에 따라 코드 작성 후firestore database에 data가 올라가지 않습니다.(storage는 잘 작동합니다.)//feed_model.dart // ignore_for_file: public_member_api_docs, sort_constructors_first import 'dart:convert'; import 'package:cloud_firestore/cloud_firestore.dart'; import 'package:collection/collection.dart'; import 'package:sns_clonecode/models/urser_model.dart'; class FeedModel { final String uid; final String feedId; final String desc; final List<String> imageUrls; final List<String> likes; final int commentCount; final int likeCount; final Timestamp creatAt; final UserModel writer; const FeedModel({ required this.uid, required this.feedId, required this.desc, required this.imageUrls, required this.likes, required this.commentCount, required this.likeCount, required this.creatAt, required this.writer, }); Map<String, dynamic> toMap({ required DocumentReference<Map<String, dynamic>> userDocRef, }) { return { 'uid': this.uid, 'feedId': this.feedId, 'desc': this.desc, 'imageUrls': this.imageUrls, 'likes': this.likes, 'commentCount': this.commentCount, 'likeCount': this.likeCount, 'creatAt': this.creatAt, 'writer': userDocRef, }; } factory FeedModel.fromMap(Map<String, dynamic> map) { return FeedModel( uid: map['uid'], feedId: map['feedId'], desc: map['desc'], imageUrls: List<String>.from((map['imageUrls'])), likes: List<String>.from((map['likes'])), commentCount: map['commentCount'], likeCount: map['likeCount'], creatAt: map['creatAt'], writer: map['writer'], ); } } //user_model.dart // ignore_for_file: public_member_api_docs, sort_constructors_first import 'dart:convert'; class UserModel { final String uid; final String name; final String email; final String? profileImage; final int feedCount; final List<String> followers; final List<String> following; final List<String> likes; const UserModel({ required this.uid, required this.name, required this.email, required this.profileImage, required this.feedCount, required this.followers, required this.following, required this.likes, }); factory UserModel.init() { return UserModel( uid: '', name: '', email: '', profileImage: null, feedCount: 0, followers: [], following: [], likes: [], ); } //usermodle 이 가지고 있는 filed 변수로 가지고 있는 데이터들을 가지고 map 형태 데이터를 만들어 준다. Map<String, dynamic> toMap() { return { 'uid': this.uid, 'name': this.name, 'email': this.email, 'profileImage': this.profileImage, 'feedCount': this.feedCount, 'followers': this.followers, 'following': this.following, 'likes': this.likes, }; } //map 형태 데이터를 인자값을 전달 받아 usermolde 객체를 만들어 준다. factory UserModel.fromMap(Map<String, dynamic> map) { return UserModel( uid: map['uid'], name: map['name'], email: map['email'], profileImage: map['profileImage'], feedCount: map['feedCount'], followers: List<String>.from(map['followers']), following: List<String>.from(map['following']), likes: List<String>.from(map['likes']), ); } } //feed_repository.dart import 'dart:io'; import 'package:cloud_firestore/cloud_firestore.dart'; import 'package:firebase_storage/firebase_storage.dart'; import 'package:sns_clonecode/models/feed_model.dart'; import 'package:sns_clonecode/models/urser_model.dart'; import 'package:sns_clonecode/utils/logger.dart'; import 'package:uuid/uuid.dart'; class FeedRepository { final FirebaseStorage firebaseStorage; final FirebaseFirestore firebaseFirestore; const FeedRepository({ required this.firebaseFirestore, required this.firebaseStorage, }); Future<void> uploadFeed({ required List<String> files, required String desc, required String uid, //feeds 컬렉션에 저장 //피드 각각이 문서 //이미지는 storage에 직접 저장하고 firestore에 접근할 수 있는 url 문자열로 받을 것이다. //좋아요 수 //이 게시글에 달린 댓글의 수 //게시글을 작성한 날짜 //feeds에서 user의 정보를 바로 가져올 수 있게 reference 타입의 데이터를 저장한다. }) async { //파이어스토어에 데이터 저장하기위해서 //문서 아이디는 겹치지 않는 고유한 값으로 만들어야 한다. //a-z 알파벳 //0~9 숫자 //이 두가지를 조합해서 32글자의 고유한 값을 만들어 준다. //32글자에 - 4개씩 들어가서 36글자가 된다. //고유한 값을 만드는 방법 여러가지 version1 .... //우리는 version1을 사용 (현재 시간을 기준으로 random값을 만들어 준다.) String feedId = Uuid().v1(); //firestore 문서 참조 DocumentReference<Map<String, dynamic>> feedDocRef = firebaseFirestore.collection('feeds').doc(feedId); DocumentReference<Map<String, dynamic>> userDocRef = firebaseFirestore.collection('users').doc(uid); //storage 참조 Reference ref = firebaseStorage.ref().child('feeds').child(feedId); List<String> imageUrls = await Future.wait(files.map((e) async { //문자열 e는 이미지 파일에 접근할 수 있는 경로 String imageId = Uuid().v1(); TaskSnapshot taskSnapshot = await ref.child(imageId).putFile(File(e)); return await taskSnapshot.ref.getDownloadURL(); }).toList()); DocumentSnapshot<Map<String, dynamic>> userSnapshot = await userDocRef.get(); UserModel userModel = UserModel.fromMap(userSnapshot.data()!); FeedModel feedModel = FeedModel.fromMap({ 'uid': uid, 'feedId': feedId, 'desc': desc, 'imageUrls': imageUrls, 'likes': [], 'likeCount': 0, 'commentCount': 0, 'createAt': Timestamp.now(), 'writer': userModel, }); await feedDocRef.set(feedModel.toMap(userDocRef: userDocRef)); // await feedDocRef.set({ // 'uid': uid, // 'feedId': feedId, // 'desc': desc, // 'imageUrls': imageUrls, // 'likes': [], // 'commentCount': 0, // 'likeCount': 0, // 'creatAt': Timestamp.now(), // 'writer': userDocRef, // }); await userDocRef.update({ 'feedCount': FieldValue.increment(1), }); } } 바쁘실 텐데 질문 읽어주셔서 감사합니다.
-
미해결따라하며 배우는 리액트, 파이어베이스 - 채팅 어플리케이션 만들기[2023.12 리뉴얼]
회원가입 유효성 부분 페이지 안뜨는 이유 좀요....
import React ,{useRef}from 'react' import { Link } from 'react-router-dom' import {useForm} from 'react-hook-form' function RegisterPage() { const {register,watch,errors} = useForm() const password = useRef(); console.log(watch("email")) return ( <div className='auth-wrapper'> <div style={{textAlign:'center'}}> <h3>Register</h3> </div> <form> <label>Email</label> <input name="email" type='email' // ref={register({ required: true, pattern: /^[0-9a-zA-Z]([-_._]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_._]?[0-9a-zA-Z])*\.[a-zA-Z]{2,3}$/i })} /> {/* {errors.email && <p>This field is required</p>} */} <label>Name</label> <input name="name" // ref={register({ required: true, maxLength: 10 })} /> {/* {errors.name && errors.name.type ==="requirerd" && <p>This field is required</p>} {errors.name && errors.name.type ==="maxLength" && <p>This input exceed maximum length</p>} */} <label>Password</label> <input name="password" type='password' // ref={register({required: true, minLength:6})} /> {/* {errors.password &&errors.password && errors.password.type ==="required" && <p>This name field is required</p>} {errors.password &&errors.password && errors.password.type ==="minLength" && <p>비밀번호 자리가 6자리 이상이어야 합니다.</p>} */} <label>Password Confirm</label> <input name="Password Confirm" type='password' // ref={register({ // required:true, // validate:(value)=> // value === password.current // })} /> {/* {errors.password_confirm && errors.password_confirm.type ==="required" && <p>This password confirm field is required</p>} {errors.password_confirm && errors.password_confirm.type ==="validate" && <p>This passwords do not match</p>} */} <input type="submit" /> <Link style={{color:'gray',textDecoration:'none'}}to="/login" >이미 아이디가 있다면</Link> </form> </div> ) } export default RegisterPage 이렇게 저 부분을 주석처리하면 회원가입 페이지가 나오는데 주석처리를 해제하면 회원가입 페이지가 안떠요...
-
미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
RecyclerView 생성 관련 질문 있습니다.
RecyclerView 를 만들어 , 아이템목록을 HomeFragment 화면에 띄우게 하려면, 어떻게 해야할까요? HomeFragment.xml에 recyclerview 를 추가하고 , ContentListActivity의 내용을 HomeFragment에 옮기고 , Adapter 연결또한 HomeFragment 와 연결해주면 가능한가요? 직접 해보니 잘 안돼서 질문드립니다.
-
미해결[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
꺼짐 현상
질문 시 전체 프로젝트 코드를 깃허브/구글 드라이브에 올리신 후 링크를 공유해주시면좀 더 빠르게 도움드릴 수 있습니다.https://drive.google.com/file/d/1lNIdqkBgFYh9sKKKL9f9GDCkewtzB9p5/view?usp=sharing 그 전 강의 부터 안되긴 햇는데요 ( 사진 클릭을 하면 링크로 안넘어가지고 스크립트 활성화를 시키라고 해서webView.settings.javaScriptEnabled = true부분을 추가 했습니다.이렇게 수정햇더니 사진을 누르면 꺼집니다.그리고 다음강의 계속 진행햇는데회원가입부분에서 에뮬레이터가 꺼집니다.어느 부분이 잘못 되었는지 모르겠습니다.
-
미해결Vue 3 & Firebase 10 커뮤니티 만들기 풀스택 - "활용편" (with Pinia, Quasar, Tiptap, VueUse)
Auto Layout 설정 관련 오류 문의드립니다.
해당 강의에서 처음으로 서버를 틀었을 때우선 터미널 창에 App • ⚠ quasar.config.js > invalid Vite plugin specified (cannot find it): unplugin-vue-router/vite 이런 코드가 떴고,페이지에 접속했을 때에는[plugin:vite:import-analysis] Missing "./auto" export in "vue-router" packageC:/Users/soyou/vue3-quasar-app/src/router/index.js이런 오류 코드가 떴습니다.강의 코드 그대로 따라했는데, 어디서 오류가 난 것인지 모르겠어 문의드립니다.
-
해결됨Flutter로 SNS 앱 만들기
인증 메일 전송 / firebase storage에 프로필 이미지 저장 강의 질문
안녕하세요. 강의 잘 듣고 있습니다.인증 메일 전송 / firebase storage에 프로필 이미지 저장 강의에 대해서 질문이 있습니다.firebase storage에 파일이 잘 저장되기는 했으나, 이미지 파일로 저장되지 않았습니다.왜 이렇게 되는지 잘 모르겠습니다.바쁘실텐데 질문 읽어주셔서 감사합니다.
-
해결됨Flutter로 SNS 앱 만들기
상태관리 등록 후, 회원 가입 테스트 부분 에러
안녕하세요.좋은 강의 잘 듣고 있습니다. 다름이 아니라, 상태관리 등록 후, 회원 가입 테스트 부분에서 에러가 나서 질문 드립니다.package:firebase_auth_platform_interface/src/auth_provider.dartimport 되어 있다고 해서 지우려고 찾아 봤는데 위의 저런 package는 import 되어 있지 않습니다. 무슨 문제인지 모르겠습니다. 바쁘실 텐데 질문 읽어주셔서 감사합니다.
-
해결됨Vue 3 & Firebase 10 커뮤니티 만들기 풀스택 - "활용편" (with Pinia, Quasar, Tiptap, VueUse)
self closing rule 추가하기
엘리먼트 자동으로 닫을 수 있는 eslint 룰설정입니다. vscode 자동 저장 기능이랑 같이 설정하면 <q-space></q-space>가 <q-space /> 로 수정됩니다. rules: { 'prefer-promise-reject-errors': 'off', 'vue/multi-word-component-names': 'off', // allow debugger during development only 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off', 'vue/html-self-closing': [ 'warn', { html: { void: 'always', normal: 'never', component: 'always' }, svg: 'always', math: 'always' } ]
-
미해결[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
안드로이드 스튜디오도 VS코드처럼 코드 플러그인 지원해주는게 있나요?
안녕하세요 강사님프런트엔드 작업위주로 해보다가 앱에 관심이 생겨서 초급자부터 들어보고 있는데 VS코드처럼 코드정리를 해주거나 돋보이게 하는 플러그인이 있는지 궁금합니다!만약 있다면 강사님이 사용하시는 플러그인은 어떤것이 있는지 궁금하기도 하네용..ㅎㅎ
-
미해결[초중급편] 안드로이드 데이팅 앱 만들기(Android Kotlin)
Render problem 오류를 도저히 해결을 못하겠어요 ㅠㅠ
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <androidx.constraintlayout.widget.ConstraintLayout android:layout_width="match_parent" android:layout_height="60dp" app:layout_constraintTop_toTopOf="parent"> <ImageView android:id="@+id/settingIcon" android:layout_width="70dp" android:layout_height="70dp" android:layout_margin="3dp" android:layout_marginTop="16dp" android:layout_marginEnd="16dp" android:contentDescription="프로필사진" android:src="@drawable/profile_img" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent" /> </androidx.constraintlayout.widget.ConstraintLayout> <com.yuyakaido.android.cardstackview.CardStackView android:id="@+id/cardStackView" android:contentDescription="cardstackview" android:layout_marginTop="60dp" android:layout_width="match_parent" android:layout_height="match_parent"/> </androidx.constraintlayout.widget.ConstraintLayout>코드와 에러부분 캡쳐해서 올립니다 ㅠㅠ
-
해결됨[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
섹션5 리사이클러 뷰(recycler view) 만들어보기
섹션5 리사이클러 뷰(recycler view) 만들어보기 수강 중 강사님의 결과와 달라서 질문드립니다.해당 강의 11:58까지 따라하면 강사님의 결과는이렇게 a, b, c가 출력되던데저는 이렇게 a만 출력됩니다.(10:14에서도 강사님의 화면에는 rv가 3개 나오던데 저는 마찬가지로 1개만 나와요.)제가 뭘 잘못했는지 궁금합니다 ㅠㅠ 소스코드(Main.activity)package com.example.rv_ex import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val items = mutableListOf<String>() items.add("a") items.add("b") items.add("c") val rv = findViewById<RecyclerView>(R.id.rv) val rvAdapter = RVAdapter(items) rv.adapter = rvAdapter rv.layoutManager = LinearLayoutManager(this) } }소스코드(RVAdapter)package com.example.rv_ex import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.TextView import androidx.recyclerview.widget.RecyclerView class RVAdapter(val items: MutableList<String>) : RecyclerView.Adapter<RVAdapter.ViewHolder>(){ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RVAdapter.ViewHolder { val view = LayoutInflater.from(parent.context).inflate(R.layout.rv_item, parent, false) return ViewHolder(view) } override fun onBindViewHolder(holder: RVAdapter.ViewHolder, position: Int) { holder.bindItems(items[position]) } //전체 리사이클러뷰의 개수 override fun getItemCount(): Int { return items.size } inner class ViewHolder(itemView: View): RecyclerView.ViewHolder(itemView) { fun bindItems(item: String) { val rv_text = itemView.findViewById<TextView>(R.id.rvItem) rv_text.text = item } } } 소스코드(activity_main.xml)<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <androidx.recyclerview.widget.RecyclerView android:id="@+id/rv" android:layout_height="match_parent" android:layout_width="match_parent"/> </androidx.constraintlayout.widget.ConstraintLayout> 소스코드(rv_item.xml)<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/rvItem" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="20dp" android:text="rv" android:textSize="20sp" /> </LinearLayout>
-
미해결[초중급편] 안드로이드 데이팅 앱 만들기(Android Kotlin)
이미지 저장하기
이미지 저장하기 4~5분대에 코드도 오류 없고 실행도 잘 되는데 firebase storage에 이미지가 업로드 되지 않습니다
-
미해결[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
ActivityMainBinding 에러
package com.bokchi.databinding_ex import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.widget.Button import android.widget.Toast import com.bokchi.databinding_ex.databinding.ActivityMainBinding class MainActivity : AppCompatActivity() { private lateinit var binding : ActivityMainBinding override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val btn = findViewById<Button>(R.id.testBtnID) btn.setOnClickListener{ Toast.makeText(this, "click", Toast.LENGTH_LONG).show() } } }이렇게 적었는데 에러가 나요..왼도우 L 눌렀는데도 안떠서 적었는데도 빨간색으로 에러만 뜸니다.....
-
미해결Vue 3 & Firebase 10 커뮤니티 만들기 풀스택 - "활용편" (with Pinia, Quasar, Tiptap, VueUse)
email인증 관련 문의드립니다
안녕하세요 email인증 진행 중 오류가 발생하여 문의드립니다.코드는 확인하였고, 구글 콘솔에서 템플릿도 확인하였습니다.(템플릿에서 따로 수정한것은 없음)이메일도 정상적으로 발송되었으나, 해당 링크로 들어가면 이런 에러페이지가 발생하여 이메일 인증이 되지 않고있습니다..무엇이 문제인지 검색해보았지만 답을 찾지 못해 문의남깁니다.// sendEmail for verification export async function sendVerificationEmail() { await sendEmailVerification(auth.currentUser); console.log(auth.currentUser.emailVerified) }
-
미해결[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
프로젝트를 만들고 실행하면 에러가 떠요...
지금 프로젝트를 만들고 실행을 하면 An issue was found when checking AAR metadata: 1. Dependency 'androidx.activity:activity:1.8.0' requires libraries and applications that depend on it to compile against version 34 or later of the Android APIs. :app is currently compiled against android-33. Recommended action: Update this project to use a newer compileSdk of at least 34, for example 34. Note that updating a library or application's compileSdk (which allows newer APIs to be used) can be done separately from updating targetSdk (which opts the app in to new runtime behavior) and minSdk (which determines which devices the app can be installed on).이런 에러가 뜸니다...항상 계속 만드는데도 계속 에러가 떠서 강의를 따라갈수 없어요...어떻게 해야 될까요?