Ich habe die native Android-Methode in meiner Flatter-App verwendet und dabei die Dokumentation verwendet, in der die Verwendung angegeben ist
MethodChannel(flutterView, CHANNEL).setMethodCallHandler...
Nach dem Aufrüsten des Flatterns ist die MethodChannel
Funktion jedoch nicht erforderlich flutterView
und es gibt keine flutterView
mehr.
can not resolve method getFlutterView()
Ich denke, es sollte ein neues Tutorial zum Erstellen eines Kanals geben
Stattdessen braucht es einige, von BinaryMessenger
denen ich nicht weiß, was ich stattdessen geben soll.
Dies ist der alte Code, der nicht mehr funktioniert:
import io.flutter.app.FlutterActivity;
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;
public class MainActivity extends FlutterActivity {
private static final String CHANNEL = "samples.flutter.dev/battery";
@Override
public 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.
// TODO
}
});
}
quelle
Entferne das
import io.flutter.embedding.android.FlutterActivity;
Fügen Sie diesen Import hinzu
io.flutter.app.FlutterActivity;
Arbeitete für mich
quelle
Fügen Sie diese Methode einfach Ihrer Klasse hinzu:
Und dann ersetzen Sie optional alle (Refactor> Rename) "getFlutterView" durch "getBinaryMessenger", um einen besser lesbaren Code zu erhalten:
quelle
Ich habe tagelang versucht herauszufinden, wie ich meiner vorhandenen Android-App eine Flutter-Benutzeroberfläche hinzufügen kann. Die größte Herausforderung bestand darin, den MethodChannel dazu zu bringen, mit FlutterActivity zu arbeiten, das von MainActivity aufgerufen wird. Ich weiß, dass dies etwas anders ist als die hier gestellte Frage, aber dieser Beitrag wurde zurückgegeben, als ich nach 'Android FlutterActivity MethodChannel' gesucht habe. Nachdem ich viele Ressourcen durchgesehen hatte, fand ich hier endlich meine Lösung: https://github.com/flutter/samples/tree/master/add_to_app/android_using_plugin/app/src/main/java/dev/flutter/ Beispiel / androidusingplugin
Zunächst habe ich in Android Studio bei geöffneter vorhandener App auf Datei, Neu, Neues Modul, Flattermodul getippt. Ich habe einen Fehler erhalten und musste manuelle Schritte ausführen.
Mein Ziel ist es, FlutterActivity (öffnet main.dart im flutter_module) in MainActivity - onCreate zu starten und dann Flutter-Bildschirme zu entwickeln, die so viel nativen Flutter-Code wie möglich nutzen, mit begrenzten Plattformaufrufen unter Verwendung des MethodChannel. Während ich Ersatz-Flutter-Code entwickle, werde ich den vorhandenen Android-Code weiterhin auskommentieren.
Folgendes hat bei mir endlich funktioniert:
../App_Project/Android/Existing_Android_App/settings.gradle
../App_Project/Android/Existing_Android_App/app/build.gradle
../App_Project/Android/Existing_Android_App/app/src/main/AndroidManifest.xml
../App_Project/Android/Existing_Android_App/app/src/main/java/com/existing_android_app/MainActivity.java
../App_Project/flutter_module/lib/home_page.dart
quelle