Flutter 와 Android 가 서로 데 이 터 를 전달 하 는 실현
5111 단어 FlutterAndroid데 이 터 를 전달 하 다
1.Android Studio 를 열 어 dev.android.book 2 라 는 프로그램 을 만 들 고 MyApplication 을 만 듭 니 다.AndroidManifest.xml 파일 에 적용 되 는 application 의 android:name 속성 상 3.FlutterEngine 의 인 스 턴 스 를 만 든 다음 이 인 스 턴 스 를 캐 시 된 FlutterEngine 에 추가 합 니 다.4.MethodChannel 의 인 스 턴 스 를 만 들 고 이 인 스 턴 스 의 유일한 문자열 을 지정 합 니 다.예 를 들 어 dev.android.book/add 5 는 methodChannel 방법 리 셋 함 수 를 설정 하고 Flutter 가 MethodChannel 을 통 해 보 낸 메 시 지 를 수신 합 니 다.6.Flutter 가 보 낸 메 시 지 는 매우 많 습 니 다.MethodCall 대상 의 방법 명 을 통 해 7 을 판단 합 니 다.Android 단 이 Flutter 에 메 시 지 를 보 내 는 것 도 methodChannel 대상 의 invokeMethod 방법 입 니 다.
이상 의 각 절차 에 대해 설명 을 추가 합 니 다.
1,간단 한 안 드 로 이 드 스튜디오 를 엽 니 다=>File=>New Project=>Select a Project Template=>input Name,Package name 등=>Finish
2.Bookapplication 을 만 드 는 목적 은 FlutterEngine 을 미리 초기 화 하 는 것 이 고 Flutter 를 시작 하 는 데 세 가지 방식 이 있 습 니 다.
a,첫 번 째 방식 은 FlutterEngine,예 를 들 어 FlutterActivity.createDefaultIntent(this)b,두 번 째 방식 은 FlutterEngine,예 를 들 어 FlutterActivity.withNewEngine(),build(this)c,세 번 째 방식 은 캐 시 FlutterEngine,예 를 들 어 FlutterActivity.withCached Engine(ENGINEID).build(this)
이 세 가지 방식 을 간단하게 해석 하면 a 와 b 는 똑 같 습 니 다.Flutter Activity.createDefault Intent 가 실제로 호출 한 것 은 Flutter Activity.with NewEngine()방법 입 니 다.아래 그림 과 같 습 니 다.
개발 과정 에서 a,b 방법 을 권장 하지 않 는 이 유 는 개발 과정 에서 육성 에서 Flutter 페이지 를 열 면 한동안 블랙 스크린 이 있 기 때 문 입 니 다.이 는 Flutter Engine 이 초기 화 되 고 초기 화가 완료 되면 Flutter 페이지 를 표시 할 수 있 기 때 문 입 니 다.
3.FlutterEngine 을 만 드 는 인 스 턴 스 는 두 가지 방법 이 있 습 니 다.Context 를 직접 전달 하거나 Context dartVmArgs 를 전달 합 니 다.
4.MethodChannel 의 인 스 턴 스 를 만 들 고 두 가지 구조 방법 인 messenger 와 name,message 와 name,MethodCodec 을 제공 합 니 다.
5.MethodChannel 방법의 리 셋 을 설정 하고 Flutter 에서 보 내 온 내용 을 받 으 며 매개 변 수 를 제공 합 니 다 MethodCallHandler
6.Flutter 가 전달 하 는 값 은 다양 합 니 다.인 터 페 이 스 를 통 해 MethodCallHandler 입 니 다.
MethodCallHandler 안의 추상 적 인 방법 인 onMethodCall 로 구분 합 니 다.onMethodCall 방법 에는 두 개의 매개 변수 가 있 습 니 다.MethodCall 은 전 달 된 매개 변수 에 대한 정 보 를 포함 합 니 다.예 를 들 어 방법 명,매개 변수 등 정보 입 니 다.
result 는 성공 이나 실 패 를 나타 내 는 반전 메 시 지 를 표시 합 니 다.
7.Android 측 에서 Flutter 측 에 메 시 지 를 보 내 는 것 은 등 록 된 MethodChannel 을 통 해 invokeMethod 방법 을 호출 하 는 것 입 니 다.두 개의 매개 변수,방법의 이름과 매개 변수 가 있 습 니 다.
c.FlutterEngine 을 미리 초기 화 하 는 방법 을 사용 하 는 것 을 권장 합 니 다.사용 과정 에서 페이지 가 Flutter 페이지 를 여 는 것 을 거의 멈 추 지 않 았 기 때문에 응용 프로그램 에서 초기 화 코드 를 미리 초기 화 하려 면 다음 과 같 습 니 다.
(2)Flutter 코드 설정
1.VSCODE 를 열 어 프로그램 을 만 듭 니 다.패키지 이름 myflutter 2,MethodChannel 의 인 스 턴 스 를 만 들 고 이 인 스 턴 스 의 유일한 문자열 을 지정 합 니 다.예 를 들 어 dev.android.book/add 3,methodChannel 방법 리 턴 함 수 를 설정 하고 Flutter 가 MethodChannel 을 통 해 보 낸 메 시 지 를 받 습 니 다.methodChannel 대상 을 통한 invokeMethod 방법 이기 도 합 니 다.
이상 의 각 절차 에 대해 설명 을 추가 합 니 다.
1.flutter model 을 만 들 고 마지막 으로 어 쿠 스틱 코드 에 의존 하여 명령 을 통 해 flutter create-t module--org com.flutter myflutter,실행 완료 후 그림 참조
2,있 는 클래스 에서 MethodChannel 을 직접 초기 화 합 니 다.예 를 들 어 finalchannel = MethodChannel(channel_name); 매개 변 수 는 유일한 문자열 입 니 다.이 문자열 은 안 드 로 이 드 엔 드 의 문자열 과 일치 해 야 합 니 다.
3.MethodChannel 설정 방법 에 리 셋 을 호출 합 니 다.매개 변 수 는 Android 쪽 과 대체적으로 일치 합 니 다.
4,안 드 로 이 드 측 에서 보 내 온 메시지 도 MethodCall 을 통 해 판단,더 방법 명 으로 판단 할 수 있 습 니 다
5.Flutter 측 이 Android 측 에 메 시 지 를 보 내 는 것 도 등 록 된 MethodChannel 을 통 해 invokeMethod 를 호출 하여 메 시 지 를 보 내 는 것 입 니 다.
(3)안 드 로 이 드 프로젝트 에 방금 만 든 FLutter 프로젝트 도입
Android 프로젝트 의 settings.gradle 에 다음 코드 를 추가 합 니 다.
그리고 의존 에 Flutter 공정 모듈 을 추가 합 니 다.
이 절 차 를 마치 면 기 존 안 드 로 이 드 프로젝트 에 flutter 모듈 을 추가 하고 안 드 로 이 드 엔 드 와 Flutter 엔 드 데 이 터 를 어떻게 전달 하 는 지 완성 합 니 다.
플 루 터 와 안 드 로 이 드 가 서로 데 이 터 를 전달 하 는 실현 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 플 루 터 안 드 로 이 드 가 서로 데 이 터 를 전달 하 는 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 부탁드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Flutter】DateTime 전월의 일수를 취득한다달의 일수를 취득할 필요가 있어, 의외로 수요 있을까라고 생각했으므로 비망록 정도에 남겨 둡니다. DateTime 날짜에 0을 입력하면 전월 DateTime이 됩니다. 2021년 3월 0일 = 2021년 2월 28일...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.