【发布时间】:2020-05-07 22:37:54
【问题描述】:
我正在使用方法通道来调用 Flutter 中特定于平台的代码。 (https://flutter.dev/docs/development/platform-integration/platform-channels?tab=ios-channel-swift-tab#step-3-add-an-android-platform-specific-implementation)
在我的 MainActivity.java 文件中,我有
String methodCall = call.method;
switch (methodCall) {
case "getUser":
User user = new User();
user.setAccessToken("eyJhbGciOiJSUzI1Ni");
user.setUserId("randomName123");
user.setLocation("USA");
Log.d("configureFlutterEngine", "Got a user: " + user.toString());
result.success(user);
break;
user 是 User 的一个实例(所有属性都是字符串)
public class User {
private String accessToken;
private String userId;
private String location
result.success(user) 返回 User 的一个实例。
在我的 /lib/main.dart 文件中,我调用 getUser 方法,该方法路由到我的 Java 类。
/// Signs a user out
Future<void> _getUser() async {
User user;
try {
user = await platform.invokeMethod('getUser');
print("getUser button was pressed");
setState(() {
_user = user;
});
} on PlatformException catch (e) {
print("Failed: '${e.message}'.");
}
}
Dart 中的 User 类是:
class User {
String accessToken;
String userId;
String location;
但是,每当我运行我的代码时,我都会得到:
2020-01-21 13:37:55.065 12149-12149/com.package.name.sample E/MethodChannel#com.package.name/UserSignOn: Failed to handle method call
java.lang.IllegalArgumentException: Unsupported value:
Access Token: eyJhbGciOiJSUzI1Ni
User ID: randomName123
Location: USA
注意:如果我返回一个简单的字符串,而不是 User 对象,这可以正常工作,所以我认为这与将 POJO 序列化和反序列化为 Dart 对象有关
【问题讨论】:
-
这个问题有进展吗?