• 카테고리

    질문 & 답변
  • 세부 분야

    모바일 앱 개발

  • 해결 여부

    해결됨

fluuter php mysql 글작성

22.08.29 19:06 작성 조회수 239

0

강사님 유튜브 https://www.youtube.com/watch?v=av-CcrzNfHA 참고해서 글작성을 구현했습니다.

그런데 저번목요일까지만 해도 정상적으로 작동됬습니다. 그런데 오늘 다시 테스트해보니 글작성은 되는데 DB에 있는 값을 가져와서 화면에 보여줘야하는데 못가져옵니다.

state.posts.length를 찍어보니 0입니다. DB에는 데이터 있는데도 0으로 가져옵니다.

그리고 Run에서 보이는 오류는

E/flutter (19022): [ERROR:flutter/lib/ui/ui_dart_state.cc(198)] Unhandled Exception: type 'int' is not a subtype of type 'String' in type cast

입니다. 혹시 원인이 무엇인지 알 수 있을까요?

답변 2

·

답변을 작성해보세요.

0

fromJson으로 값이 넘어가기 전의 데이터 내부를 확인해 보셔야 할 것 같습니다.

fromJson 호출하기 전에 break point 찍고 debug 모드로 실행해서 값을 확인해 보세요

chorokdosi님의 프로필

chorokdosi

질문자

2022.09.05

0 = {map entry} "re_idx" -> 1

1 = {map entry} "re_id" -> "tset@naver.com"

2 = {map entry} "re_name" -> "tset2"

3 = {map entry} "re_productname" -> "매화"

4 = {map entry} "re_content" -> "doTest"

5 = {map entry} "re_likenumber" -> 2

6 = {map entry} "re_create_time" -> "2022-09-02 13:58:03"

7 = {map entry} "re_imgae" -> "image_picker2486422957431426387.jpg"

 

5 = {map entry} "re_likenumber" -> 2 문자로 안되어있네요.. 왜그런거죠?...

그리고 확인하여보니 숫자로만 되어있는건 다 int형으로 가져오는거같은데 무슨 문제일까요?

DB 테이블 구조가 re_likenumber 는 INTEGER로 되어 있겠지요.

가져올 때 int로 가져오니 클래스에서도 타입을 맞춰 주셔야겠지요

chorokdosi님의 프로필

chorokdosi

질문자

2022.09.05

VARCHAR로 다 되어있습니다. INTEGER말고 VARECHAR로 생성했습니다.image

서버가 php라고 하셨지요?

제대로 고치려면 서버에서 Response 로 전달할 때 값을 확인해 보세요.

혹시 php쪽에서 json_encode() 함수를 사용하셨다면 flag에 따라 숫자가 스트링으로 바뀌기도 하고 그렇습니다. 혹시 숫자형태의 글자가 숫자로 변경되는 flag가 지정되어 있는지도 확인해 보세요. 숫자 데이터가 스트링형태로 변환되는 것은 경험해 봤습니다.

https://www.php.net/manual/en/function.json-encode.php

일단 돌아가게 하실거라면 freezed 로 생성된 파일의 fromJson() 내에 에러나는 부분인 코드를

json['likenumber'] as String 에서 '${json['likenumber']}' 처럼 수동으로 고쳐보시지요.

0

에러 메시지를 보면 int 를 String 데이터에 대입하려고 하기 때문에 발생한 에러입니다.

타입을 맞추거나, 타입 캐스팅을 수행해 주셔야 합니다.

에러가 나는 라인의 String 으로 선언된 부분을 int 로 고치시거나, toString(), int.parse() 등을 활용하여 캐스팅을 수행해 주세요.

chorokdosi님의 프로필

chorokdosi

질문자

2022.08.29

아하 감사합니다.

그런데 답변오기전에 타입 캐스팅안하고 DB테이블을 지웠다 다시생성을 하니 정상적으로 작동합니다.

혹시 왜 이런지 물어봐도 될까요?

DB에 어떤 데이터가 들어간 시점부터 제대로 작동이 안 된다면, DB 내용을 파싱해 오는 과정에서 문제가 있을 수 있습니다.

아마도 특정 데이터일 때 해당 문제가 있을 것으로 보이니 다시 에러가 났을 때 데이터 타입과 파싱하는 과정의 코드를 면밀히 살펴보시면 되지 않을까 합니다.

chorokdosi님의 프로필

chorokdosi

질문자

2022.09.02

E/flutter (15396): [ERROR:flutter/lib/ui/ui_dart_state.cc(198)] Unhandled Exception: type 'int' is not a subtype of type 'String'

E/flutter (15396): #0 $$ReviewPostFromJson (package:app/domain/model/review/review_post.g.dart:16:44)

re_likenumber: json['likenumber'] as String,

E/flutter (15396): [ERROR:flutter/lib/ui/ui_dart_state.cc(198)] Unhandled Exception: type 'int' is not a subtype of type 'String' in type cast

E/flutter (15396): #0 $$MemberPostFromJson (package:app/domain/model/member/member_post.g.dart:13:28)

mb_pw: json['pw'] as String,

살펴봐도 모르겠습니다. 잘못된게 없어보이는데.. 뭐가 문제인거죠?.

re_likenumber, mb_pw 가 int 타입인데 String 값을 넣으려고 하는 것 같습니다.

 

chorokdosi님의 프로필

chorokdosi

질문자

2022.09.02

DB에서는 VARCHAR타입이고 post에서도 String이고 텍스트필드값이라 문자형일텐데 int값으로 인식되는건가요?...

DB쪽 문제가 아니고 그걸 받는 클래스쪽 문제입니다. 클래스에서 int 형으로 만드셨는지 확인 바랍니다.

chorokdosi님의 프로필

chorokdosi

질문자

2022.09.05

전부다 String으로 되어있습니다.

post, api, repostiroy, repostiroy_impl, event, state, view_model 확인했습니다....

E/flutter (11433): [ERROR:flutter/lib/ui/ui_dart_state.cc(198)] Unhandled Exception: type 'int' is not a subtype of type 'String' in type cast

E/flutter (11433): #0      $$ReviewPostFromJson (package:app/domain/model/review/review_post.g.dart:16:44)

E/flutter (11433): #1      new $ReviewPost.fromJson (package: app/domain/model/review/review_post.freezed.dart:201:7)

E/flutter (11433): #2      $ReviewPostFromJson (package: app/domain/model/review/reviewpost.freezed.dart:18:22)

E/flutter (11433): #3      new ReviewPost.fromJson (package: app/domain/model/review/review_post.dart:21:60)

E/flutter (11433): #4      ReviewRepositoryImpl.getPosts.<anonymous closure> (package: app/data/repository/review_repository_impl.dart:16:39)

E/flutter (11433): #5      MappedListIterable.elementAt (dart:_internal/iterable.dart:413:31)

E/flutter (11433): #6      ListIterator.moveNext (dart:_internal/iterable.dart:342:26)

E/flutter (11433): #7      new GrowableList.ofEfficientLengthIterable (dart:core-patch/growable_array.dart:189:27)

E/flutter (11433): #8      new GrowableList.of (dart:core-patch/growablearray.dart:150:28)

E/flutter (11433): #9      new List.of (dart:core-patch/array_patch.dart:51:28)

E/flutter (11433): #10     ListIterable.toList (dart:_internal/iterable.dart:213:44)

E/flutter (11433): #11     ReviewRepositoryImpl.getPosts (package: app/data/repository/review_repository_impl.dart:16:52)

E/flutter (11433): <asynchronous suspension>

E/flutter (11433): #12     ReviewViewModel._getReviewPosts (package: app/presentation/review/review_view_model.dart:20:20)

E/flutter (11433): <asynchronous suspension>