Flutter 중급 - Http통신, 상태관리
Flutter 중급 - Http통신, 상태관리
수강정보
(25개의 수강평)
505명의 수강생
스킬태그 #Flutter, #iOS, #Android, #웹앱
33,000원
지식공유자 : 오준석
33회 수업 · 총 4시간 28분 수업
기간 : 평생 무제한 시청
수료증 : 발급 강의
수강 난이도 : 초급
송덕성 프로필

http 통신 테스트 하는데 다음과 같은 경고가 뜹니다. 송덕성 1달 전
미세먼지앱  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 3달 전
Android SDK를 잡아줬는데  Android studio 껏다가 다시 켜도 빨간 에러가 뜨네요....  

1
송덕성 프로필

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

1
kkimj 프로필

안녕하세요. Firebase와 Google sign_in 사용중입니다.. kkimj 4달 전
선생님, 안녕하세요.  지금까지의 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 에러가 자꾸 발생합니다ㅠㅠ 이성학 5달 전
안녕하세요 선생님 강의 잘 듣고있습니다. 이번 강의에는 포함되지 않은 내용인데 검색해도 뾰족한 방법이 없어서 부득이 질문 드립니다ㅠㅠ 플러터 생존코딩 책에서 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 5달 전
as-is int ws;ws = json['ws'];to-bedouble ws;ws = json['ws'].toDouble(); 파싱하다 오류가 나서, 다음과 같이 해결했네요. 다른 수강생 분들도 참고하시면 좋을거같아요~

1
허태정 프로필

NoSuchMethodError 여러번 반복해서 눌렀을 때 발생 허태정 5달 전
그러면 아래의 에러는 어떻게 처리할까요? 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 허태정 5달 전
이건 무슨 에러인가요? 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
이강훈 프로필

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

7
홍정민 프로필

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

1
Miseong Shin 프로필

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

3
홍정민 프로필

ListView 스크롤시 Card 및 RaisedButton elevation 번짐 문제 홍정민 6달 전
안녕하세요. Flutter로 작은 프로젝트를 개발중인데요. 가르쳐주신 대로 학습하고 하니 잘 만들어 집니다. 다름이 아니라 ListView에서 Card 위젯을 Provider로 받아서 빌드 하는데 처음 몇개는 깔끔하게 잘나오는데 스크롤을 하여 카드가 한 10~12개 정도 넘어가면 Card와 RaisedButton의 외곽선이 점차 번집니다. Release 모드로 실행하여도 마찬가지 문제가 발생하네요. (다른 디바이스에서 테스트해도 동일한 결과) 사진 첨부하여 질문드립니다. 감사합니다.

3
guide94 프로필

StreamBuilder와 Bloc과 Provier guide94 6달 전
보통 Block 패턴에 StreamBuilder를 많이 쓰는데 Provider에서는 StreamBuilder를 안 써도 되는건가요? Provider를 쓰다보니까 StreamBuilder의 필요성을 잘 못 느끼겠는데 제가 Provider나 StreamBuilder에 관한 이해가 아직 부조한 것인가요? 또한, Bloc과 Provider의 역할을 비슷하게 봐도 무방한 것인가요? 그리고, 요즘에는 Provider를 쓰는 것이 간편하고 좋다고 해서 Provider를 주로 쓰고 있는데 실제로 써보니까 Bloc보다 훨씬 편한 것 같습니다. Provider를 쓰면 StreamBuilder를 쓰지 않아도 문제가 되는 것이 없는지 궁금합니다.

4
홍정민 프로필

GlobalKey를 이용한 StatefulWidget의 상호 연결 홍정민 6달 전
안녕하세요. Flutter도 widget tree를 구성하여 하나의 앱 시스템을 구축하는데요. 예를 들어  3개의 StateFulWidget A, B, C가 있다고 가정하면 서로 필요한 함수 및 변수를 조작하기 위햐서 GlobalKey를 사용하고 있고 구동도 잘됩니다. GlobalKey를 static 으로 선언하고  필요한 곳에서 (특정 위젯의 )globalkey.currentState.doSomeThing(); 이런식으로 사용합니다. 하지만 로그를 보면 'Multiple widgets use same Globalkey'  라고 빨간색으로 경고 표시가 나오네요. 구동은 이상없이 잘되는데요. 무시하고 이런방식으로 구현을 해도 되는건가요?

1
홍정민 프로필

provider 의 Consumer builder함수에서 반복문 사용 문제 홍정민 6달 전
강사님 강의 잘 듣고 현재 간단한 프로젝트를 flutter로 만들고 있는데요. 저는 상태관리를 provider 방식으로 하고 있습니다. 궁금한점이 ListView에 게시글을 서버에서 받아서 복수개를 보여주는 로직인데요. List<게시글 VO> 형식으로 Provider Model에 저장하고 Consumer 에서 반복문으로 게시글을 보여줍니다. 동작은 잘하는데 의문이 예를 들어 ListView에 200~300여개의 게시글을 보여준다고 하면  Consumer 내부에서 200~300회의 반복문이 수행되는데 그때 ListView에 보여지는 것이 문제가 없이 잘될까요? 일단 테스트로 ListView의 하단에 도달하면 2개씩 불러오는 코드에서는 잘 되는것 같습니다. 아니면 반복문 처리를 provider model 에서 미리 해놓고 Cosumner에서는 그대로 위젯 리스트를 리턴만 시키는게 좋을까요? 코드는 아래와 같습니다. Consumer<RecruitModel>( builder: (context,recruit,child){ List<Widget> resultList=[]; for(Recruit recruit in recruit.listInMain){ Widget recruitCard = _buildRecruitCard( name:recruit.name, regDate:recruit.regDate ); resultList.add(recruitCard); } return Column( children: resultList, ); },) class RecruitModel with ChangeNotifier{ var client = http.Client(); var listInMain=[]; var listInSearch=[]; void getListInMain({var start, var cnt}) async{ var requestUrl = clientUrl+'/rc_grlbc'; Uri uri = Uri.parse(requestUrl); var urlWithParam = uri.replace(queryParameters: { 'start':start.toString(), 'cnt':cnt.toString() }); try{ var response = await client.get(urlWithParam); var list = jsonDecode(response.body); var tempList=[]; for(int i=0;i<list.length;i++){ Recruit recruit = Recruit.fromJson(list[i]); tempList.add(recruit); } listInMain..addAll(tempList); }catch(e){ print('e : $e'); } notifyListeners(); }}

1
지식공유자 되기
많은 사람들에게 배움의 기회를 주고,
경제적 보상을 받아보세요.
지식공유참여
기업 교육을 위한 인프런
“인프런 비즈니스” 를 통해 모든 팀원이 인프런의 강의들을
자유롭게 학습하는 환경을 제공하세요.
인프런 비즈니스