Java 如何从方法通道检索模型?
我想通过方法通道从本机Android检索一个模型。我当前的代码:Java 如何从方法通道检索模型?,java,android,flutter,Java,Android,Flutter,我想通过方法通道从本机Android检索一个模型。我当前的代码: new MethodChannel(getFlutterView(), CHANNEL).setMethodCallHandler( new MethodCallHandler() { @Override public void onMethodCall(MethodCall methodCall, Res
new MethodChannel(getFlutterView(), CHANNEL).setMethodCallHandler(
new MethodCallHandler() {
@Override
public void onMethodCall(MethodCall methodCall, Result result) {
if (methodCall.method.equals("getModel")) {
NewModel model = new NewModel();
model.id = 1;
model.title = "Title is here!";
result.success(model);
}
}
}
);
这是我的NewModel
:
class NewModel {
public int id;
public String title;
}
在颤振中,我使用相同的模型,并尝试使用以下代码获得响应:
NewModel response = await platformMethodChannel.invokeMethod('getModel');
以下是错误:
E/MethodChannel#com.methodchannel/test(25656): at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:233)
E/MethodChannel#com.methodchannel/test(25656): at io.flutter.embedding.engine.dart.DartMessenger.handleMessageFromDart(DartMessenger.java:85)
E/MethodChannel#com.methodchannel/test(25656): at io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(FlutterJNI.java:692)
E/MethodChannel#com.methodchannel/test(25656): at android.os.MessageQueue.nativePollOnce(Native Method)
E/MethodChannel#com.methodchannel/test(25656): at android.os.MessageQueue.next(MessageQueue.java:326)
E/MethodChannel#com.methodchannel/test(25656): at android.os.Looper.loop(Looper.java:183)
E/MethodChannel#com.methodchannel/test(25656): at android.app.ActivityThread.main(ActivityThread.java:7211)
E/MethodChannel#com.methodchannel/test(25656): at java.lang.reflect.Method.invoke(Native Method)
E/MethodChannel#com.methodchannel/test(25656): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)
E/MethodChannel#com.methodchannel/test(25656): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:975)
我怎样才能解决这个问题
注意:我可以成功获得前面在中询问的唯一
字符串
响应和字符串列表
响应。但是我买不到模型。因此,这不是一个重复的问题。您可以将模型转换为JSON。然后可以将JSON转换为模型
首先,您需要在Java
模型中添加toString()
方法,如下所示:
class NewModel {
public int id;
public String title;
@Override
public String toString() {
return "{\"id\": "+id+",\"title\": \""+ title+"\"}";
}
}
new MethodChannel(getFlutterView(), CHANNEL).setMethodCallHandler(
new MethodCallHandler() {
@Override
public void onMethodCall(MethodCall methodCall, Result result) {
if (methodCall.method.equals("getModel")) {
NewModel model = new NewModel();
model.id = 1;
model.title = "Title is here!";
result.success(model.toString()); // In here!
}
}
}
);
然后,您可以将模型转换为String
,如下所示:
class NewModel {
public int id;
public String title;
@Override
public String toString() {
return "{\"id\": "+id+",\"title\": \""+ title+"\"}";
}
}
new MethodChannel(getFlutterView(), CHANNEL).setMethodCallHandler(
new MethodCallHandler() {
@Override
public void onMethodCall(MethodCall methodCall, Result result) {
if (methodCall.method.equals("getModel")) {
NewModel model = new NewModel();
model.id = 1;
model.title = "Title is here!";
result.success(model.toString()); // In here!
}
}
}
);
您确定正在调用颤振中右侧
methodChannel
的方法吗?是。我可以得到一个字符串值。