【发布时间】:2020-10-02 22:27:57
【问题描述】:
我是新来的颤振。当我尝试在 ListView.builder 中选择一张卡片时,我列表中的所有其他卡片都会被选中。
我知道这是索引问题。但是,我正在使用索引来获取从数据库中获取的数据列表。因此,itembuilder 中的索引是 int 而不是 bool。
我的代码
shrinkWrap: true,
itemCount: snapshot.data.length,
itemBuilder: (context, index) {
ServiceProvider serviceProvider = snapshot.data[index];
return new Card(
shape: selected
? new RoundedRectangleBorder(
side: new BorderSide(color: Colors.blue, width: 2.0),
borderRadius: BorderRadius.circular(4.0))
: new RoundedRectangleBorder(
side: new BorderSide(color: Colors.white, width: 2.0),
borderRadius: BorderRadius.circular(4.0)),
child: new Padding(
padding: const EdgeInsets.all(5.0),
child: new Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
new Text(serviceProvider.name, style: TextStyle(fontSize: 20, height: 1.5)),
new Text(serviceProvider.serviceType, style: TextStyle(fontSize: 15, height: 1.5),),
new Text(serviceProvider.phoneNumber, style: TextStyle(fontSize: 15, height: 1.5),),
new Text(serviceProvider.address, style: TextStyle(fontSize: 15, height: 1.5),),
new Text(serviceProvider.location, style: TextStyle(fontSize: 15, height: 1.5),),
new Text(serviceProvider.emailAddress, style: TextStyle(fontSize: 15, height: 1.5),),
Container(
child: ButtonBar(
children: <Widget>[
new Checkbox(
value: selected,
onChanged: (value) {
setState(() {
selected = value;
print(selected);
});
selectedName.add(serviceProvider.name);
print(selectedName);
}),
new RaisedButton(
child: Text('Discard'),
onPressed: () {
setState(() {
deleteMethod(serviceProvider.name);
});
},
),
new RaisedButton(
child: Text('Verified'),
onPressed: () {
setState(() {
updateMethod(serviceProvider.name);
});
},
),
],
),
)
],
),
),
);
},
);```
How do i go about this?
【问题讨论】:
-
我认为问题出在`new Checkbox(value: selected`你为所有孩子设置相同的值。
-
另外,当你已经拥有
value: selected时,selected = value;没有做任何事情。
标签: flutter