web-dev-qa-db-ja.com

FlutterからNativeにメッセージを渡す方法は?

特定のAPI /ハードウェアコンポーネントとやり取りする必要がある場合、FlutterからAndroid/Nativeコードに情報をどのように渡しますか?

他の方法で情報を送信できるイベントチャネルや、コールバックに似たものはありますか?

  1. platform_channel ドキュメンテーションは、「メソッド呼び出しを逆方向に送信することもでき、プラットフォームはDartに実装されたメソッドのクライアントとして機能します。これの具体例は quick_actionsプラグイン 。 "この例では、ネイティブ側がFlutterからメッセージをどのように受信しているかわかりません。
  2. BasicMessageChannel ’s send()メソッドを使用して、「指定されたメッセージをこのチャネルのプラットフォームプラグインに送信する」ことができます。誰でもこれの簡単な実装例を提供できますか?
18
Adam Hurwitz

これは、簡単な実装の紹介です。

  1. 文字列値をflutterからAndroid codeに渡す
  2. Android flutterへのコードから応答を取得する

コードは次の例に基づいています: https://flutter.io/platform-channels/#codec

1.文字列値「text」を渡す:

String text = "whatever";

Future<Null> _getBatteryLevel(text) async {
String batteryLevel;
try {
  final String result = await platform.invokeMethod('getBatteryLevel',{"text":text}); 
  batteryLevel = 'Battery level at $result % .';
} on PlatformException catch (e) {
  batteryLevel = "Failed to get battery level: '${e.message}'.";
}

setState(() {
  _batteryLevel = batteryLevel;
});

}

2. RandomFunction()の後に応答「batterylevel」を取得する

 public void onMethodCall(MethodCall call, MethodChannel.Result result) {
                    if (call.method.equals("getBatteryLevel")) {

                        text = call.argument("text");
                        String batteryLevel = RandomFunction(text);

                        if (batteryLevel != null) {
                            result.success(batteryLevel);
                        } else {
                            result.error("UNAVAILABLE", "Battery level not available.", null);
                        }
                    } else {
                        result.notImplemented();
                    }
                }

お役に立てれば!

28
UpaJah

はい、flutterには EventChannel クラスがあり、これはまさにあなたが探しているものです。

ここ は、MethodChannelおよびEventChannelの実装方法を示す例です。そして this 中記事では、EventChannelをflutterに実装する方法を示しています。

お役に立てば幸いです!

5
Hemanth Raj

目的C

call.arguments [@ "parameter"]

1
Álvaro Agüero