Класс Struct
Супертип всех типов структур FFI.
Типы структур FFI должны наследовать этот класс и объявлять поля, соответствующие базовой нативной структуре.
Объявления полей в объявлении подкласса Struct автоматически получают реализации методов установки и получения, которые обращаются к полю нативной структуры в памяти.
Все объявления полей в объявлении подкласса Struct должны иметь тип int или double и быть аннотированы типом NativeType, представляющим нативный тип, либо иметь тип Pointer. Например:
typedef struct {
int a;
float b;
void* c;
} my_struct; class MyStruct extends Struct {
@Int32()
external int a;
@Float()
external double b;
external Pointer<Void> c;
} Все объявления полей в объявлении подкласса Struct должны быть помечены external. Нельзя создавать экземпляры класса — можно лишь указывать на существующую нативную память, поэтому нет памяти, в которой можно было бы хранить ненативные поля. Внешние поля также нельзя инициализировать конструкторами, поскольку объект Dart не создаётся.
Экземпляры подкласса Struct имеют ссылочную семантику и размещаются в нативной памяти или типизированных данных. Их можно выделить в памяти, загрузить из Pointer или создать с помощью вызовов FFI либо обратных вызовов. Их нельзя создать с помощью генерирующего конструктора.
- Наследование
-
- Object
- NativeType
- Struct
- Аннотации
-
- @Since('2.12')
Конструкторы
- Struct()
- Создаёт ссылку на nullptr.
Свойства
- hashCode → int только для чтенияунаследовано
- Хеш-код этого объекта.
- runtimeType → Type только для чтенияунаследовано
- Представление фактического типа объекта во время выполнения.
Методы
- noSuchMethod(
Invocation invocation) → dynamic унаследовано - Вызывается при обращении к несуществующему методу или свойству.
- toString(
) → String унаследовано - Строковое представление этого объекта.
Операторы
- operator ==(
Object other) → bool унаследовано - Оператор равенства.
© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.19.6/dart-ffi/Struct-class.html