[英]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.