【发布时间】:2021-05-15 13:51:00
【问题描述】:
我想创建一个 ModalBottomSheet,它会打开很多 RaisedButton。这些按钮应该在按下后改变颜色。 因此,我创建了一个名为“Buttons”的 StatefulWidget。
在我的 MainClass 中,我使用
for (String item in myList) Buttons(item)
将 myList 的字符串提交给按钮。
但我在按钮上有 2 个问题:
-
String item应该是最终的,但是我不能将它用作二传手 (我想去掉 Buttons 的蓝色下划线,它告诉我:这个类(或这个类继承自的类)被标记为“@immutable”,但它的一个或多个实例字段不是最终的: ) -
另一个问题是,在我的 buildMethod 中没有定义“item”。 为什么我的构建方法中不能使用
String item?
class Buttons extends StatefulWidget {
String item;
Buttons(String item) {
this.item = item;
}
@override
_ButtonsState createState() => _ButtonsState();
}
class _ButtonsState extends State<Buttons> {
bool pressAttention = false;
@override
Widget build(BuildContext context) {
return Container(
child: Card(
child: RaisedButton(
child: Text(item),
color: pressAttention ? Colors.grey : Colors.blue,
onPressed: () => setState(() => pressAttention = !pressAttention),
),
),
);
}
}
【问题讨论】: