在flutter中调用java代码错误“MissingPluginException(没有找到方法Printy在通道com.flutter.epic/epic上的实现)”

Posted

技术标签:

【中文标题】在flutter中调用java代码错误“MissingPluginException(没有找到方法Printy在通道com.flutter.epic/epic上的实现)”【英文标题】:call java code in the flutter ERROR"MissingPluginException(No implementation found for method Printy on channel com.flutter.epic/epic)" 【发布时间】:2021-11-16 15:10:05 【问题描述】:

flutter中如何调用java代码


医生总结(要查看所有详细信息,请运行 flutter doctor -v):

[√] Flutter (Channel stable, 2.5.0, on Microsoft Windows [Version 10.0.19042.1237], locale en-US)

[√] android 工具链 - 为 Android 设备开发(Android SDK 版本 31.0.0)

[√] Chrome - 为网络开发

[√]Android Studio(2020.3版)

[√] IntelliJ IDEA 终极版(2020.3 版)

[√] VS 代码(版本 1.60.1)

[√] 已连接设备(3 个可用)

• 未发现任何问题!


颤振代码

class MyHomePage extends StatefulWidget 
  const MyHomePage(Key? key) : super(key: key);

  @override
  _MyHomePageState createState() => _MyHomePageState();


class _MyHomePageState extends State<MyHomePage> 
  static const platform = MethodChannel("com.flutter.epic/epic");


  @override
  Widget build(BuildContext context) 
    return Center(
      child: ElevatedButton(
        child: Text('Get Battery Level'),
        onPressed: () 
          Printy();
        ,
      ),
    );
  

  void Printy() async 
    String value = "fail";

    try 
      value = await platform.invokeMethod("Printy");
     catch(e) 
      print(e);
    

    print(value);
  

Java 代码

public class MainActivity extends FlutterActivity 
    private static final String CHANNEL = "com.flutter.epic/epic";

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        GeneratedPluginRegistrant.registerWith(new FlutterEngine(this));

        new MethodChannel(getFlutterEngine().getDartExecutor().getBinaryMessenger(),CHANNEL).setMethodCallHandler(new MethodChannel.MethodCallHandler() 
            @Override
            public void onMethodCall(@NonNull MethodCall call, @NonNull MethodChannel.Result result) 
                if (call.method.equals("Printy")) 
                    result.success("success!!!");
                
            
        );
    

当我点击按钮时返回:


I/flutter (12941):MissingPluginException(在通道 com.flutter.epic/epic 上找不到方法 Printy 的实现)

I/flutter (12941):失败


我也一步一步尝试这个“https://flutter.dev/docs/development/platform-integration/platform-channels”,但它在我的电脑上不起作用。

flutter中如何调用java代码

请帮忙

【问题讨论】:

【参考方案1】:

语法在任何地方都没有错。 Kotlin 是默认语言,除非您明确表示为 Java。我猜您在创建应用程序时没有为您设置 Java。如果是这种情况,那么您可以按照 Sheruan Bashar 的 answer 将您的项目转换为 Java。

【讨论】:

以上是关于在flutter中调用java代码错误“MissingPluginException(没有找到方法Printy在通道com.flutter.epic/epic上的实现)”的主要内容,如果未能解决你的问题,请参考以下文章

Flutter FCM 后台调用平台具体代码

使用 Android 模拟器运行 Flutter 代码时出现 JAVA_HOME 错误

Flutter:在构建错误期间调用了 setState() 或 markNeedsBuild()

Flutter Xcode:clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)

Flutter:在 null 上调用了方法“[]”

在 deactivate() 中调用 notifyListeners() 会导致错误 - Flutter