#flutter #flutter-dependencies
#flutter #flutter-зависимости
Вопрос:
Я пытаюсь использовать новый (рекомендуемый) подход к каналам платформы Pigeon https://pub.dev/packages/pigeon Я пытаюсь получить список элементов но pigeon не позволяет этого в настоящее время вы должны перенести его в другой класс см. https://github.com/flutter/flutter/issues/66446 , но когда я делаю это, список, который я получаю, имеет тип dynamic, а нетип объекта, который я хочу здесь, — это моя конфигурация, урезанная для краткости и конфиденциальности, сначала мой файл 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 resu<
}
}
метод, который возвращает этот класс, завернутый в список массивов (проблема с 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, который содержит список ключей, но вместо этого, когда я пытаюсь его использовать, я получаю объект Keys со списком dynamic см. Изображение ниже, это ожидаемое поведение или есть способ это исправить? большое спасибо
Ответ №1:
Это связано с тем, что Pigeon еще не поддерживает дженерики