[英]Dart: How does Dart match the named parameters in a Constructor of a Class?
[英]Choosing which named parameters to include in a dart class constructor at run-time
這是一個新手問題。 我從 json 文件中讀取了 flutter 應用程序的 ThemeData。 json 中可能存在也可能不存在某些屬性。 例如,我收到了 primaryColor,但沒有收到 primarySwatch,反之亦然。 我想知道是否有一種簡單的方法來實例化 ThemeData object,具體取決於需要存在哪些命名參數(對應於 json 屬性)。
我試圖避免必須根據存在的值對多個 forms 構造函數進行編碼。 請注意,ThemeData 屬性的數量可能非常大。 這是一個涉及兩個屬性的示例,導致 4 個構造函數。
// When no attribute is present
return ThemeData();
// When primaryColor is present
return ThemeData(
primaryColor: primaryColorFromJson,
);
// When primarySwatch is present
return ThemeData(
primarySwatch: primarySwatchFromJson,
);
// When both are present
return ThemeData(
primarySwatch: primarySwatchFromJson,
primaryColor: primaryColorFromJson,
);
如果您只是將 null 傳遞給ThemeData構造函數,就可以了,以防您的 json 中沒有該值。 看一下構造函數的一部分:
primarySwatch ??= Colors.blue;
primaryColor ??= isDark ? Colors.grey[900] : primarySwatch;
它將每個 null 參數值從構造函數設置為默認值。 將 null 傳遞給它或根本不設置它沒有區別。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.