我已經應用了本期中的單例模式, 并嘗試使用本期中的方法接受引數。但它給了我這個錯誤:
不可為空的實體欄位 'id' 必須被初始化。嘗試添加初始化運算式,或在此建構式中添加欄位初始化器,或將其標記為“遲到”
那么問題出在哪里呢?
這是我的代碼:
static final Singleton _inst = Singleton._internal();
int id;
Singleton._internal() {
// some logic
}
factory Singleton({required int id}) {
_inst.id = id;
return _inst;
}
uj5u.com熱心網友回復:
如果沒有您的完整代碼,我將假設您的完整Singleton課程如下所示:
class Singleton {
int id;
static final Singleton _inst = Singleton._internal();
Singleton._internal() {
// some logic
}
factory Singleton({required int id}) {
_inst.id = id;
return _inst;
}
}
問題是,由于 nullsafety 您不能在不分配其值或將其標記為late(正如您的錯誤訊息中所說)的情況下宣告不可為空的變數。
所以你應該做的只是id像這樣宣告:
class Singleton {
late int id;
// ...
}
在 DartPad 上試用完整示例
uj5u.com熱心網友回復:
在您的 People 或 Singlton 類中,您定義了一個名為 id 的欄位,該欄位既不能為空也不能初始化,這就是您收到此錯誤的原因。只需使您的欄位可為空或為其分配一些值以進行初始化。像下面
使其可以為空
int? id;
要初始化
int id = "";
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/391683.html
