【发布时间】:2020-08-07 18:38:24
【问题描述】:
目标是在点击时将 ListTile leading 和 subtitle 的值更改为 null。点击正在切换 _act 布尔值,但 ListTile 的前导:和副标题:值不会从它们的初始状态改变。我的 ListView 代码如下。请帮忙。
return new ListView(
children: querySnapShot.data.documents.map((DocumentSnapshot document) {
bool _act = false;
return new ListTile(
leading: _act != false ? const Icon(Icons.remove_red_eye, color: Color(0xff00caff), size: 40) : null,
title: new Text((DBProvider.db.idDeHasher(document['exampleid'], key) ?? 'fallback'), style: TextStyle(color: secondaryColor)),
subtitle: _act != false ? new Text((document['exampleString'] ?? 'fallbackString'), style: TextStyle(color: secondaryColor)) : null,
onTap: () {
_act = !_act;
print(_act.toString());
}
);
}).toList(),
);
【问题讨论】:
-
使用
setState更改_act。 -
_act 变量在每个 setState 上都被重置为 false,因为它的实例化位于 ListView 小部件中。在状态类本身中实例化 _act 变量将提供更新并更改值,但列表视图中的每一行都将被更新,而不是被点击的单行,因为它们都将使用相同的 _act 值。 @Mobina
-
如果不更新状态,您希望发生什么?什么都不会改变。您可以存储
acts 的列表。
标签: flutter listview dart boolean dart-pub