asset추가하기
미해결
[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
asset 추가하기 강의에서 asset파일을 복사하고 paste 누르는데 강의에 나오는 팝업창은 안뜨고 아무 일도 안일어나요ㅜㅜ 왜 이런거죠?
- flutter
- 클론코딩
- Flutter
- 클론코딩
173만명의 커뮤니티!! 함께 토론해봐요.
미해결
[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
asset 추가하기 강의에서 asset파일을 복사하고 paste 누르는데 강의에 나오는 팝업창은 안뜨고 아무 일도 안일어나요ㅜㅜ 왜 이런거죠?
해결됨
Slack 클론 코딩[실시간 채팅 with React]
안녕하세요. 질문 있습니다. 강의에서는 SWR을 쓰시는데 공부할때는 react-query를 쓰려고 합니다. 이유는 생태계가 더 큰 라이브러리를 사용할 목적이었는데 알려주신 npm trends에 검색해보니 둘 다 비슷비슷하더라고요. SWR도 아직 많이 쓰이는 추세인가요??? 궁금한 이유는 react-query 외에도 추가로 하나의 라이브러리를 동시에 더 써볼 생각이라 추천해주시면 감사합니다. 추가로 수업 외 질문으로 유틸리티 라이브러리?를 하나 써보려고 합니다. 기존에는 fxjs를 사용 중이었습니다. npm trends를 보니 가장 많이 사용하는 라이브러리는 lodash, rxjs인 것 같고 lamda도 많이 쓰는거 같고 타입스크립트로 된 fp-ts도 있는거 같은데 fp-ts를 제외한 것들 중 추천해주시는게 있을까요? 감사합니다!!
미해결
[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
final storage = FlutterSecureStorage(); 으로 선언되어있는것은 어느곳에서 불러오더라도 같은 instance 인데, provider 로 선언해서 호출하는 이유가 있을까요?
미해결
[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
flutter doctor 실행 했을 때 안드로이드스튜디오 - java 관련 경고가 나타납니다. 에러가 아닌 경고라서 진행에 문제가 없을 것으로 생각이 됩니다만 해결하고 싶어서 구글에 검색을 해봐도 해결 방법을 모르겠습니다.
미해결
[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
수업 잘 듣고 있습니다. 내용 중 build 안에서 textStyle 을 선언해 사용하는데, build 안과 밖의 차이 를 알고 싶고 build 안에서는 계속 필요할 경우 rendering 되는데 위와 같은 경우는 밖으로 내는 것은 어떤가요? 물론 StatelessWidget이지만.. 궁금해 문의합니다.
미해결
[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
안녕하세요. ref.watch 는 provider 의 현재 값을 subscribing 하고 그 값에 update가 있으면 그것도 subscribe를 하게되어 ui를 새로 rebuild함으로써 바뀐 화면을 보여준다고 이해를 했습니다. 반면 ref.read는 provider의 현재 값을 받아오지만 subscribe는 하지 않는데, 여기서는 shoppingListProvider의 notifier에 access해서 toggleHasBought를 작동시키는 역할을 한다고 이해했습니다. toggleHasBought이 작동함으로써 !hasBought가 된 것을 ref.watch가 스크린에 리빌드 하는 원리라고 생각하면 될까요? 하나 더 궁금한 점은 ref.read (shoppingListProvider.notifier)..... 그리고 이전 챕터 stateProvider 부분에서 모든 ref.read를 ref.watch로 바꾸어도 기존과 똑같이 작동은 하는데 이것은 어떤 원리에 의해서 이렇게 되는 것인지. 겉으로 보이는 것은 같지만 맥락이 어떻게 다른것인지 궁금합니다.
미해결
[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
안녕하세요~ 궁금한게 있어 문의 드립니다. 강의랑은 살짝 관련없지만 관련있는 문의 입니다. 혹시 플러터 앱을 제작 후 (쇼핑몰) 웹에서 별도 어드민 페이지를 만들어서 플러터 앱과 json으로 연동하는 방법이 있을까요? 그리고 admin페이지 역시 플로터로 개발하는게 좋을지 아니면 장고나 스프링이나 다른 언어에 프레임워크로 연결이 될런지 궁금해서 문의드립니다!
미해결
[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
0:08:30 쯤에 설명하신 this 키워드에 관해 질문있습니다. 영상에서 설명하신 내용은 이해가 됐습니다. 제가 영상과는 다르게 객체 내의 name과 members 생성자를 다른 임의의 문자열과 리스트로 정의하고 Idol생성자를 Idol( this.name , this.members); 로 바꾸고 출력해 봤습니다. 이때, Idol 생성자의 변수가 클래스 내의 생성자 갑과는 무관하게 파라미터의 값을 받는것 같습니다. 왜 파라미터안에 this를 선언했음에도 왜 클래스 내의 생성자 값을 받지 않는지 궁금합니다.
미해결
[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
안녕하세요. 코드팩토리님. flutter 설치 후 에뮬레이터 실행 시 오류가 발생하네요. 강의 그대로 따라한것 같은데 뭐가 잘못된걸 까요. 구글링으로 해결하려했는데 너무 많은 시간을 소비해서 답답한 마음에 글 남겨봅니다. SDK 설치도 강의 내용대로 했던 것 같습니다... 다만 flutter doctor -android -licenses 진행할때 jdk 버전이 안맞아서 java쪽 환경설정 재 설정 해줬구요. 11버전으로 맞춰줬습니다. 혹시 이 문제 때문일까요? 디스크용량이 없으면 에뮬레이터 오류가 난다는데 여유 공간 30GB 있습니다. 아니면 환경변수를 추가로 해줘야하나요? 구글에 찾아보니 ANDROID_AVD_HOME, ANDROID_SDK_HOME 등등 사용자변수쪽에 새로운 폴더 만들고 연결해주라는데... 이것들 다 해봐도 안됩니다... 꼭 좀 도와주세요. 시스템 환경 변수 설정(앞에 경로는 사용자때문에 잘랐습니다) SDK 설치 에뮬레이터 실행 시 오류
미해결
[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
색상정보DB에 넣기 강의에서 hexCode 넣는 부분에서 밑의 오류가 뜨는데 이게 왜 생기는지 모르겠습니다. Unhandled Exception: SqliteException(1299): NOT NULL constraint failed: category_colors.id, constraint failed (code 1299) Causing statement: INSERT INTO "category_colors" ("hex_code") VALUES (?)
미해결
Flutter 초입문 왕초보편
안녕하세요 에러 여쭙고자 문의드립니다. Stackoverflow 등을 뒤져도 도저히 답을 구할 수가 없어 문의남깁니다. 현재 flutter 설치받았는데 실행이 안됩니다. 강사님처럼 직접 SDK 다운하여 환경설정도 해보고, homebrew 통해 다운로드 받아보았으나 둘 다 작동하지 않았습니다. 컴퓨터는 맥북 m1 모델입니다. [에러코드] Semantic Issue (Xcode): Function does not return NSString /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator16.2.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSString.h:371:51 Semantic Issue (Xcode): Function does not return NSString /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator16.2.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSString.h:386:52 Semantic Issue (Xcode): Function does not return string type /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator16.2.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSString.h:388:82 Semantic Issue (Xcode): Function does not return string type /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator16.2.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSString.h:394:113 Semantic Issue (Xcode): Function does not return string type /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator16.2.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSString.h:395:96 Semantic Issue (Xcode): Function does not return NSString /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator16.2.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSBundle.h:90:142 Parse Issue (Xcode): Expected ')' /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator16.2.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSURLSession.h:504:185 Parse Issue (Xcode): Could not build module 'Foundation' /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator16.2.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIKit.h:7:8 Parse Issue (Xcode): Could not build module 'Foundation' /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator16.2.sdk/System/Library/Frameworks/CoreImage.framework/Headers/CoreImageDefines.h:18:8 Parse Issue (Xcode): Could not build module 'Foundation' /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator16.2.sdk/System/Library/Frameworks/IOSurface.framework/Headers/IOSurfaceObjC.h:14:8 Parse Issue (Xcode): Could not build module 'IOSurface' /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator16.2.sdk/System/Library/Frameworks/CoreVideo.framework/Headers/CVPixelBufferIOSurface.h:25:9 Parse Issue (Xcode): Could not build module 'Foundation' /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator16.2.sdk/System/Library/Frameworks/OpenGLES.framework/Headers/EAGL.h:7:9 Parse Issue (Xcode): Could not build module 'Foundation' /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator16.2.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLTypes.h:7:8 Parse Issue (Xcode): Could not build module 'Foundation' /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator16.2.sdk/System/Library/Frameworks/QuartzCore.framework/Headers/CATransform3D.h:11:8 Parse Issue (Xcode): Could not build module 'Foundation' /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator16.2.sdk/System/Library/Frameworks/FileProvider.framework/Headers/NSFileProviderDomain.h:7:8
미해결
[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
CustomTextField( label: '내용', isTime: false, onSaved: onSaved, initialValue: initialValue, ), 안녕하세요. 두 가지 질문이 있습니다. 위 위젯을 예시로 onSaved: onSaved 에서 왼쪽은 parameter, 오른쪽은 argument 라고 부르는 것이 맞을까요? 강의의 대부분에서 저렇게 오른쪽의 argument를 따로 빼서 넣어주는 경우 왼쪽의 parameter와 이름이 같게 넣어주시는 경우가 많은데 현업에서는 대부분 이런 식으로 작성하나요? 변수 네이밍이나, 코드 작성은 주관적인 것이지만, 어떤 것이 좋은 코드인지 또 현업에서는 어떻게 쓰는지 궁금합니다.
미해결
Flutter 초입문 왕초보편
pubspec.yaml main_screen.dart 강의를 따라 진행했는데, 이렇게 빨간 줄이 나오고, WebView도 찾지를 못하는데, 어디서 잘못된걸까요?ㅠㅠ
미해결
Flutter 입문 - 안드로이드, iOS 개발을 한 번에 (with Firebase)
안녕하세요, 강사님. Flutter 입문 - 안드로이드, iOS 개발을 한 번에 강의 수강중에 있으나 버전(?) 충돌로 인하여 문의 드립니다.(" 13. Firebase로 이메일 로그인 기능 구현" 학습중...) firebase 연동하여 이메일을 통해 로그인 될 수 있도록 설정하는 과정에서 오류가 발생된 것으로 보이는데 어떻게 해야 하는지 문의 드립니다. if (!snapshot.hasData) { return SignInScreen( providerConfigs: [EmailProviderConfiguration(),] ); "RUN시 오류 내용" Running "flutter pub get" in instagram_clone_renew... Because every version of flutter from sdk depends on collection 1.15.0 and firebase_auth_platform_interface >=6.4.0 depends on collection ^1.16.0, flutter from sdk is incompatible with firebase_auth_platform_interface >=6.4.0. And because firebase_auth 4.2.5 depends on firebase_auth_platform_interface ^6.11.3 and no versions of firebase_auth match >4.2.5 <5.0.0, flutter from sdk is incompatible with firebase_auth ^4.2.5. So, because instagram_clone_renew depends on both flutter from sdk and firebase_auth ^4.2.5, version solving failed. pub get failed (1; So, because instagram_clone_renew depends on both flutter from sdk and firebase_auth ^4.2.5, version solving failed.) 환경설정값 및 버전 Flutter 3.3.2 • channel stable • https://github.com/flutter/flutter.git Framework • revision e3c29ec00c (4 months ago) • 2022-09-14 08:46:55 -0500 Engine • revision a4ff2c53d8 Tools • Dart 2.18.1 • DevTools 2.15.0 dependencies: flutter: sdk: flutter image_picker: ^0.8.6 # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.2 firebase_core: ^2.4.1 firebase_auth: ^4.2.5 flutterfire_ui: ^0.4.3+20
미해결
[리뉴얼] React로 NodeBird SNS 만들기
제로초쌤 제가 우분투에서 Nodebird를 진행하고 있는데 더북에 써져있는 거처럼 리눅스(우분투)에서 설치하는 방법 그대로 설치하다가 Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (13) 소켓 에러가 계속 나서 해결하려고 인터넷에 찾아보면서 따라하고 있는데 해결이 안되서 혹시 윈도우로 mysql설치해서 진행해도 크게 차이가 없을까요?
미해결
Slack 클론 코딩[실시간 채팅 with React]
제로초님, 코드를 따라친 후에 로그아웃을 하고 다시 로그인 하면 이런 에러메세지가 뜹니다. 그런데 네트워크 탭을 보면 로그인이 정상적으로 된거 같아서 새로고침을 하면 에러 메세지가 사라지고 슬랙에서 로그인된 화면이 제대로 뜹니다. 근데 또 여기서 워크스페이스를 생성하려고 하면 콘솔에 axioserror메세지가 떠서 어떻게 해야될지 모르겠습니다.. Workspace/index.tsx import axios from "axios"; import React, { FC, useCallback, useState } from "react"; import useSWR from 'swr'; import fetcher from "@utils/fetcher"; import { Navigate, Routes, Route } from "react-router-dom"; import { AddButton, Channels, Chats, Header, LogOutButton, MenuScroll, ProfileImg, ProfileModal, RightMenu, WorkspaceButton, WorkspaceName, Workspaces, WorkspaceWrapper } from "@layouts/Workspace/style"; import gravatar from 'gravatar'; import loadable from '@loadable/component'; import Menu from "../../components/Menu"; import Modal from "../../components/Modal"; import { Link } from "react-router-dom"; import { IUser } from "@typings/db"; import { Button, Input, Label } from "@pages/SignUp/styles"; import useInput from "@hooks/useInput"; import {toast} from 'react-toastify'; const Channel = loadable(() => import('@pages/Channel')); const DirectMessage = loadable(() => import('@pages/DirectMessage')); const Workspace: FC<React.PropsWithChildren<{}>> = ({children}) => { const [showUserMenu, setShowUserMenu] = useState(false); const [showCreateWorkspaceModal, setShowCreateWorkspaceModal] = useState(false); const [newWorkspace, onChangeNewWorkspace, setNewWorkspace] = useInput(''); const [newUrl, onChangeNewUrl, setNewUrl] = useInput(''); // revalidate = 서버로 요청 다시 보내서 데이터를 다시 가져옴 // mutate = 서버에 요청 안보내고 데이터를 수정 const {data: userData, error, mutate} = useSWR<IUser | false>('/api/users', fetcher, { dedupingInterval: 2000, }); const onLogout = useCallback(() => { axios.post('/api/users/logout', null , { withCredentials: true, }) .then(() => { mutate(false, false); }) }, []); const onClickUserProfile = useCallback((e: any) => { e.stopPropagation(); setShowUserMenu((prev) => !prev); }, []) const onClickCreateWorkspace = useCallback(() => { setShowCreateWorkspaceModal(true); }, []) const onCreateWorkspace = useCallback((e: any) => { e.preventDefault(); // 띄어쓰기도 검사해줘야됨 if(!newWorkspace || !newWorkspace.trim()) return; if(!newUrl || !newUrl.trim()) return; axios.post('http://localhost:3095/api/workspaces', { workspace: newWorkspace, url: newUrl, }, { withCredentials: true, }) .then(() => { mutate(); setShowCreateWorkspaceModal(false); setNewWorkspace(''); setNewUrl(''); }) .catch((error) => { console.dir(error); // 에러가 나면 사용자가 인지하게 해줌 toast.error(error.response?.data, { position: 'bottom-center' }) }) }, [newWorkspace, newUrl]) const onCloseModal = useCallback(() => { setShowCreateWorkspaceModal(false); }, []) if(!userData) { return <Navigate to="/login" /> } if(!userData) return null; return( <div> <Header> <RightMenu> <span onClick={onClickUserProfile}> <ProfileImg src={gravatar.url(userData.email, { s: '28px', d: 'retro' })} alt={userData.nickname} /> {showUserMenu && <Menu style={{ right: 0, top: 38 }} show={showUserMenu} onCloseModal={onClickUserProfile}> <ProfileModal> <img src={gravatar.url(userData.nickname, { s: '36px', d: 'retro' })} alt={userData.nickname} /> <div> <span id="profile-name">{userData.nickname}</span> <span id="profile-active">Active</span> </div> </ProfileModal> <LogOutButton onClick={onLogout}>로그아웃</LogOutButton> </Menu>} </span> </RightMenu> </Header> <WorkspaceWrapper> <Workspaces> {userData?.Workspaces.map((ws) => { return ( <Link key={ws.id} to={`/workspace/${123}/channel/일반`}> <WorkspaceButton>{ws.name.slice(0, 1).toUpperCase()}</WorkspaceButton> </Link> ); })} <AddButton onClick={onClickCreateWorkspace}>+</AddButton> </Workspaces> <Channels> <WorkspaceName>Sleact</WorkspaceName> <MenuScroll>menu scroll</MenuScroll> </Channels> <Chats> <Routes> <Route path="/channel" element={<Channel />} /> <Route path="/dm" element={<DirectMessage />} /> </Routes> </Chats> {/* Input이 들어있으면 별도의 컴포넌트로 빼는 것을 추천(input에 글자를 입력할 때마다 여기 있는 함수들이 다 리렌더링 되기 때문에 비효율적) */} </WorkspaceWrapper> <Modal show={showCreateWorkspaceModal} onCloseModal={onCloseModal}> <form onSubmit={onCreateWorkspace}> <Label id="workspace-label"> <span>워크스페이스 이름</span> <Input id="workspace" value={newWorkspace} onChange={onChangeNewWorkspace} /> </Label> <Label id="workspace-url-label"> <span>워크스페이스 이름</span> <Input id="workspace" value={newUrl} onChange={onChangeNewUrl} /> </Label> <Button type="submit">생성하기</Button> </form> </Modal> </div> ) } export default Workspace; Modal/index.tsx import React, { useCallback, FC } from "react"; import { CloseModalButton, CreateModal } from "./style"; interface Props { show: boolean; onCloseModal: () => void; children: React.ReactNode; } const Modal: FC<Props> = ({show, children, onCloseModal}) => { const stopPropagation = useCallback((e: any) => { e.stopPropagation() }, []); if(!show){ return null; } return( <CreateModal onClick={onCloseModal}> <div onClick={stopPropagation}> <CloseModalButton onClick={onCloseModal}>×</CloseModalButton> {children} </div> </CreateModal> ); }; export default Modal; swr2.0 버전, react v18, typescript v18 swr을 최신버전 사용해서 revalidate대신 mutate를 사용했는데 제가 잘못 사용한건지 모르겠습니다.
미해결
[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
사진 올린것같이 state 에다 selectedDay값을 받고 onDaySelected함수에 setState를 실행시켰습니다. 다하고 나서 에뮬레이터를 확인해보니 선택한 날짜에 동그라미가 안생기더라구요.. 그래서 print를 이용하여 this.selectedDay 가 파라미터의 selectedDay가 같은 지 확인을 해봤더니 다른 값으로 false가 나옵니다. onDaySelected란 함수가 달력의 날짜를 선택하면 selectedDay와 focusedDay의 값이 선택한 날짜가 되는것 아닌가요?? 문제의 원인이 뭔지 이해가 안됩니다 ㅠ 확인해보니 selectedDay의 값이 바뀌지 않고 계속 null 인것으로 나옵니다.ㅜ
미해결
[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 코드팩토리 디스코드 https://bit.ly/3HzRzUM Flutter 강의를 구매하시면 코드팩토리 디스코드 서버 플러터 프리미엄 채널에 들어오실 수 있습니다! 디스코드 서버에 들어오시고 저에게 메세지로 강의를 구매하신 이메일을 보내주시면 프리미엄 채널에 등록해드려요! 프리미엄 채널에 들어오시면 모든 질의응답 최우선으로 답변해드립니다! 안녕하세요 !! 궁금한게 있어서 질문 드립니다 지역 변경후 값 받아오는 곳에서 "jeonbuk":null 이값으로 받아오는데 jeonbuk = double.parse(json['jeonbuk'] ?? '0'), null처리 한곳에 '0' 으로 변환 해주면 에러가 나오고 Bad state: No element See also: https://flutter.dev/docs/testing/errors jeonbuk = double.parse(json['jeonbuk'] ?? '0.01' ), '0' 이상 값으로 변환하면 정상적으로 나오는데 이유가 궁금합니다 .
미해결
[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
안녕하세요 간단한 질문입니다. productcard 작업하기 -> 4:18분 정도에서 crossaxisalignment.stretch하셨는데 이미 expanded가 쓰여서 cliprrect를 제외한 영역을 확보했는데에도 가로채우기인 stretch를 하는 이유가 궁금합니다.
미해결
[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
안녕하세요. 이번 강의를 듣고 의문점이 생겼습니다. 출첵앱에서 permission체크를 가장 외곽에 있는 FutureBuilder를 통해서 실시했는데, 그렇게되면, build가 실행될때마다 Geolocator의 await Geolocator.isLocationServiceEnabled(); await Geolocator.checkPermission(); 두개의 async함수가 엄청난 병목을 만들 것 같은데, initState에서 해결하는게 더 좋은 코드가 아닌지 궁금합니다.