inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

NavigatorObserver

미해결

[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!

[에러코드] Error (Xcode): ../../../.pub-cache/hosted/pub.dev/go_router-4.5.1/lib/src/router.dart:38:44: Error: The class 'NavigatorObserver' can't be used as a mixin because it isn't a mixin class nor a mixin. Could not build the application for the simulator. Error launching application on iPhone 15 Pro. [강의] 섹션 15 GoRouter 프로젝트에 적용하기 Authentication 마무리하기 수강 완료 후 위와 같은 에러가 발생하는데... 어떻게 하면 해결 가능할지... 문의드립니다.

  • flutter
  • 하이브리드-앱
Bullets 댓글 1 좋아요 0 조회수 407

파이어베이스 설정중 안드로이드스튜디오 프로젝트 에러

미해결

[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!

정말 죄송하지만 파이어베이스 관련에러인데요 코팩 책을 보면서 파이어베이스 설정을 하다가 Flutterfire configure 부터 오피셜 파어베이스가 필요하다는 에러만 뜨더라고요 구글링 해보니 적용하려는 안스 프로젝트의 폴더에 파베 파일을 넣어보라길래(기존 작업중이던 프로젝트) 그대로 했더니 파베도 설정 안되고 멀쩡하던 안스 프로젝트까지 아래와 같이 에러가 났습니다. * What went wrong: A problem occurred configuring project ':cloud_firestore'. > defaultConfig contains custom BuildConfig fields, but the feature is disabled. To enable the feature, add the following to your module-level build.gradle: `android.buildFeatures.buildConfig true` 일단 해당 파베를 지웠다가 아예 다른 d드라이브에 다시 깔아봤지만 동일하고.. 그래들 프로퍼티 파일에 아래를 추가도 했고요 android.buildFeatures.buildConfig=true 어떻게도 위 에러가 없어지질 않네요ㅜ 위 에러메시지는 어떤 부분을 봐야하는지 방향성만이라도 알려주시면 감사하겠습니다.

  • flutter
  • 클론코딩
박정인 댓글 1 좋아요 0 조회수 389

강의 내용으로 블로그를 작성해도 될까요?

미해결

[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!

강의를 보고 배운내용을 오래 기억하기 위해 인용하여 블로그를 작성해도 될까요? 핵심이라고 생각되는 소스코드를 복사하거나 가끔 이론설명 하실때 사용하시는 ppt 페이지(그림) 일부분 이런걸 복사한 뒤, 저의 생각과 함께 글을 작성해보려고 하는데 가능할까요? medium 블로그를 통해 출처와 같이 작성할 것 같습니다.

  • flutter
  • 클론코딩
댓글 1 좋아요 0 조회수 426

onScroll 스크롤 위치 유지가 안됩니다 ㅠ

미해결

Slack 클론 코딩[실시간 채팅 with React]

import Chat from '@components/Chat'; import { ChatZone, Section, StickyHeader } from '@components/ChatList/style'; import { IChat, IDM } from '@typings/db'; import React, { FC, RefObject, VFC, forwardRef, useCallback, useRef } from 'react'; import { Scrollbars } from 'react-custom-scrollbars'; interface Props { scrollRef: RefObject<Scrollbars>; chatSections: { [key: string]: IDM[] }; setSize: (f: (index: number) => number) => Promise<IDM[][] | undefined>; isEmpty: boolean; isReachingEnd: boolean; } const ChatList: VFC<Props> = (({ chatSections, setSize, isEmpty, scrollRef, isReachingEnd}) => { const onScroll = useCallback((values) => { // 끝에 도달하면 불러오지 않기 if(values.scrollTop === 0 && !isReachingEnd){ console.log('가장 위'); setSize((prevSize) => prevSize + 1).then(()=>{ // 스크롤 위치 유지 if(scrollRef?.current){ scrollRef.current?.scrollTop(scrollRef.current?.getScrollHeight() - values.scrollHeight); } }); } }, []); return ( <ChatZone> <Scrollbars autoHide ref={scrollRef} onScrollFrame={onScroll}> {Object.entries(chatSections).map(([date, chats]) => { return ( <Section className={`section-${date}`} key={date}> <StickyHeader> <button>{date}</button> </StickyHeader> {chats.map((chat) => ( <Chat key={chat.id} data={chat} /> ))} </Section> ); })} </Scrollbars> </ChatZone> ); }); export default ChatList; 이쪽 코드는 문제가 없는것같은데 희한하게 위치가 유지가 되지않고 원래처럼 쭉 올라가버립니다.. ref쪽이 문제인가요..? 혹시몰라 DirectMessage 컴포넌트도 아래에 첨부하겠습니다. import React, { useCallback, useEffect, useRef } from 'react'; import gravator from 'gravatar'; import useSWR, { mutate } from 'swr'; // swr 인피니티스크롤링 전용 메서드 import useSWRInfinite from 'swr/infinite'; import { IDM, IUser } from '@typings/db'; import fetcher from '@utils/fetcher'; import { useParams } from 'react-router'; import ChatBox from '@components/ChatBox'; import { Container, Header } from '@pages/DirectMessage/style'; import ChatList from '@components/ChatList'; import useInput from '@hooks/useInput'; import axios from 'axios'; import makeSection from '@utils/makeSection'; import Scrollbars from 'react-custom-scrollbars'; const DirectMessage = () => { const { workspace, id } = useParams<{ workspace: string; id: string }>(); const { data: userData } = useSWR(`http://localhost:3095/api/workspaces/${workspace}/users/${id}`, fetcher); // 내정보 const { data: myData } = useSWR(`http://localhost:3095/api/users`, fetcher); const [chat, onChangeChat, setChat] = useInput(''); // 과거 채팅리스트에서 채팅을 치면 최신목록으로 바로 스크롤을 내려줄려면 ref를 // 이 컴포넌트에서 props로 내려줘야하기 때문에 forwardRef를 사용해서 props로 넘겨준다 // 💡 HTML 엘리먼트가 아닌 React 컴포넌트에서 ref prop을 사용하려면 React에서 제공하는 forwardRef()라는 함수를 사용해야 합니다 const scrollbarRef = useRef<Scrollbars>(null); // 채팅 받아오는곳 (setSize : 페이지수를 바꿔줌) // useSWRInfinite를 쓰면 [{id:1},{id:2},{id:3},{id:4}] 1차원배열이 [[{id:1},{id:2}],[{id:3},{id:4}]] 2차원배열이 된다. const { data: chatData, mutate: mutateChat, setSize, } = useSWRInfinite<IDM[]>( (index) => `http://localhost:3095/api/workspaces/${workspace}/dms/${id}/chats?perPage=20&page=${index + 1}`, fetcher, ); // 데이터 40 개중에 20개씩 사져오면 첫번째페이지부터 20 + 20 + 0 세번째 페이지 0 이되면 isEmpty, isReachingEnd는 true가 됨 // 반대의 상황에서 데이터가 45개면 20 + 20 + 5 isEmpty는 0이 아니라서 false isReachingEnd는 여전히 데이터 가져옴 const isEmpty = chatData?.[0]?.length === 0; const isReachingEnd = isEmpty || (chatData && chatData[chatData.length - 1]?.length < 20) || false; const onSubmitForm = useCallback( (e) => { e.preventDefault(); if (chat?.trim() && chatData) { const savedChat = chat; // 💡 옵티미스틱 UI // 서버쪽에 다녀오지 않아도 성공해서 데이터가 있는거처럼 보이게 미리 만듦 mutateChat((prevChatData) => { // infinite 스크롤링은 2차원 배열이다. prevChatData?.[0].unshift({ // unshift : 앞쪽에 추가 id: (chatData[0][0]?.id || 0) + 1, content: savedChat, SenderId: myData.id, Sender: myData, ReceiverId: userData.id, Receiver: userData, createdAt : new Date(), }); return prevChatData; },false) // 옵티미스틱 UI 할땐 이부분이 항상 false .then(()=>{ setChat(''); // 버튼클릭 시 기존 채팅지우기 scrollbarRef.current?.scrollToBottom(); // 채팅 첬을때 맨 아래로 }) axios .post( `http://localhost:3095/api/workspaces/${workspace}/dms/${id}/chats`, { content: chat, }, { withCredentials: true, }, ) .then(() => { mutateChat(); // SWR에서 데이터를 다시 불러와서 캐시를 갱신하는 역할을 합니다. }) .catch(() => { console.error; }); } }, [chat, chatData, myData, userData, workspace, id], ); // (채팅이 최신것을 아래에 두기 위함) = 기존것 데이터를두고 새 데이터를 뒤집어서 출력 / flat() 배열을 1차원 배열로 만들어줌 const chatSections = makeSection(chatData ? [...chatData].flat().reverse() : []); // 로딩 시 스크롤바 제일 아래로 useEffect(()=>{ if(chatData?.length === 1){ // 채팅 데이터가 있어서 불러온 경우 scrollbarRef.current?.scrollToBottom(); // 가장 아래쪽으로 내려줌 } },[chatData]) // 로딩 if (!userData || !myData) { return null; } return ( <Container> <Header> <img src={gravator.url(userData.email, { s: '24px', d: 'retro' })} alt={userData.nickname}></img> <span>{userData.nickname}</span> </Header> {/* 컴포넌트 위치를 미리 지정해도 좋다. */} {/* 전역 상태관리 라이브러리를 사용해도 컴포넌트상황에따라 props 로 넘겨줌*/} <ChatList scrollRef={scrollbarRef} chatSections={chatSections} setSize={setSize} isEmpty={isEmpty} isReachingEnd={isReachingEnd} /> <ChatBox chat={chat} onChangeChat={onChangeChat} onSubmitForm={onSubmitForm} /> </Container> ); }; export default DirectMessage;

  • react
  • 웹팩
  • typescript
  • socket.io
  • babel
  • 클론코딩
복실묘 댓글 2 좋아요 0 조회수 529

flutter doctor cocoapods 설치 오류

미해결

[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!

intel mac 유저입니다. 강의에서 말씀하신대로 homebrew 통해서 cocoapods 설치 한 후 flutter doctor 실행 하는데 계속 저런 화면이 뜨네요... 해결해 보려고 sudo gem install cocoapods 실행하면 이런 화면이 뜨구요... 해결 방법 알려 주시면 감사하겠습니다....ㅠㅠㅠ

  • flutter
  • 클론코딩
  • cocoapods
JONGMIN CHA (Howoo's papa) 댓글 1 좋아요 0 조회수 614

자동 재생에 대해 궁금한 점이 있습니다.

해결됨

[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!

좋은 강의 감사합니다. 강의 내용을 듣다보니, 동영상을 실행하면 자동 재생 기능이 따로 없는걸로 보여서 공식 문서를 참조 한 뒤 아래와 같은 기능 한 줄을 추가 했습니다. initializeController() async { currentPosition = Duration(); videoPlayerController = VideoPlayerController.file( File(widget.video.path), ); await videoPlayerController!.initialize(); await videoPlayerController!.play(); // 자동 재생 시작 videoPlayerController!.addListener(() async { final currentPosition = videoPlayerController!.value.position; setState(() { this.currentPosition = currentPosition; }); }); setState(() {}); } 이런식으로 await videoPlayerController!.initialize(); 밑에 추가를 했는데, 테스트는 해보니 이상이 없어서 혹시 코드 내부 로직상으로도 문제가 없는지 궁금합니다.

  • flutter
  • 클론코딩
MinwooNa 댓글 1 좋아요 0 조회수 1251

리스너 dispose 질문입니다

미해결

[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!

5분 15초 쯤에 ScrollController 의 리스너 dispose하고 ScrollController 도 dispose 하시는데 질문이 3가지 있습니다. 둘 중 하나라도 dispose를 안 하면 어떻게 되는 건가요? RestaurantScreen, DetailScreen 에서는 dispose를 안 했는데 여기에서 한 이유가 있을까요? 모든 리스너들은 다 dispose를 해줘야 하는지입니다.

  • flutter
  • 하이브리드-앱
김상호 댓글 1 좋아요 0 조회수 383

아래 댓글에 답변 드립니다.

해결됨

[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!

계속 질문드려 죄송합니다. 그리고 매번 답변 주셔서 진심으로 감사드립니다. 제가 위탁하여 가지고있는 2년 전 flutter와 firebase로 제작한 앱이 있습니다. 그런데 지금 제가 공부중이라 안드로이드 스튜디오로 열려고 하니 다양한 이유로 에뮬레이터에 구현이 안되더라고요, 일부 코드들은 지금은 안쓰는 것 같고, 코드 수정은 어찌어찌 제가 할 수 있을 것 같은데, 새플러터 프로젝트로 코드 복사하고, 야믈파일, 안드로이드, ios 일부 수정해야하는 파일을 복사해와도 실행이 안되는건 마찬가지였습니다. 이런때는 어떻게 해야할까요?; 해당 개발자에게 문의를 해봐도 안드로이드 환경설정은 어떻게 해줄 수가 없다고 하더라고요, 원본 파일에서 최대한 아무것도 바꾸지 않는게 좋다고 하는데, 열 수가 없습니다.

  • flutter
  • 하이브리드-앱
김지현 댓글 1 좋아요 0 조회수 255

지도위에 이동 경로 스리기

미해결

Flutter 초입문 왕초보편

지도위에 이동경로 그리는 부분에서 새로운 경로가 그려지고 조금 있으면 경로가 지워 집니다. 이렇게 동작하는 것이 정상인가요? 설명 중에는 그런 내용에 없어 문의 드립니다.

  • flutter
  • ios
  • android
  • dart
빛나는 댓글 1 좋아요 0 조회수 655

섹션10. 상태를 트리의 위로! 강의 관련질문

미해결

[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!

Onheartpressed()함수를 만들었는데 onpressed: 파라미터 뒤에 onheartpressed()라고 ()를 붙여야하는거 아닌가요? 함수니까 말이에요. 근데 왜 onheartpressed라고 () 없이 쓸 수가 있는거죠?

  • flutter
  • 클론코딩
강원빈 댓글 2 좋아요 0 조회수 365

Android Studio Devices 실행 시간

미해결

[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!

컴퓨터 사양마다 로딩이나 리붓되는 시간이 다르겠지만, 최신 버젼으로 Device를 실행하면 엄청 오랜 시간이 걸린 후에야 작성한 코드가 실행되는데, 이건 어쩔 수 없이 당연한 컴퓨터 사양 문제겠죠?....ㅠㅠ

  • flutter
  • 클론코딩
hiravip 댓글 1 좋아요 0 조회수 281

(랜덤숫자) backgroundColor: PRIMARY_COLOR 오류

미해결

[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!

color.dart에 import 'package:flutter/material.dart'; const Color PRIMARY_COLOR = Color(0xFF2D2D33); const Color RED_COLOR = Color(0xFFEA4955); const Color BLUE_COLOR = Color(0xFF549FBF); 한 뒤에 return Scaffold( backgroundColor: PRIMARY_COLOR, body: SafeArea( 라고 backgroundColor: PRIMARY_COLOR, 넣자마자 오류가 납니다.. 자동완성도 당연히 안되고요. 아무리 봐도 똑같이 했는데 이유를 모르겠어서요ㅜ Performing hot restart... Syncing files to device SM G991N... lib/screen/home_screen.dart:14:24: Error: The getter 'PRIMARY_COLOR' isn't defined for the class '_HomeScreenState'. - '_HomeScreenState' is from 'package:random_number/screen/home_screen.dart' ('lib/screen/home_screen.dart'). Try correcting the name to the name of an existing getter, or defining a getter or field named 'PRIMARY_COLOR'. backgroundColor: PRIMARY_COLOR, ^^^^^^^^^^^^^ Restarted application in 561ms.

  • flutter
  • 클론코딩
박정인 댓글 2 좋아요 0 조회수 453

webview 버젼 관련

미해결

[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!

webview 강의와 관련하여 , 버젼 ^3.0.2로 진행한 후 4.x.x으로 따라가도 무관하다는 글을 보았습니다. 하지만 그대로 3버젼으로 진행하려고 하니 더 이상 지원하지 않는 api라며 안내가 뜨고 있습니다. 그러곤 4버젼에서 다시금 하려 해도 3버젼과 명령이가 달라져 앞 강의 내용을 들어도 이해가 잘 안가는 부분들이 있습니다. 4버젼만 따로 강의 제작은 진행되지 않는걸까요?

  • flutter
  • 클론코딩
hiravip 댓글 1 좋아요 0 조회수 206

jpql 엔티티 인지 오류

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 일단은 해결 했습니다. findAllString 이용하는데 Order를 얘가 모르는 거 같아서.. String jpql = "select o From jpabook.jpashop.domain.Order o join o.member m"; 이렇게 패키지경로까지 다 명시해줬더니 인지를 하더라구요.. 안 그러면 org.hibernate.query.sqm.UnknownEntityException: Could not resolve root entity 'Order' at org.hibernate.query.hql.internal.SemanticQueryBuilder.visitRootEntity(SemanticQueryBuilder.java:1960) ~[hibernate-core-6.2.13.Final.jar:6.2.13.Final] at org.hibernate.query.hql.internal.SemanticQueryBuilder.visitRootEntity(SemanticQueryBuilder.java:253) ~[hibernate-core-6.2.13.Final.jar:6.2.13.Final] ............... 얘가 이렇게 Order 인지 못한다고 오류가 뜹니다.. 원래 엔티티는 그냥 @Entity 등록 하면 알아서 인지 되는걸로 알고 있었는데.. 왜 이런 걸까요? package jpabook.jpashop.domain; import jakarta.persistence.*; import lombok.AccessLevel; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; @Entity(name = "orders") @Getter @NoArgsConstructor(access = AccessLevel.PUBLIC) public class Order { @Id @GeneratedValue @Column(name = "order_id") private Long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "member_id") private Member member; @OneToMany(mappedBy = "order", cascade = CascadeType.ALL) private List<OrderItem> orderItems = new ArrayList<>(); @OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL) @JoinColumn(name = "delivery_id") private Delivery delivery; private LocalDateTime orderDate; @Enumerated(EnumType.STRING) private OrderStatus status; public void changeMember(Member member){ this.member = member; member.getOrders().add(this); } public void addOrderItem(OrderItem orderItem){ orderItems.add(orderItem); orderItem.setOrder(this); } private void setOrderDate(LocalDateTime orderDate) { this.orderDate = orderDate; } public void changeDelivery(Delivery delivery){ this.delivery = delivery; delivery.setOrder(this); } private void setStatus(OrderStatus status) { this.status = status; } public static Order createOrder(Member member, Delivery delivery, OrderItem... orderItems){ Order order = new Order(); order.changeMember(member); order.changeDelivery(delivery); for (OrderItem orderItem : orderItems) { order.addOrderItem(orderItem); } order.setStatus(OrderStatus.ORDER); order.setOrderDate(LocalDateTime.now()); return order; } public void cancel(){ if(delivery.getStatus() == DeliveryStatus.COMP){ throw new IllegalStateException("이미 배송완료된 상품은 취소가 불가능합니다."); } this.setStatus(OrderStatus.CANCEL); for (OrderItem orderItem : orderItems) { // orderItem.getItem().removeStock(orderItem.getCount()); orderItem.cancel(); } } public int getTotalPrice(){ int totalPrice = 0; for( OrderItem orderItem : orderItems){ totalPrice += orderItem.getTotalPrice(); } return totalPrice; } }

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
궁금이 댓글 1 좋아요 0 조회수 2889

5장 파이어베이스 연결이 잘 안됩니다.

해결됨

Flutter 앱 개발 기초

마지막으로 파이어베이스 마지막장 공부 하고 있는데요. 이번에 바뀐건지 또 연결이 안되고 있어요 . . 참고할 만한 사이트나 . 연결방법좀 귀뜸해주세요 . classpath "com.google.gms.google-services" version "4.4.0" 지워도 안되요 , 그리고 IOS 는 POD 자체가 안보입니다. // notion 감사합니다 . 저도 저장해야할 것 같습니다. 머리가 안따라주네요 . 이제 절반정도는 만들 수 있어요. * What went wrong: [ ] A problem occurred evaluating root project 'android'. [ ] > Supplied String module notation 'com.google.gms.google-services' is invalid. Example notations: 'org.gradle:gradle-core:2.2', 'org.mockito:mockito-core:1.9.5:javadoc'. [ ] * Try: [ ] > Run with --debug option to get more log output. [ ] > Run with --scan to get full insights.

  • flutter
what? just run 댓글 1 좋아요 1 조회수 452

플러터 크롤링 질문 있습니다.

미해결

import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:http/http.dart' as http; import 'package:map/main.dart'; import 'package:html/dom.dart' as dom; import 'package:html/parser.dart' as parser; void main() async{ var uri = Uri.parse("https://maps.google.com/?cid=9824313016117606097"); http.Response response = await http.get(uri); dom.Document document = parser.parse(response.body); print(document.outerHtml); } 이런 식으로 파싱을 하는데 나오는 결과물이 null,null,[[\"VENUS_UGCS_REFERENCE\",\"CIHM0ogKEICAgID4zYaWIg||\",\"1\"],[\"UGCS_REFERENCE\",\"CIHM0ogKEICAgICo0KaMYQ||\",\"1\"]]],null,null,null,null,null,null,null,[\"0\",\"-8622431057591945519\"]],[\"AF1QipM0NUuMNxT19uXB5qiTmGjxV2G0GhA2ttjxU20Y\",null,null,null,null,null,[\" https://lh5.googleusercontent.com/p/AF1QipM0NUuMNxT19uXB5qiTmGjxV2G0GhA2ttjxU20Y\\u003dw150-h150-k-no-p\"],null,[[null,127.12812502658495,37.6524851777755],null,null,75],\"Qz5OZav0GvfK1e8P2t-VoAQ\",\"0ahUKEwjrocKs0rmCAxV3ZfUHHdpvBUQQzCcIxgEoBg\",[\"//www.google.com/local/imagery/report/?cb_client\\u003dmaps_sv 이런식으로 나오는데 어디 부분이 잘못된건지 모르겠어요

  • flutter
  • dart
정충효 댓글 1 좋아요 0 조회수 740

인증 메일 전송 / firebase storage에 프로필 이미지 저장 강의 질문

해결됨

Flutter로 SNS 앱 만들기

안녕하세요. 강의 잘 듣고 있습니다. 인증 메일 전송 / firebase storage에 프로필 이미지 저장 강의에 대해서 질문이 있습니다. firebase storage에 파일이 잘 저장되기는 했으나, 이미지 파일로 저장되지 않았습니다. 왜 이렇게 되는지 잘 모르겠습니다. 바쁘실텐데 질문 읽어주셔서 감사합니다.

  • flutter
  • android
  • firebase
  • dart
강민석 댓글 4 좋아요 0 조회수 689

상태관리 등록 후, 회원 가입 테스트 부분 에러

해결됨

Flutter로 SNS 앱 만들기

안녕하세요. 좋은 강의 잘 듣고 있습니다. 다름이 아니라, 상태관리 등록 후, 회원 가입 테스트 부분에서 에러가 나서 질문 드립니다. package:firebase_auth_platform_interface/src/auth_provider.dart import 되어 있다고 해서 지우려고 찾아 봤는데 위의 저런 package는 import 되어 있지 않습니다. 무슨 문제인지 모르겠습니다. 바쁘실 텐데 질문 읽어주셔서 감사합니다.

  • flutter
  • android
  • firebase
  • dart
강민석 댓글 2 좋아요 1 조회수 384

랜덤 숫자 생성기 섹션 내 '조건에 맞게 Padding 적용하기' 내용 중 궁금한게 있습니다.

해결됨

[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!

안녕하세요. 좋은 강의 감사합니다! 강의 내용 중 구현방향에 대해 궁금한 점이 있어 질문 드립니다. 랜덤 넘버를 초기화 하는 배열에서(randomNumbers) 조건에 따라 padding을 지정하는 과정의 코드가 다음과 같이 구현이 되어 있는데요. padding: EdgeInsets.only(bottom: x.key == 2 ? 0 : 16.0), 만약 x.key를 직접 참조 하는게 아닌 randomNumbers의 length를 가져와서 조건을 거는 것도 유지보수 상 좋은 코드인가요? padding: EdgeInsets.only(bottom: x.key == randomNumbers.length - 1 ? 0 : 16.0),

  • flutter
  • 클론코딩
  • 랜덤숫자생성기
MinwooNa 댓글 1 좋아요 0 조회수 315

인기 태그

인프런 TOP Writers

주간 인기글