일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 재물운
- 코틀린
- 인공지능 관상
- 코로나
- 테스트
- 연애운
- 쥐상관상
- ==>
- 프로그램
- 관상 이야기
- 관상 테스트
- 관상이야기
- 인공지능 동물상 관상 테스트
- 관상
- 인공지능 거북이 관상
- 인공지능 호랑이상
- 나른한오후
- #자바
- 자바
- 안드로이드
- 실시간 인공지능 관상 테스트
- AR Lipstick Viewer
- 나른한 오후
- Lipstick
- Teachable Machine
- 인공지능
- 늑대상
- 동물상
- 거북이상
- 호랑이상
- Today
- Total
주식회사 이웃사촌
MethodChannel native Api 호출하기 본문
1.Flutter 에서 호출하기
static const platform = const MethodChannel('com.flutter.dev/info');
static const platform3 = const MethodChannel('com.flutter.dev/dialog');
Future<void> _getDeviceInfo() async {
String deviceInfo;
try {
final String result = await platform.invokeMethod('getDeviceInfo');
deviceInfo = 'Device Info : $result';
} catch (e) {
deviceInfo = 'Failed to get Device info : ${e.toString()}';
}
setState(() {
_deviceInfo = deviceInfo;
});
}
2.android 에서 선언 처리하기
package com.example.native_example
import android.app.AlertDialog
import android.os.Build
import androidx.annotation.NonNull
import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugin.common.MethodChannel
import android.util.Base64;
class MainActivity : FlutterActivity() {
private val CHANNEL = "com.flutter.dev/info"
private val CHANNEL2 = "com.flutter.dev/encrypto"
private val CHANNEL3 = "com.flutter.dev/dialog"
override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
super.configureFlutterEngine(flutterEngine)
//###3.showDialog 처리
MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL3).setMethodCallHandler { call, result ->
if (call.method == "showDialog") {
AlertDialog.Builder(this).setTitle("Flutter").setMessage("네이티브에서 출력하는 창입니다").show()
}
}
//###2.encrypt 처리 메서드
MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL2).setMethodCallHandler { call, result ->
if (call.method == "getEncrypto"){
val data= call.arguments.toString().toByteArray()
val changeText= Base64.encodeToString(data, Base64.DEFAULT)
result.success(changeText)
}else if(call.method=="getDecode"){
val data= call.arguments.toString()
val changeText= Base64.decode(data, Base64.DEFAULT)
result.success(String(changeText))
}
}
//###1.핸드폰 종류를 반환하는 메서드 선언
MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL).setMethodCallHandler { call, result ->
if (call.method == "getDeviceInfo") {
val deviceInfo = getDeviceInfo()
result.success(deviceInfo)
}
}
}
private fun getDeviceInfo(): String {
val sb = StringBuilder()
sb.append(Build.DEVICE + "\n")
sb.append(Build.BRAND + "\n")
//sb.append(Build.MODEL + "\n");
return sb.toString()
}
}
'Flutter' 카테고리의 다른 글
플로터 FirebaseAnalytics 이벤트 남기기 (0) | 2021.08.16 |
---|---|
플러터 FireBase 연결하기 (0) | 2021.08.16 |
AnimatedBuilder 사용하기 (0) | 2021.08.13 |
List.generate List<Map<String, dynamic>>==> <List<Todo>> (0) | 2021.08.11 |
내부저장소에 데이타 읽고쓰기 (0) | 2021.08.10 |