簡體   English   中英

轉換整數? 撲通撲通

[英]convert int? to int in flutter

我明白了嗎? 來自 SharedPreferences 類的變量,帶有 getInt() 方法。 我必須把這個int? 作為 Duration Object 的參數,但我需要一個 int。 我能做些什么? 這是代碼:

int? duration = ParametersHelper.getDuration();
Future.delayed(const Duration(milliseconds: duration));

這是 ParametersHelper 中的 getDuration() 方法:

static int? getDuration() {
    return _pref.getInt("Duration");
  }

謝謝!

您可以通過明確告訴 dart 編譯器來覆蓋此行為,盡管該變量可以為空,但我保證它不為空,但在使用它時要小心。

int duration = ParametersHelper.getDuration()!; // using the ! operator
Future.delayed(const Duration(milliseconds: duration));

第二個選項是使用 ?? 運算符,這意味着如果值為 null,則分配另一個值

int duration = ParametersHelper.getDuration() ?? 2; // if null assign 2
Future.delayed(const Duration(milliseconds: duration));

你可以這樣寫:

int? duration = ParametersHelper.getDuration();
Future.delayed( Duration(milliseconds: duration!));

因為您可以編寫null assertion operator (!)

'int? 表示該值可以是 int 或 null。 SharedPreferences 返回“int?”

_pref.getInt("Duration")

因為如果沒有存儲鍵“持續時間”的值

_pref.setInt("Duration", 4)

在這種情況下,它將返回 null。

如果您確定在調用 getDuration() 函數之前在 SharedPreferences 中名為“Duration”的鍵中存儲了一個 int,那么您可以使用“!” (條件屬性訪問運算符)在飛鏢。

int? duration = getDuration();
Future.delayed(Duration(milliseconds: duration!));

“!” 是一個 dart 運算符,用於將可空類型轉換為不可空類型。 僅當您絕對確定該值永遠不會為空時才使用它,即在調用它之前,首選項中的鍵“持續時間”中始終存儲一個 int,並且不要將它與條件屬性訪問運算符(?)混淆。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM