3

からへの通信をPlatformChannels試みています。フラッタープラットフォームチャネルのドキュメントで説明されていることを実際に実行しようとしていますが、反対方向です:KotlinFlutter

フラッター プラットフォームのチャンネル ドキュメント

アイデアは、MainActivity.kt クラスの configureFlutterEngine 関数から Flutter 関数を呼び出すことです。

そのために、Flutter 側で main.dart (Flutter のデフォルトの例) を実行します。

   class _MyHomePageState extends State<MyHomePage> {

  static const platformChannel = const MethodChannel('myTestChannel');


  @override
  Widget build(BuildContext context) {

    platformChannel.setMethodCallHandler((call){
      print("Hello from ${call.method}");
      return null;
    });


    //
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          //
          //
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'You have pushed the button this many times:',
            ),
          ],
        ),
      ),
    );
  }
}

Kotlin 側からは、MainActivity.ktでフラッター コールバック メソッドを呼び出そうとします。

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

        val channel = MethodChannel(flutterEngine.dartExecutor.binaryMessenger, "myTestChannel")

        channel.invokeMethod("myTestChannel","the argument from Android")
}

しかし、コードを実行しても Flutter 側には何も出力されません。クラッシュも例外もありません。

4

2 に答える 2