Dart中Pointer.elementAt已废弃,如何改用+运算符改写代码?
解决Pointer.elementAt被弃用的替代写法
在Dart的ffi库中,Pointer.elementAt()已被弃用,官方推荐使用+运算符替代。针对你的代码,只需将ptr.elementAt(i)替换为ptr + i即可,修正后的完整代码如下:
Pointer<Double> doubleListToPointer(List<double> list) { final ptr = malloc.allocate<Double>(sizeOf<Double>() * list.length); for (var i = 0; i < list.length; i++) { (ptr + i).value = list[i]; } return ptr; }
补充说明:
Pointer的+运算符会自动根据当前指针指向的类型(这里是Double)计算偏移量,和elementAt(i)的行为完全一致,无需手动处理sizeOf<Double>()的乘法,底层已自动完成类型对应的字节偏移计算。- 需给
ptr + i加上括号,确保先计算出偏移后的指针,再访问其value属性。
内容的提问来源于stack exchange,提问作者Karl
相关产品推荐
相关产品推荐

