Eu estava usando o método Android nativo no meu aplicativo de vibração usando a documentação que dizia uso
MethodChannel(flutterView, CHANNEL).setMethodCallHandler...
mas após a atualização do flutter, a MethodChannel
função não exige flutterView
e não existe flutterView
mais.
can not resolve method getFlutterView()
acho que deveria haver um novo tutorial para criar canal
em vez disso, precisa de alguns BinaryMessenger
que não sei o que dar.
este é o código antigo que não está mais funcionando:
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
fonte
fonte
Tire isto
import io.flutter.embedding.android.FlutterActivity;
Adicione esta importação
io.flutter.app.FlutterActivity;
Trabalhou para mim
fonte
Basta adicionar este método à sua classe:
E, opcionalmente, substitua todos (Refactor> Rename) "getFlutterView" por "getBinaryMessenger" para ter um código mais legível:
fonte
Passei dias tentando descobrir como adicionar uma interface do usuário do Flutter ao meu aplicativo Android existente. O maior desafio foi conseguir que o MethodChannel funcionasse com o FlutterActivity sendo chamado de MainActivity. Sei que isso é um pouco diferente da pergunta feita aqui, mas esta postagem foi retornada quando fiz pesquisas por 'Android FlutterActivity MethodChannel'. Depois de analisar muitos recursos sobre como fazer isso, finalmente encontrei minha solução aqui: https://github.com/flutter/samples/tree/master/add_to_app/android_using_plugin/app/src/main/java/dev/flutter/ example / androidusingplugin
Inicialmente, no Android Studio, com o aplicativo existente aberto, toquei em Arquivo, Novo, Novo módulo, Módulo Flutter. Eu recebi um erro e tive que executar etapas manuais.
Meu objetivo é iniciar o FlutterActivity (abre main.dart no flutter_module) no MainActivity - onCreate e, em seguida, desenvolver 'telas' do Flutter, aproveitando o máximo de código nativo do Flutter possível, com chamadas de plataforma limitadas usando o MethodChannel. À medida que desenvolvo o código Flutter de substituição, continuarei a comentar o código Android existente.
Aqui está o que finalmente funcionou para mim:
../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
fonte