【问题标题】:Flutter Pigeon package returns a list of dynamicFlutter Pigeon 包返回动态列表
【发布时间】: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


    【解决方案1】:

    这是因为 Pigeon 还不支持泛型

    https://github.com/flutter/flutter/issues/63468

    【讨论】:

      猜你喜欢
      • 2022-12-18
      • 2021-09-15
      • 2019-04-04
      • 1970-01-01
      • 2020-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-12
      相关资源
      最近更新 更多