在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上的实现)”的主要内容,如果未能解决你的问题,请参考以下文章
使用 Android 模拟器运行 Flutter 代码时出现 JAVA_HOME 错误
Flutter:在构建错误期间调用了 setState() 或 markNeedsBuild()