Flutter中Choice Chip无需手动选择索引如何打印默认选中值
问题分析
你当前的逻辑里,specialRequest变量仅在点击ChoiceChip触发onSelected回调时才会被赋值,初始状态下它是空字符串,所以就算组件默认选中了第一个选项,直接打印也拿不到对应的值。
解决方案
有两种实现方式,你可以按需选择:
- 方式一:初始化接口数据时同步赋值默认选中值
在你请求API拿到选项列表后,立刻给默认选中索引和存储选中值的变量赋初始值,示例代码:
// 以下为你原有接口请求成功后的逻辑补充 if (data.data?.occassions?.isNotEmpty == true) { // 初始化默认选中第一个 occasionIndex = 0; // 同步给存储选中值的变量赋值第一个选项的内容 specialRequest = data.data!.occassions![0]!.id!; setState(() {}); }
完成这个修改后,你原有打印specialRequest的逻辑就可以直接拿到默认选中的第一个值。
- 方式二:打印时直接通过选中索引取值(更稳妥,避免变量不同步)
不用依赖specialRequest变量,直接用当前选中的索引occasionIndex从选项列表中取值,修改打印逻辑即可:
GestureDetector( onTap: (){ if(data.data?.occassions?.isNotEmpty == true) { // 打印名称的写法,要打印id替换.name为.id即可 print(data.data!.occassions![occasionIndex]!.name!); } }, child: Text('What is the occasion') )
注意事项
建议所有取值逻辑都加非空判断,避免选项列表为空时出现空指针异常。
内容的提问来源于stack exchange,提问作者Mohammed Nabil
相关产品推荐
相关产品推荐

