我正在嘗試根據公式中包含的物件顯示一系列特定的小部件。以下是我如何根據小部件的型別將小部件分配給變數。
var l = TankFormulaLength(length: tankSpec.tankSpecs.imperialLength);
var w = TankFormulaWidth(width: tankSpec.tankSpecs.imperialWidth);
var h = TankFormulaHeight(height: tankSpec.tankSpecs.imperialHeight);
var d = TankFormulaDiameter(diameter: tankSpec.tankSpecs.imperialDiameter);
List<Widget> tankMeasurements = [l, w, h, d];
這是使用它們的地方。
Column(children: <Widget>[
...tankFormula(tankMeasurements,
tankSpec.tankSpecs.formula),
],
),
該公式是從基于坦克規格發生的 api 呼叫中提取的,并如下所示交付。目前我正在將它列印到控制臺,以便我可以看到每個坦克規格使用的公式。
在我的 tankFormula 函式中,我想采用特定的公式并使用它來遍歷我的小部件串列,并且只回傳特定于該公式的那些。目前我能夠讓它們全部顯示出來,因為它們沒有被過濾。
List<Widget> tankFormula(formulaComponents, formula) {
List<Widget> calculatedFormula = [];
print(formula);
return formulaComponents;
}
我不確定如何獲得我正在尋找的最終結果。如下面的螢屏截圖所示,我只需要顯示公式中的“長度”和“直徑”欄位,因為這些是此特定儲罐規格的特定公式中唯一使用的欄位。在其他情況下,它可能是一些附加欄位,即“寬度”或“高度”。同樣,基于從 API 回傳的公式。將始終顯示附加欄位“產品”、“儲罐容量”和“傳感器偏移”。

我知道沒有使用 calculatedFormula。我創建了這個變數來保存回傳的將顯示在螢屏上的小部件串列。我被困住了,不確定如何前進。衷心感謝您的提前幫助!
uj5u.com熱心網友回復:
也許這就是您要找的東西?
Widget build(BuildContext context) {
return Column(
children: [
if (list.contains('l')) TankFormulaLength(),
if (list.contains('h')) TankFormulaHeight(),
if (list.contains('w')) TankFormulaWidth(),
if (list.contains('d')) TankFormulaDiameter(),
],
);
}
這假設這list是你的字串陣列,它看起來像:
var list = ['l', 'h', 'w', 'd'];
uj5u.com熱心網友回復:
“void void”的解決方案是完全合法的。如果您出于某種原因想要遍歷串列,那么這是一種單獨的方法。
return Column(
children: list.map<Widget>((e) {
switch(e) {
case 'l': return TankFormulaLength(...);
case 'h': return TankFormulaHeight(...);
case 'w': return TankFormulaWidth(...);
case 'd': return TankFormulaDiameter(...);
}
return const SizedBox.shrink();
).toList(),
);
uj5u.com熱心網友回復:
這是我解決這個問題的方法。因為我從 api 接收到公式的每個部分的特定值,所以我需要確保通過我創建的函式將其傳遞到我的自定義小部件,然后檢查公式包含哪些變數。
List<Widget> tankFormula(l, w, h, d, formula) {
List<Widget> calculatedFormula = [];
if (formula.contains('l')) {
calculatedFormula.add(TankFormulaLength(length: l));
}
if (formula.contains('w')) {
calculatedFormula.add(TankFormulaWidth(width: w));
}
if (formula.contains('h')) {
calculatedFormula.add(TankFormulaHeight(height: h));
}
if (formula.contains('d')) {
calculatedFormula.add(TankFormulaDiameter(diameter: d));
}
print(formula);
return calculatedFormula;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/534267.html
標籤:扑列表循环镖小部件
上一篇:如何將這些倒金字塔并排列印?
