【发布时间】:2021-03-09 19:41:01
【问题描述】:
我正在尝试对平台频道使用新的(推荐的)方法 Pigeon https://pub.dev/packages/pigeon 我正在尝试获取项目列表,但 pigeon 不允许目前您必须将其包装在另一个类中请参阅https://github.com/flutter/flutter/issues/66446,但是当我这样做时,我得到的列表是动态类型的,而不是我想要的对象的类型这里是为了简洁和隐私,我的配置被剥离了大声笑,首先是我的 messages.dart 文件
class Key {
String displayName;
String description;
}
class Keys {
List<VirtualKey> virtualKeys;
}
运行代码生成器后(再次剥离)
flutter pub run pigeon \
--input pigeons/messages.dart \
--dart_out lib/messages.dart \
--objc_header_out ios/Classes/messages.h \
--objc_source_out ios/Classes/messages.m \
--objc_prefix FLT \
--java_out myApp/pigeon_plugin/Messages.java \
--java_package myApp.pigeon_plugin"
我已经生成了这个
class Keys {
List keys;
// ignore: unused_element
Map<dynamic, dynamic> _toMap() {
final Map<dynamic, dynamic> pigeonMap = <dynamic, dynamic>{};
pigeonMap['keys'] = keys;
return pigeonMap;
}
// ignore: unused_element
static Keys _fromMap(Map<dynamic, dynamic> pigeonMap) {
final Keys result = Keys();
result.keys = pigeonMap['keys'];
return result;
}
}
返回包含在数组列表中的此类的方法(pidgeon 问题https://github.com/flutter/flutter/issues/66453)再次抱歉因隐私问题尝试编辑它时出现任何错误
override fun getKeys(): Messages.Keys {
return Messages.Keys().apply {
this.keys = arrayListOf(getAllKeys())
}
}
fun getAllKeys(): List<Key> {
return KeyManager().allKeys
}
因此,考虑到这一切,它应该给我一个 Keys 对象,其中包含一个 Key 列表,但是当我尝试使用它时,我得到一个带有动态列表的 Keys 对象,请参见下图,这是预期的行为还是存在解决这个问题的方法?非常感谢
【问题讨论】:
标签: flutter flutter-dependencies