flutter - 如何取消选择列表view.builder颤振中已选择的选项
问题描述
我试图在我的项目上实现单一选择,listview.builder
以便在点击一个项目时,其他项目会被取消选择,并且只有最后一个点击被选中。这是我的逻辑,但它现在做了多项选择,并且坚持如何使其成为单一选择。
FlatButton(
onPressed: () {
setState(() {
_bloc.similarProducts[index].selected =
!_bloc.similarProducts[index].selected;
});
},
child: Container(
height: 45,
width:120,
decoration: BoxDecoration(
border: Border.all(
color:!_bloc.similarProducts
[index].selected?
Colors.white:
Hexcolor("#DADE66"),
),
borderRadius: BorderRadius.circular(7),
color: !_bloc.similarProducts[index].selected?
Hexcolor("#DADE66"):
Colors.white,
),
padding: EdgeInsets.all(12),
child: Padding(
padding: const EdgeInsets.only(left:15.0, right:15.0),
child: Center(
child: Text(
!_bloc.similarProducts[index].selected?
"Select": "Selected",
style: TextStyle(
fontWeight: FontWeight.w700,
fontSize: 14,
fontFamily: 'Lato',
color: !_bloc.similarProducts
[index].selected?
Colors.white:
Hexcolor("#DADE66"),
),
),
),
),
),
),
],
);
}
),
解决方案
如果您只想选择一个项目,您可以创建一个新值,我们称之为 selectedItem。然后在 FlatButton onPressed 回调中将 selectedItem 设置为您要选择的项目的值(该值可以是索引、id 或任何唯一标识符,可能是它自己的项目)。
然后您可以检查列表中每个项目的值是否等于显示您想要的值。
这样,当您选择新项目时,旧项目将被替换,因此您最终只选择了 1 个。
推荐阅读
- c++ - 如何在 Visual Studio 2019 中禁用重构菜单箭头/弹出窗口?
- html - 无法从 Iframe VBA 获取 HTML 元素
- github - 是否有任何可编写脚本的方法来删除 GitHub 存储库?
- java - 无法通过 AsyncTask 更新 RecyclerView
- reactjs - Jest.fn() 不更新全局变量
- kubernetes - 在 kubectl jsonpath 中解码 base64
- html - HTML5 视频卡顿和卡顿
- sql - 使用 TO_CHAR() 时的 Oracle 日期格式
- windows - 如何为托管在 IIS 7 中的网站创建 SSL 证书?
- python - 将 pandas 索引更改为列标题