Sta*_*ang 4 layout android ios dart flutter
我对 flutter 完全陌生,我正在尝试制作一个一周中每天有 7 个开关的应用程序。
当创建 7 个不同的 switchlisttile 并且每个 switchlisttile 具有不同的值时,问题就解决了。
但是当我提取该方法时,开关不起作用。
这是下面的代码:
Column(
children: <Widget>[
buildSwitchListTile(Title : "Monday" , Value : Value1),
buildSwitchListTile(Title : "Tuesday" , Value : Value2),
buildSwitchListTile(Title : "Wednesday" , Value : Value3),
buildSwitchListTile(Title : "Thursday" , Value : Value4),
buildSwitchListTile(Title : "Friday" , Value : Value5),
buildSwitchListTile(Title : "Saturday" , Value : Value6),
buildSwitchListTile(Title : "Sunday" , Value : Value7),
],
),
Run Code Online (Sandbox Code Playgroud)
提取方法:
SwitchListTile buildSwitchListTile({String Title , bool Value}) {
return SwitchListTile(
title: Text(Title),
value: Value1,
onChanged: (bool value) => setState(() {
Value1 = value;
}),
);
}
Run Code Online (Sandbox Code Playgroud)
不过我知道我在上面的方法中使用了 Value1,原因是没有它开关就不起作用。
问题是您传递给方法的变量与方法接收的Value1
变量不同。Value
它们具有相同的值,但如果您重新为 赋值Value
,则不会影响 的值Value1
。您可以像现在一样进行硬编码Value1
,但这意味着您需要为每个value
变量提供一个方法,这不是很干燥。
相反,请传递一个回调方法,以便buildSwitchListTile
在点击图块时调用。这样,当您在build
方法中调用该方法时,您可以指定每个变量将更改的变量。之后,程序应该可以正常运行。
SwitchListTile buildSwitchListTile({
String Title,
bool Value,
void Function(bool) onChanged,
}) {
return SwitchListTile(
title: Text(Title),
value: Value,
onChanged: onChanged,
);
}
Run Code Online (Sandbox Code Playgroud)
并像这样使用它:
Column(
children: <Widget>[
buildSwitchListTile(Title: "Monday", Value: Value1,
onChanged: (val) => setState(() => Value1 = val)),
buildSwitchListTile(Title: "Tuesday", Value: Value2,
onChanged: (val) => setState(() => Value2 = val)),
buildSwitchListTile(Title: "Wednesday", Value: Value3,
onChanged: (val) => setState(() => Value3 = val)),
buildSwitchListTile(Title: "Thursday", Value: Value4,
onChanged: (val) => setState(() => Value4 = val)),
buildSwitchListTile(Title: "Friday", Value: Value5,
onChanged: (val) => setState(() => Value5 = val)),
buildSwitchListTile(Title: "Saturday", Value: Value6,
onChanged: (val) => setState(() => Value6 = val)),
buildSwitchListTile(Title: "Sunday", Value: Value7,
onChanged: (val) => setState(() => Value7 = val)),
],
),
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
561 次 |
最近记录: |