iamport_flutter icon indicating copy to clipboard operation
iamport_flutter copied to clipboard

flutter 결재 모듈을 실행하기 위해 dart sdk 2.14.0 로 업그레이드 시 에러 발생

Open jinkooklim opened this issue 3 years ago • 16 comments

iamport_flutter 다운받고 실행해보니 dart sdk 2.14.0 가 필요하다고 해서 기존 dart sdk 2.13.4 를 2.14.0 으로 업그레이드 하여 빌드하니 아래와 같은 에러가 나옵니다. wrong full snapshot version, expected '9cf77f4405212c45daf608e1cd646852' found

해결 방법은 없나요?

jinkooklim avatar Sep 29 '21 09:09 jinkooklim

안녕하세요, 아임포트 기술지원팀입니다.

우선 현재는 2.12 이상을 지원하고 있습니다만, 어떠한 라이브러리의 최신 버전이 2.14를 요구했는지 궁금합니다. 해당 문제는 flutter 버전 관리가 git으로 진행되어 가끔 발생하는 문제고 flutter 설치 폴더 안에 들어가 git reset을 하신 후 다시 업그레이드를 실행하시면 해결될 문제입니다. 이것이 안된다면 삭제후 재설치를 하는 것이 빠를 수 있습니다.

anymate98 avatar Sep 29 '21 09:09 anymate98

빌드하면 이렇게 나오네요. 오늘 여기서 다운받은 iamport_flutter-master.zip 를 사용하면서 발생한 사항입니다.

C:\src\flutter\bin\flutter.bat --no-color pub get Running "flutter pub get" in example...

The current Dart SDK version is 2.13.4.

Because iamport_flutter_example depends on dart_json_mapper >=2.1.9 which requires SDK version >=2.14.0 <3.0.0, version solving failed. pub get failed (1; Because iamport_flutter_example depends on dart_json_mapper >=2.1.9 which requires SDK version >=2.14.0 <3.0.0, version solving failed.) Process finished with exit code 1

jinkooklim avatar Sep 29 '21 11:09 jinkooklim

flutter 2.0 을 사용하고 있고 현재 dar SDK 를 2.13.4로 다시 설치하여 테스트를 하고 있는데 빌드가 계속 안되고 있습니다.

jinkooklim avatar Sep 29 '21 11:09 jinkooklim

해당 이유라면 2.14로의 업데이트를 요구하는 것이 맞습니다. 다만 라이브러리를 pubspec.yaml을 통한 것이 아닌 직접 받아서 사용하시는 이유가 있으신가요?

또 업그레이드시 사용한 명령어(혹은 방법)이 무엇인지 궁금합니다.

flutter doctor -v 의 출력도 참고하고 싶습니다.

anymate98 avatar Sep 29 '21 11:09 anymate98

일단 dart 2.15로의 업데이트를 하였습니다. 문제는 dart 파일에 다음과 같은 현상이 발행합니다. [Import certification.dart] image

jinkooklim avatar Sep 30 '21 02:09 jinkooklim

image image

jinkooklim avatar Sep 30 '21 02:09 jinkooklim

image image

jinkooklim avatar Sep 30 '21 02:09 jinkooklim

The parameter type 'dynamic' is incompatible with the field type 'String'. 라는 메시지가 출력됩니다

jinkooklim avatar Sep 30 '21 02:09 jinkooklim

required 키워드는 flutter v2부터 사용 가능한 것이고 기본적으로 저런 에러가 뜨지 않게 하기 위해서는 pubspec.yaml에 해당 사항을 명시해주어야 합니다.

environment:
  sdk: '>=2.12.0 <3.0.0'
  flutter: ">=2.0.0"

anymate98 avatar Sep 30 '21 02:09 anymate98

값 설정을 통해서 위의 문제는 해결하였는데 lib/iamport_payment.dart 파일에서 아래와 같은 문제가 생겼네요

image

  • Undefined class 'PaymentData'. image Undefined class 'IamportValidation'. 32 The method 'IamportValidation' isn't defined for the type 'IamportPayment'. 33 'IamportWebView' isn't a function. 36 The name 'IamportWebView' is defined in the libraries 'package:etess_solution_app/widget/iamport_error.dart' and 'package:etess_solution_app/widget/iamport_webview.dart'. 36 The name 'ActionType' is defined in the libraries 'package:etess_solution_app/widget/iamport_error.dart' and 'package:etess_solution_app/widget/iamport_webview.dart'. 37

image The method 'IamportError' isn't defined for the type 'IamportPayment'. 113 The name 'ActionType' is defined in the libraries 'package:etess_solution_app/widget/iamport_error.dart' and 'package:etess_solution_app/widget/iamport_webview.dart'. 113

Unused import: './model/iamport_validation.dart'. 10 Unused import: './model/payment_data.dart'. 11

jinkooklim avatar Sep 30 '21 03:09 jinkooklim

소스를 직접 카피해서 쓰시느라 참조가 꼬여서 발생하는 문제같습니다. 이렇게 사용하셔도 무방하지만, 문제 발생에 대한 지원은 드리기 어려울 것 같습니다.

anymate98 avatar Sep 30 '21 03:09 anymate98

소스를 직접 카피해서 사용한게 아니라 파일을 다운 받아서 프로젝트에 파일의 폴더에 직접 복사하고 pubspec,yaml 파일만 수정하는 과정에서 일어난 사항입니다. imaport 다운 받은 파일을 그대로 사용하면 지금은 문제가 발생하지 않지만 프로젝트내에 넣다 보니 생기는 문제입니다~~~ 다 해결하고 image 'IamportWebView' isn't a function. The name 'IamportWebView' is defined in the libraries 'package:etess_solution_app/widget/iamport_error.dart' and 'package:etess_solution_app/widget/iamport_webview.dart'. The name 'ActionType' is defined in the libraries 'package:etess_solution_app/widget/iamport_error.dart' and 'package:etess_solution_app/widget/iamport_webview.dart'.

이것 만 남았네요~~ ㅠㅠ

jinkooklim avatar Sep 30 '21 04:09 jinkooklim

에러 메시지만 봐서는 두개의 파일에 중복 정의되어 발생하는 문제로 보입니다. IamportWebView는 iamport_error.dart에 있으면 안되고 ActionType은 iamport_webview.dart에 있으면 안됩니다. 파일 수정이 필요하겠습니다

anymate98 avatar Sep 30 '21 05:09 anymate98

감사합니다~ 일단 현재 발생한 문제들은 해결한 것 같습니다~~

jinkooklim avatar Sep 30 '21 06:09 jinkooklim

다트 문서에서 본인 인증을 위해 아래와 같이 연결 할려고 합니다. 맞는지요? Iamport_certification() 가 인식이 안되는데 다른 방법으로 해야 하나요?

child: ElevatedButton( style: ButtonStyle( backgroundColor: MaterialStateProperty .resolveWith<Color>( (Set<MaterialState> states) { if (states.contains(MaterialState.disabled)) return Colors.grey; return Colors.white; // Defer to the widget's default. }), foregroundColor: MaterialStateProperty .resolveWith<Color>( (Set<MaterialState> states) { if (states.contains(MaterialState.disabled)) return Colors.black; return Colors.white; // Defer to the widget's default. }), ), onPressed: () { Navigator.push( context, MaterialPageRoute( builder: (context) => Iamport_certification()), ); },

jinkooklim avatar Sep 30 '21 07:09 jinkooklim

IamportCertification()을 사용하셔야 합니다.

혹시 다트 문서가 flutter web을 말씀하시는건가요? flutter web은 지원하지 않으므로 참고 바랍니다.

anymate98 avatar Sep 30 '21 08:09 anymate98