Estaba usando el método nativo de Android en mi aplicación flutter usando documentación que decía uso
MethodChannel(flutterView, CHANNEL).setMethodCallHandler...
pero después de actualizar flutter, la MethodChannel
función no requiere flutterView
y ya no existe flutterView
.
can not resolve method getFlutterView()
Creo que debería haber un nuevo tutorial para crear canales
en cambio necesita algo BinaryMessenger
que no sé qué regalar.
Este es el código antiguo que ya no funciona:
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
}
});
}
android
flutter
flutter-channel
Mahmood Bkh
fuente
fuente
Quita esto
import io.flutter.embedding.android.FlutterActivity;
Agregar esta importación
io.flutter.app.FlutterActivity;
Trabajó para mi
fuente
Simplemente agregue este método a su clase:
Y luego opcionalmente reemplace todos (Refactor> Rename) "getFlutterView" a "getBinaryMessenger" para tener un código más legible:
fuente
Pasé días tratando de descubrir cómo agregar una interfaz de usuario Flutter a mi aplicación Android existente. El mayor desafío fue lograr que MethodChannel funcionara con FlutterActivity desde MainActivity. Sé que esto es un poco diferente a la pregunta que se hace aquí, pero esta publicación fue devuelta cuando busqué 'Android FlutterActivity MethodChannel'. Después de analizar muchos recursos sobre cómo hacer esto, finalmente encontré mi solución aquí: https://github.com/flutter/samples/tree/master/add_to_app/android_using_plugin/app/src/main/java/dev/flutter/ ejemplo / androidusingplugin
Inicialmente, en Android Studio, con la aplicación existente abierta, hice clic en Archivo, Nuevo, Nuevo Módulo, Módulo Flutter. Recibí un error y tuve que realizar pasos manuales.
Mi objetivo es lanzar FlutterActivity (abre main.dart en flutter_module) en MainActivity - onCreate, luego desarrollar las 'pantallas' de Flutter aprovechando la mayor cantidad posible de código nativo de Flutter, con llamadas limitadas de la plataforma utilizando MethodChannel. A medida que desarrolle el código de reemplazo de Flutter, continuaré comentando el código de Android existente.
Esto es lo que finalmente funcionó para mí:
../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
fuente