я использовал родной метод Android в моем приложении флаттера, используя документацию, в которой говорится об использовании
MethodChannel(flutterView, CHANNEL).setMethodCallHandler...
но после обновления флаттера эта MethodChannel
функция не требуется flutterView
и больше flutterView
нет.
can not resolve method getFlutterView()
я думаю, что должен быть новый учебник для создания канала
вместо этого нужны некоторые, BinaryMessenger
которые я не знаю, что вместо этого дать.
это старый код, который больше не работает:
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
Махмуд Бх
источник
источник
Удали это
import io.flutter.embedding.android.FlutterActivity;
Добавить этот импорт
io.flutter.app.FlutterActivity;
Работал для меня
источник
Просто добавьте этот метод в ваш класс:
А затем при необходимости замените все (Refactor> Rename) «getFlutterView» на «getBinaryMessenger», чтобы получить более читаемый код:
источник
Я потратил несколько дней, пытаясь понять, как добавить пользовательский интерфейс Flutter в мое существующее приложение для Android. Самой большой проблемой было заставить MethodChannel работать с FlutterActivity, вызываемым из MainActivity. Я знаю, что это немного отличается от вопроса, заданного здесь, но этот пост был возвращен, когда я выполнил поиск по «Android FlutterActivity MethodChannel». Пройдя много ресурсов о том, как это сделать, я наконец нашел свое решение здесь: https://github.com/flutter/samples/tree/master/add_to_app/android_using_plugin/app/src/main/java/dev/flutter/ пример / androidusingplugin
Первоначально в Android Studio с открытым существующим приложением я коснулся «Файл», «Новый», «Новый модуль», «Модуль флаттера». Я получил ошибку и должен был выполнить ручные действия.
Моя цель - запустить FlutterActivity (открывает main.dart в flutter_module) в MainActivity - onCreate, затем разработать «экраны» Flutter, использующие как можно больше собственного кода Flutter, с ограниченными вызовами платформы с использованием MethodChannel. Разрабатывая заменяющий код Flutter, я продолжу комментировать существующий код Android.
Вот что наконец сработало для меня:
../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
источник