Метод FlutterChannel invokeMethod выдает исключение MissingPluginException в Android

Я пытаюсь разработать конкретный код платформы в моем проекте Flutter. Я использую шаги на веб-сайте флаттера, и я написал метод для проверки функциональности.

Java-код:

import android.os.Bundle;
import io.flutter.app.FlutterActivity;
import io.flutter.plugins.GeneratedPluginRegistrant;
import io.flutter.plugin.common.MethodCall;
import io.flutter.plugin.common.MethodChannel;
import io.flutter.plugin.common.MethodChannel.Result;
import io.flutter.plugin.common.MethodChannel.MethodCallHandler;

public class MainActivity extends FlutterActivity {
  private static final String CHANNEL = "hyperpay";

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    GeneratedPluginRegistrant.registerWith(this);

    new MethodChannel(getFlutterView(), CHANNEL).setMethodCallHandler(
      new MethodCallHandler() {
        @Override
        public void onMethodCall(MethodCall call, Result result) {
          // Note: this method is invoked on the main thread.
          if (call.method.equals("getPlatformVersion")) {
            result.success("Android " + android.os.Build.VERSION.RELEASE);
          } else {
            result.notImplemented();
          }
        }
      }
    );      
  }
}

Код дротика:

Future<void> setPlatformVersionState() async {
    String platformVersion;
    const channel = MethodChannel('hyperpay');
    try {
      final platformVersion = await channel.invokeMethod('getPlatformVersion');
      setState(() {
        _platformVersion = platformVersion;
      });
    } on PlatformException catch (error) {
      setState(() {
        _platformVersion = null;
      });
    }
  }

В IOS у меня не было проблем, и код был успешно выполнен. Но в Android я получаю следующее исключение:

Exception has occurred.
MissingPluginException (MissingPluginException(No implementation found for method getPlatformVersion on channel hyperpay))

1 ответ

Я решил проблему.

Java-код должен быть в:

android/app/src/main/java/com/**example**/app_name/MainActivity.java

Но я написал в нем:

android/app/src/main/java/com/**username**/app_name/MainActivity.java

Поэтому, когда был вызван invokemethod, он не нашел ни одного канала / метода в MainActivity.java.

Другие вопросы по тегам