Thumbnail
BEST 개발 ・ 프로그래밍 모바일 앱 개발
Flutter 중급 - Http통신, 상태관리
(4.7)
29개의 수강평 ∙ 583명의 수강생

33,000원

지식공유자 : 오준석
총 33개 수업˙총 4시간 28분
평생 무제한 수강
수료증 발급 강의
초급 대상
이 강의는 멘토링 신청이 가능합니다.
멘토링은 수강 신청과 별개로 운영되며, 수강생이 아니어도 신청할 수 있습니다.
내 목록 추가 333 공유
Dongpyo Lee 프로필

Provider + StateLess 에서 ScrollController Dispose() 사용 문제 질문 Dongpyo Lee 24일 전
Provider  를 사용하게 되면 StateLessWidget을 사용하는데 탭뷰를 다녀오면 리스트가 초기화되어서 이전에 보던 스크롤 위치를 고정시키려고 합니다. 이걸 하려고 보니 ScrollController를 사용해야 하던데 StateLess는 Dispose가 없어서 controller dispose를 하지 못합니다. Provider 를 사용하는데 StateFull 을 사용해야 하는 것인가요? TabView 로 다른 탭 갔다 오면 리스트 오프셋이 게속 0이네요 ㅠㅠ

3
Dongpyo Lee 프로필

ver 6 올라가면서 완전 달라졌네요 Dongpyo Lee 29일 전
강의를 보면서 다라서 코딩하다가 패키지가 바뀐거 보고 도큐먼트를 봤더니 엄청 바꼈네요. Cubit 으로 이벤트 작성이 훨씬 간결해졌더군요 지금 강의 보시는 분들은 개념만 잡고 새로 바뀐 내용에 맞춰 도큐먼트 보는 것을 추천합니다. https://pub.dev/packages/bloc

1
terecal 프로필

airvisual에서 api key를 받으려는데 다시 원래 메인 화면으로 돌아와여 terecal 1달 전
안녕하세여 강사님 미세먼지앱 만들기 api  조사와 관련해 질문이 있습니다. 미세먼지 앱에 필요한 정보를 제공해주는  airvisual.com 에 접속해 apikey를 받으려고 하는데 잘안되여  api 메뉴를 클릭해서 create your api key 버튼을 눌러도  다시 원래 화면으로 돌아오는데 뭘 잘못한것일까여? 사이트 주소: https://www.iqair.com/commercial/air-quality-monitors/airvisual-platform/api알려주시면 감사여

7
minijini 프로필

bloc부분에서 에러가 납니다. minijini 1달 전
안녕하세요 강의 듣던 중 bloc 최신버전으로 했을 때 오류가 납니다  class CartBloc 부분에 error가 납니다.. flutter_bloc: ^6.1.1 최신버전 사용했습니다 

1
송덕성 프로필

http 통신 테스트 하는데 다음과 같은 경고가 뜹니다. 송덕성 4달 전
미세먼지앱  AirViusal API테스트 Testing started at 오전 8:00 ... C:\flutter\bin\flutter.bat --no-color test --machine --start-paused --plain-name "http 통신 테스트" test\widget_test.dart Warning: You should set `SILENT_OBSERVATORY` to true when debugging the VM as it will output the observatory URL by default. This breaks the various reporter contracts. To set the value define `DART_VM_OPTIONS=-DSILENT_OBSERVATORY=true`. 어디에서 설정을 하라는 얘기인가요? 인터넷도 뒤져보고 있는데 해결을 못했습니다.

1
shine01035857458 프로필

Flutter Kotlin작성중 문제 shine01035857458 5달 전
Android SDK를 잡아줬는데  Android studio 껏다가 다시 켜도 빨간 에러가 뜨네요....  

1
송덕성 프로필

runApp() 도 없는데 어떻게 저게 동작하는지 궁금합니다 송덕성 6달 전
플러터 강좌 처음으로 유료강좌 등록해서 보고 있는데요. runApp() 에서 부터 시작하는 걸로 아는데.. 저게 어떻게 된건가요?

1
kkimj 프로필

안녕하세요. Firebase와 Google sign_in 사용중입니다.. kkimj 7달 전
선생님, 안녕하세요.  지금까지의 Flutter 강의 잘 보았습니다. 정말 큰 도움이 됐습니다. 감사합니다. 현재, Firebase로 Firestore, 인증, Firebase사용중입니다. 이슈는 1. 에뮬레이터에서는 Firebase로의 Data를 얻어오지만, - flutter build apk 를 해서 얻은 apk로 제 스마트폰에 설치하였을 때는, 로드가 되지 않습니다. 2. 에뮬레이터로 실행했을 때, Android studio가 여러가지 에러메세지를 보여줍니다. 1. 스크린샷은 아래 링크에 있습니다. https://drive.google.com/drive/folders/1I-B6PyK0msCKc9rbdUzUZ8kSRW4NkinU?usp=sharing https://github.com/KKimj/Let-s-Ink/tree/dev/letsink_dev Flutter Project는 위에 Github에 있습니다. 2- 아래는 에러메세지 입니다. --- Launching lib/main.dart on sdk gphone x86 in debug mode... Running Gradle task 'assembleDebug'... ✓ Built build/app/outputs/flutter-apk/app-debug.apk. Waiting for sdk gphone x86 to report its views... W/etsink.childre(30292): Verification of boolean com.google.android.gms.measurement.internal.zzfu.zzb() took 100.333ms (627.91 bytecodes/s) (1904B approximate peak alloc) I/FA      (30292): App measurement initialized, version: 21028 I/FA      (30292): To enable debug logging run: adb shell setprop log.tag.FA VERBOSE I/FA      (30292): To enable faster debug mode event logging run: I/FA      (30292):   adb shell setprop debug.firebase.analytics.app com.letsink.children Debug service listening on ws://127.0.0.1:59737/GUJWHriCrs4=/ws Syncing files to device sdk gphone x86... W/etsink.childre(30292): JNI critical lock held for 20.796ms on Thread[22,tid=30325,Runnable,Thread*=0xe4fcb880,peer=0x134051e0,"GoogleApiHandler"] W/etsink.childre(30292): JNI critical lock held for 17.763ms on Thread[20,tid=30316,Runnable,Thread*=0xe4ff36f0,peer=0x13400670,"Measurement Worker"] I/FA      (30292): Tag Manager is not found and thus will not be used W/etsink.childre(30292): JNI critical lock held for 32.744ms on Thread[22,tid=30325,Runnable,Thread*=0xe4fcb880,peer=0x134051e0,"GoogleApiHandler"] D/EGL_emulation(30292): eglMakeCurrent: 0xc07c1430: ver 3 0 (tinfo 0xeab99b30) I/OpenGLRenderer(30292): Davey! duration=5868ms; Flags=1, IntendedVsync=36070958792285, Vsync=36070958792285, OldestInputEvent=9223372036854775807, NewestInputEvent=0, HandleInputStart=36070968550750, AnimationStart=36070968932750, PerformTraversalsStart=36070968985750, DrawStart=36076504357750, SyncQueued=36076505935750, SyncStart=36076515188750, IssueDrawCommandsStart=36076521288750, SwapBuffers=36076738009750, FrameCompleted=36076836564750, DequeueBufferDuration=33482000, QueueBufferDuration=8806000, GpuCompleted=0,  I/Choreographer(30292): Skipped 351 frames!  The application may be doing too much work on its main thread. D/EGL_emulation(30292): eglMakeCurrent: 0xc07c0b00: ver 3 0 (tinfo 0xeaba19f0) I/flutter (30292): rootPage I/flutter (30292): AuthProvider - FirebaseAuth - onAuthStateChanged - FirebaseUser(Instance of 'PlatformUser') D/EGL_emulation(30292): eglMakeCurrent: 0xc07c1430: ver 3 0 (tinfo 0xeab99b30) D/EGL_emulation(30292): eglMakeCurrent: 0xc07c1430: ver 3 0 (tinfo 0xeab99b30) D/EGL_emulation(30292): eglMakeCurrent: 0xc07c1430: ver 3 0 (tinfo 0xeab99b30) D/EGL_emulation(30292): eglMakeCurrent: 0xc07c1430: ver 3 0 (tinfo 0xeab99b30) D/EGL_emulation(30292): eglMakeCurrent: 0xc07c1430: ver 3 0 (tinfo 0xeab99b30) D/EGL_emulation(30292): eglMakeCurrent: 0xc07c1430: ver 3 0 (tinfo 0xeab99b30) D/EGL_emulation(30292): eglMakeCurrent: 0xc07c1430: ver 3 0 (tinfo 0xeab99b30) D/EGL_emulation(30292): eglMakeCurrent: 0xc07c1430: ver 3 0 (tinfo 0xeab99b30) D/EGL_emulation(30292): eglMakeCurrent: 0xc07c1430: ver 3 0 (tinfo 0xeab99b30) D/EGL_emulation(30292): eglMakeCurrent: 0xc07c1430: ver 3 0 (tinfo 0xeab99b30) D/EGL_emulation(30292): eglMakeCurrent: 0xc07c1430: ver 3 0 (tinfo 0xeab99b30) D/EGL_emulation(30292): eglMakeCurrent: 0xc07c1430: ver 3 0 (tinfo 0xeab99b30) D/EGL_emulation(30292): eglMakeCurrent: 0xc07c1430: ver 3 0 (tinfo 0xeab99b30) D/EGL_emulation(30292): eglMakeCurrent: 0xc07c1430: ver 3 0 (tinfo 0xeab99b30) W/etsink.childre(30292): Accessing hidden method Lsun/misc/Unsafe;->getUnsafe()Lsun/misc/Unsafe; (greylist,core-platform-api, linking, allowed) W/etsink.childre(30292): Accessing hidden method Lsun/misc/Unsafe;->objectFieldOffset(Ljava/lang/reflect/Field;)J (greylist,core-platform-api, linking, allowed) W/etsink.childre(30292): Accessing hidden method Lsun/misc/Unsafe;->compareAndSwapObject(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z (greylist, linking, allowed) W/etsink.childre(30292): Accessing hidden method Lsun/misc/Unsafe;->putObject(Ljava/lang/Object;JLjava/lang/Object;)V (greylist, linking, allowed) W/etsink.childre(30292): Accessing hidden method Lsun/misc/Unsafe;->compareAndSwapObject(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z (greylist, linking, allowed) I/BiChannelGoogleApi(30292): [FirebaseAuth: ] getGoogleApiForMethod() returned Gms: com.google.firebase.auth.api.internal.zzaq@64f7ca8 D/FirebaseAuth(30292): Notifying id token listeners about user ( Jzx13TmFUpgw7wVSqAjmRWR6sE13 ). I/flutter (30292): signed in 김지운 I/flutter (30292): FirebaseUser(Instance of 'PlatformUser') W/DynamiteModule(30292): Local module descriptor class for providerinstaller not found. I/DynamiteModule(30292): Considering local module providerinstaller:0 and remote module providerinstaller:0 W/ProviderInstaller(30292): Failed to load providerinstaller module: No acceptable module found. Local version is 0 and remote version is 0. W/etsink.childre(30292): Accessing hidden method Lsun/misc/Unsafe;->getLong(Ljava/lang/Object;J)J (greylist,core-platform-api, linking, allowed) W/etsink.childre(30292): Accessing hidden method Lsun/misc/Unsafe;->arrayBaseOffset(Ljava/lang/Class;)I (greylist,core-platform-api, linking, allowed) W/etsink.childre(30292): Accessing hidden method Lsun/misc/Unsafe;->copyMemory(JJJ)V (greylist, linking, allowed) W/etsink.childre(30292): Accessing hidden method Lsun/misc/Unsafe;->getByte(J)B (greylist,core-platform-api, linking, allowed) W/etsink.childre(30292): Accessing hidden method Lsun/misc/Unsafe;->getByte(Ljava/lang/Object;J)B (greylist,core-platform-api, linking, allowed) W/etsink.childre(30292): Accessing hidden method Lsun/misc/Unsafe;->getLong(J)J (greylist,core-platform-api, linking, allowed) W/etsink.childre(30292): Accessing hidden method Lsun/misc/Unsafe;->putByte(JB)V (greylist,core-platform-api, linking, allowed) W/etsink.childre(30292): Accessing hidden method Lsun/misc/Unsafe;->putByte(Ljava/lang/Object;JB)V (greylist,core-platform-api, linking, allowed) W/etsink.childre(30292): Accessing hidden method Lsun/misc/Unsafe;->getLong(Ljava/lang/Object;J)J (greylist,core-platform-api, reflection, allowed) W/etsink.childre(30292): Accessing hidden method Lsun/misc/Unsafe;->getLong(Ljava/lang/Object;J)J (greylist,core-platform-api, reflection, allowed) W/etsink.childre(30292): Accessing hidden field Ljava/nio/Buffer;->address:J (greylist, reflection, allowed) I/etsink.childre(30292): The ClassLoaderContext is a special shared library. I/flutter (30292): https://firebasestorage.googleapis.com/v0/b/lets-ink-kids.appspot.com/o/test_swiper%2FKakaoTalk_20200404_223302954_01.jpg?alt=media&token=296b5bdf-818f-49ef-89c5-55bdf1ccdaaf I/flutter (30292): https://firebasestorage.googleapis.com/v0/b/lets-ink-kids.appspot.com/o/test_swiper%2FKakaoTalk_20200404_223302954_02.jpg?alt=media&token=66c889a4-54dc-45d1-b50f-79e549b0e038 I/flutter (30292): https://firebasestorage.googleapis.com/v0/b/lets-ink-kids.appspot.com/o/test_swiper%2FKakaoTalk_20200404_223320066.jpg?alt=media&token=b665f1fa-6195-4cb6-b029-802589b2e8a9 I/etsink.childre(30292): The ClassLoaderContext is a special shared library. V/NativeCrypto(30292): Registering com/google/android/gms/org/conscrypt/NativeCrypto's 286 native methods... W/etsink.childre(30292): Accessing hidden method Ljava/security/spec/ECParameterSpec;->getCurveName()Ljava/lang/String; (greylist, reflection, allowed) I/ProviderInstaller(30292): Installed default security provider GmsCore_OpenSSL ════════ Exception caught by widgets library ═══════════════════════════════════════════════════════ The following assertion was thrown while applying parent data.: Incorrect use of ParentDataWidget. The ParentDataWidget Expanded(flex: 1) wants to apply ParentData of type FlexParentData to a RenderObject, which has been set up to accept ParentData of incompatible type ParentData. Usually, this means that the Expanded widget has the wrong ancestor RenderObjectWidget. Typically, Expanded widgets are placed directly inside Flex widgets. The offending Expanded is currently placed inside a RepaintBoundary widget. The ownership chain for the RenderObject that received the incompatible parent data was:   ConstrainedBox ← Container ← StreamBuilder<QuerySnapshot> ← Expanded ← ImageSwiper ← RepaintBoundary ← IndexedSemantics ← NotificationListener<KeepAliveNotification> ← KeepAlive ← AutomaticKeepAlive ← ⋯ When the exception was thrown, this was the stack:  #0      RenderObjectElement._updateParentData.<anonymous closure> (package:flutter/src/widgets/framework.dart:5649:11) #1      RenderObjectElement._updateParentData (package:flutter/src/widgets/framework.dart:5665:6) #2      RenderObjectElement.attachRenderObject (package:flutter/src/widgets/framework.dart:5686:7) #3      RenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5380:5) #4      SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5833:11) ... ════════════════════════════════════════════════════════════════════════════════════════════════════ W/etsink.childre(30292): Accessing hidden field Ljava/net/Socket;->impl:Ljava/net/SocketImpl; (greylist, reflection, allowed) W/etsink.childre(30292): Accessing hidden method Ldalvik/system/CloseGuard;->get()Ldalvik/system/CloseGuard; (greylist,core-platform-api, linking, allowed) W/etsink.childre(30292): Accessing hidden method Ldalvik/system/CloseGuard;->open(Ljava/lang/String;)V (greylist,core-platform-api, linking, allowed) W/etsink.childre(30292): Accessing hidden field Ljava/io/FileDescriptor;->descriptor:I (greylist, JNI, allowed) W/etsink.childre(30292): Accessing hidden method Ljava/security/spec/ECParameterSpec;->setCurveName(Ljava/lang/String;)V (greylist, reflection, allowed) W/etsink.childre(30292): Accessing hidden method Ldalvik/system/BlockGuard;->getThreadPolicy()Ldalvik/system/BlockGuard$Policy; (greylist,core-platform-api, linking, allowed) W/etsink.childre(30292): Accessing hidden method Ldalvik/system/BlockGuard$Policy;->onNetwork()V (greylist, linking, allowed) W/etsink.childre(30292): Accessing hidden method Ldalvik/system/CloseGuard;->close()V (greylist,core-platform-api, linking, allowed) 지금까지 해결을 위해 * Firebase 보안 설정 수정, 인증된 사람만 read/write 할 수 있도록 * settings.gradle 수정 - https://stackoverflow.com/questions/61732409/plugin-project-firebase-core-web-not-found * pubspec.yaml 버전 최신으로 수정 이후 남은 시도는 * Firebase 프로젝트 이전. * Flutter code refactoring 으로 생각하고 있습니다. 제 이메일은 ziun79@gmail.com입니다. 필요하신 말씀있으시면, 편하게 연락부탁드립니다! 답변 주신다면 굉장히 감사하겠습니다. 이상입니다. 좋은 하루 보내시고, 건강하세요!

4
이성학 프로필

could not reach cloud firestore backend 에러가 자꾸 발생합니다ㅠㅠ 이성학 8달 전
안녕하세요 선생님 강의 잘 듣고있습니다. 이번 강의에는 포함되지 않은 내용인데 검색해도 뾰족한 방법이 없어서 부득이 질문 드립니다ㅠㅠ 플러터 생존코딩 책에서 Streambuilder와 Firebase를 이용하여 데이터를 실시간으로 받아서 앱에서 출력하는 부분을 작성하고있었습니다. 책에서 나오는 대로 Firebase와 연결을 하고 앱을 실행했는데 자꾸 아래와 같은 메시지가 나옵니다. W/Firestore(11071): (21.3.0) [OnlineStateTracker]: Could not reach Cloud Firestore backend. Connection failed 1 times. Most recent error: Status{code=PERMISSION_DENIED, description=The project was disabled or deleted., cause=null} W/Firestore(11071): This typically indicates that your device does not have a healthy Internet connection at the moment. The client will operate in offline mode until it is able to successfully connect to the backend. 그래서 혹시몰라서 코드에 snapshot에 데이터가 있을 경우 휴지통을 출력하게 했는데 시간이 좀 걸렸지만 휴지통이 나오더군요ㅠㅠ 집에서 하는거라 인터넷도 연결이 되어있고 이전에는 됐었는데 연습한다고 코드 다시 짰더니 이런 문제가 발생했습니다ㅜㅜ 답변 부탁드리겠습니다.ㅠㅠ

5
DDOLSOON 프로필

Weather의 ws 값이 double 형태가 될때가 있네요. DDOLSOON 8달 전
as-is int ws;ws = json['ws'];to-bedouble ws;ws = json['ws'].toDouble(); 파싱하다 오류가 나서, 다음과 같이 해결했네요. 다른 수강생 분들도 참고하시면 좋을거같아요~

1
허태정 프로필

NoSuchMethodError 여러번 반복해서 눌렀을 때 발생 허태정 8달 전
그러면 아래의 에러는 어떻게 처리할까요? double과 int 차이로 인해서 발생하는 문제는 num으로 해당 처리했는데 계속 버튼을 눌러서 여러번 반복을 했더니 http 요청에 문제가 생겼는지.. pollution이 Null이라면서 안됩니다. 더 골때리는 건 stream.hasData = True, stream.hasError = False 이고, try catch로 로딩바를 보여주게 해놨는데 무한 로딩만 되고 아무것도 안됩니다. NoSuchMethodError: The getter 'pollution' was called on null.

1
허태정 프로필

Refresh 반복, int is not subtype of double 허태정 8달 전
이건 무슨 에러인가요? Refresh를 여러번 반복하면 자꾸 발생합니다. 그리고 자꾸 int is not subtype of double 에러도 났다가 안났다가 하네요 ════════ Exception caught by widgets library ═════════════════════════════════════════════════════ ══ The following NoSuchMethodError was thrown building StreamBuilder<Object>(dirty, state: _StreamBuilderBaseState<Object, AsyncSnapshot<Object>>#3c54d): The getter 'pollution' was called on null. Receiver: null Tried calling: pollution The relevant error-causing widget was:    StreamBuilder<Object> file:///D:/Project/Flutter/flutter_mise_app/flutter_mise_app/lib/main.dart:40:16 When the exception was thrown, this was the stack:  #0      Object.noSuchMethod (dart:core-patch/object_patch.dart:53:5) #1      _MainState.getMappedData (package:fluttermiseapp/main.dart:148:47) #2      _MainState.buildPadding (package:fluttermiseapp/main.dart:72:30) #3      _MainState.build.<anonymous closure> (package:fluttermiseapp/main.dart:45:24) #4      StreamBuilder.build (package:flutter/src/widgets/async.dart:509:81) ...

1
이강훈 프로필

네이티브 연동에관련하여 이강훈 9달 전
플러터 문서에도 그렇고 인터넷을 뒤져서 찾아봣지만 연동은 네이티브 기능을 들고오는것들이 대다수더라구요 제가 궁금한건 안드로이드 기준으로 view(화면)단을 안드로이드 코드로 작성하고 그화면은 flutter로 접근할수 있는지 궁금합니다. 앱쪽 전공이 아니라서 잘모르지만 안드로이드는 view파일은 따로 존재하고 그 부분은 flutter로 연동하는지 찾기가 어려워서 기술적으로 가능한건지 묻고싶습니다. 혹시가능하다면 키워드나 예제파일 url을 알려주시면 제가 한번 찾아보겠습니다.

7
홍정민 프로필

MethodChannel 오류 발생문제. 홍정민 9달 전
강사님 안녕하세요. flutter methodchannel을 구동 하려고 하는데요. flutter <---> kotlin 이렇게 채널을 만들려고 합니다. 플러터 공식문서에 있는 그대로 구성을 하는데 다음과 같이 에러가 발생합니다. 이런식으로 에러 메세지가 나오면서 빌드를 하면 실패합니다. onCreate 방식으로 해도 마찬가지고 구글에서 왠만한건 다 검색을 해도 해결이 안되네요. 현재 플러터 최신버전에서 MethodChannel을 구성하는 방법이 있나요?

1
Miseong Shin 프로필

테스트코드실행방법좀 부탁드려요! Miseong Shin 9달 전
테스트코드실행방법좀알려주세요. 프로젝트 처음 만들면 테스트 코드 widget_test.dart 가 써있는데요.. 실행해보고 싶은데 어떻게 실행하면되나요.. https://flutter-ko.dev/docs/cookbook/testing/widget/introduction#6-verify-the-widget-using-a-matcher 찾아보기는 했는데.. ;;; 실행방법을 모르겠네요. 

3

33,000원

내 목록 추가 333 공유
지식공유자 : 오준석
총 33개 수업˙총 4시간 28분
평생 무제한 수강
수료증 발급 강의
초급 대상
이 강의는 멘토링 신청이 가능합니다.
멘토링은 수강 신청과 별개로 운영되며, 수강생이 아니어도 신청할 수 있습니다.
지식공유자 되기
많은 사람들에게 배움의 기회를 주고,
경제적 보상을 받아보세요.
지식공유참여
기업 교육을 위한 인프런
“인프런 비즈니스” 를 통해 모든 팀원이 인프런의 강의들을
자유롭게 학습하는 환경을 제공하세요.
인프런 비즈니스