<p>MainActivity.kt (Kotlin)</p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">package (your.app)

import android.content.res.Configuration
import android.os.Bundle
import android.os.PersistableBundle
import androidx.annotation.NonNull
import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugins.GeneratedPluginRegistrant

import io.flutter.embedding.android.FlutterFragment
import io.flutter.plugin.common.MethodCall
import io.flutter.plugin.common.MethodChannel

import io.flutter.plugin.common.MethodChannel.MethodCallHandler
import io.flutter.plugin.common.MethodChannel.Result

import io.flutter.plugin.platform.PlatformViewsController


class MainActivity: FlutterActivity() {
 override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
 GeneratedPluginRegistrant.registerWith(flutterEngine)

 MethodChannel(flutterEngine.dartExecutor, CHANNEL).setMethodCallHandler { methodCall, result ->
 val args = methodCall.arguments
 when (methodCall.method) {
 "method1" -> {
 val number = 10
 result.success(number)
 }
 }
 }
 }

 companion object {
 private val CHANNEL = "com.your.app.flutter/method1"
 }

}</pre>



<p>Dart</p>



<pre class="EnlighterJSRAW" data-enlighter-language="js" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">static const platform = const MethodChannel('com.your.app.flutter/method1');

Future<;void> _Method1() async{
 int _number;
 try {
 final int result = await platform.invokeMethod('method1');
 _number = result;

 setState(() {
 number = _number;
 });

 } on PlatformException catch (e)
 {
 setState(() {
 number = -1;
 });
 }
}

int number;

Widget ShowNumber()
{
 Text(number.toString());
}</pre>



<p>_Method1() ãå¼ã³åºã㨠Kotlinå´ã®method1 ->; {} ãå®è¡ãããçµæã Flutterå´ã® result ã«æ»ãã¾ãã</p>



<p>String testString = &#8220;abc&#8221;;<br>platform.invokeMethod(&#8216;method1&#8217;, testString); ã§testStringã弿°ã«ã§ãã¾ãã<br>Kotlinå´ã® methodCall.arguments ã§å¼æ°ãåå¾ã§ãã¾ãã</p>



<h3 class="wp-block-heading">io.flutter.app.FlutterActivity ã® FlutterActivity ã«ã¯ FlutterEngine ãåå¨ããªãã®ã§GeneratedPluginRegistrant.registerWith(this) ã§ã¯registã§ãã¾ãããã¾ãMethodCall ã® flutterView ã®ä»£ãã(java ã§ã¯ getFlutterView() )ã« flutterEngine.dartExecutor ã使ç¨ãã¾ãã</h3>



<p><del>2019-12-05ã®æç¹ã§ app/build.gradle å ã§ Cannot resolve symbol &#8216;GradleException&#8217; ããMainActivity.kt ã§ Unresolved reference: NonNull ããããã赤åã§è¡¨ç¤ºããã¾ãã2019-12-07ã®Android Studio ã¢ãããã¼ãã¨Flutter Pluginã®ã¢ãããã¼ãã§è¡¨ç¤ºãããªããªã£ãããã§ãã</del></p>



<figure class="wp-block-embed is-type-link is-provider-setokynet-blog-wordpress-com"><div class="wp-block-embed__wrapper">
<a href="https://setokynet.wordpress.com/2019/12/14/gradleexception-androidx-annotation-nonnull/?preview_id=2633&#038;preview_nonce=a54d265f2f&#038;post_format=standard&#038;_thumbnail_id=-1&#038;preview=true">GradleException, androidx.annotation.NonNull</a>
</div><figcaption>Kotlin Complier ã® Kotlin JVM Version ã 1.6 ãã 1.8 ã«å¤æ´ããã¨ããã¨ã©ã¼ããªããªãã¾ããã</figcaption></figure>



<p>ãã¡ãã®ãµã¤ãã®æ å ±ãåèã«ãªãã¾ããã</p>



<p><a href="https://github.com/flutter/flutter/issues/41102">https://github.com/flutter/flutter/issues/41102</a><br>https://qiita.com/tasogarei/items/bf3761139d46c43d5896<br>https://qiita.com/unsoluble_sugar/items/ae42b5faf52a491f6470<br>https://flutter.keicode.com/basics/method-channel-java.php</p>

- 6年 ago
kawano
Categories:
未分類
Call Kotlin method from Flutter(FlutterからKotlinのコード内のメソッドを呼び出す)
Tags: configureFlutterEngineDartFlutterFlutterEngineflutterEngine.dartExecutorFlutterFragmentFuture<void>GeneratedPluginRegistrantinvokeMethodio.flutter.embedding.android.FlutterActivityio.flutter.embedding.engine.FlutterEngineio.flutter.plugin.common.MethodCallio.flutter.plugin.common.MethodChannelKotlinMethodChannel
Related Post
-
メンテナンス
2024年10月1日午前10時…
-
サイトの更新
Wordpress 5.6.1…
-
メンテナンスについて(2021-03-28)
2021年3月28日の午前9時…