可参考 “Flutter 创建plugin package插件” 条目
1 2 3 4
| import 'package:flutter/services.dart'; static const platform = const MethodChannel('samples.alois.test_channel'); String result = await platform.invokeMethod('action1',['arg0',2]);
|
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| class MainActivity : FlutterActivity() { private val channelName = "samples.alois.test_channel"
private val customRequestCode = 1032 private var myResult: MethodChannel.Result? = null
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { window.statusBarColor = 0 } GeneratedPluginRegistrant.registerWith(this) MethodChannel(flutterView, channelName).setMethodCallHandler { methodCall, result -> myResult = result if (methodCall.method == "action1") { try { val args = methodCall.arguments<Any>() as List<Any> startActivity(args[0] as String, args[1] as Int) } catch (e: Exception) { }
} else { result.notImplemented() } }
}
private fun startActivity( arg0:String, arg1:Int) { val intent = Intent(this, TempActivity::class.java) intent.putExtra("startKey0",arg0) intent.putExtra("startKey1", arg1) this.startActivityForResult(intent, customRequestCode) }
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data)
if (requestCode == customRequestCode && resultCode == Activity.RESULT_OK) { val value = data?.getStringExtra("finishKey") ?: "" myResult?.success(value) } } }
|