Flutter 在Dart中将int投射到Uint8
我使用的是Flutter 在Dart中将int投射到Uint8,flutter,dart,dart-ffi,Flutter,Dart,Dart Ffi,我使用的是ffi和tyed_数据Dart库,这行代码一直出错 Uint8 START_OF_HEADER = 1 as Uint8; 我的错误: 类型“int”不是类型转换中类型“Uint8”的子类型 我做错了什么?另一件奇怪的事情是,我可以使用这些库编写这行代码,我的IDE将编译并不会抛出错误,直到您使用这行代码。我正在使用Intellij版本2019.2.4您正在尝试在Dart中创建Uint8的实例,但这是不可能的-该类型只是一个标记 /// [Uint8] is not constru
ffi
和tyed_数据
Dart库,这行代码一直出错
Uint8 START_OF_HEADER = 1 as Uint8;
我的错误:
类型“int”不是类型转换中类型“Uint8”的子类型
我做错了什么?另一件奇怪的事情是,我可以使用这些库编写这行代码,我的IDE将编译并不会抛出错误,直到您使用这行代码。我正在使用Intellij版本2019.2.4您正在尝试在Dart中创建
Uint8
的实例,但这是不可能的-该类型只是一个标记
/// [Uint8] is not constructible in the Dart code and serves purely as marker in
/// type signatures.
例如,您将在typedefs中使用这些标记来描述一个C函数,它接受两个带符号的32位整数并返回带符号的32位整数:
typedef native_sum_func = Int32 Function(Int32 a, Int32 b);
这将与一个类似于省道的typedef配对
typedef NativeSum = int Function(int a, int b);
Dart ffi负责将a
和b
从Dart int转换为32位C int,并将返回值转换回Dart int
注意,您可以使用package:ffi
中的allocate
方法创建指向这些C类型的指针,例如pointer