彩虹下載站

首頁(yè) > 文章資訊 > 最新資訊

Dart 2.12已發(fā)布 具有空安全性和C互操作性

作者:佚名 來(lái)源:彩虹下載站 時(shí)間:2021-03-09

空安全空安全是一項(xiàng)非常出色的語(yǔ)言功能。它迫使您考慮變量是否會(huì)為空,并顯式處理潛在的空情況,同時(shí)還可以保證特定的變量永遠(yuǎn)不會(huì)為空。在Dart 2.12中,現(xiàn)在完全支持null安全,其語(yǔ)法類似于Swift和Kotlin。甚至還有智能廣播,如果Dart確信正常可為空的變量不能為null,它將隱式將其強(qiáng)制轉(zhuǎn)

Dart 2.12已發(fā)布 具有空安全性和C互操作性

空安全

空安全是一項(xiàng)非常出色的語(yǔ)言功能。它迫使您考慮變量是否會(huì)為空,并顯式處理潛在的空情況,同時(shí)還可以保證特定的變量永遠(yuǎn)不會(huì)為空。

 

在Dart 2.12中,現(xiàn)在完全支持null安全,其語(yǔ)法類似于Swift和Kotlin。甚至還有智能廣播,如果Dart確信正??蔀榭盏淖兞坎荒転閚ull,它將隱式將其強(qiáng)制轉(zhuǎn)換為非可為空的形式。

由于null安全是一項(xiàng)(非常)重大的更改,因此該功能是可選的。如果您更新到Dart 2.12,則編譯不會(huì)中斷,也不必花費(fèi)數(shù)小時(shí)向所有內(nèi)容添加可空性提示。如果您的項(xiàng)目還不是null安全的,那么您甚至可以使用null安全的依賴項(xiàng)。

d

一旦確定要遷移,就可以使用內(nèi)置的遷移工具(dart migration )和/或遷移指南進(jìn)行所有設(shè)置。

Dart 2.12已發(fā)布 具有空安全性和C互操作性

此外,盡管Dart 2.12中包含了零安全,但是如果您創(chuàng)建新的Flutter或Dart項(xiàng)目,則不會(huì)立即啟用零安全。您需要運(yùn)行遷移工具或使用指南來(lái)啟用它。

 

外部功能接口

盡管Dart(和Flutter的重點(diǎn))是完全跨平臺(tái)的兼容性,但是仍然有些事情需要本地完成。為了簡(jiǎn)化本機(jī)操作,Dart具有外部功能接口或FFI。FFI使您可以與Dart中的C代碼進(jìn)行交互,而不必訴諸基于字符串的怪異API調(diào)用或其他笨拙的互操作性方法。

 

借助Dart 2.12,F(xiàn)FI現(xiàn)在很穩(wěn)定,這意味著它已準(zhǔn)備好用于生產(chǎn)項(xiàng)目,并且功能齊全。

 

考慮到這一點(diǎn),F(xiàn)FI進(jìn)行了一些更改,包括一些重大更改。

 

此版本的重點(diǎn)主要在于如何將結(jié)構(gòu)與Dart和C一起使用。其中之一,您現(xiàn)在可以按引用和值在C代碼中傳遞結(jié)構(gòu),而以前僅支持引用。另一個(gè)重要功能是對(duì)嵌套結(jié)構(gòu)的支持,此版本之前沒(méi)有提供。

 

現(xiàn)在進(jìn)行重大更改。如果您使用的是FFI,則可能需要更新代碼才能使用2.12。使用此版本的FFI,您將無(wú)法再創(chuàng)建空結(jié)構(gòu)。如果由于某種原因需要一個(gè),則可以使用新的“ Opaque”類型。FFI內(nèi)置功能的工作方式也有一些更改,您可以在此處閱讀。

Dart 2.12已發(fā)布 具有空安全性和C互操作性

最后,還有一個(gè)用于FFI的新程序包,可用于從現(xiàn)有C頭文件中生成FFI包裝器,稱為ffigen。如果您需要使用大量的C代碼以及許多API方法,這將非常有用。即使您擁有的C代碼量很少,這也是一個(gè)不錯(cuò)的便利功能。