Flutter中如何遍历answerVariants生成CheckboxListItem的全部多选框选项?
问题解决:多选框列表显示全部选项
当前代码的核心问题有两点:
- 复用了外层列表的
index去访问选项列表answerVariants,逻辑错误(比如第n个问题只会取自己选项列表的第n个元素,而非全部) - 手动创建仅包含单个元素的列表,没有遍历所有选项生成对应的多选框模型
修改checkboxItems的代码,通过map遍历所有answerVariants元素,将每个元素转化为CheckboxListTileModel即可:
checkboxItems: viewModel.data?.questions[index].answerVariants?.map((variant) { return CheckboxListTileModel( answer: variant.text ?? "", isChecked: false, image: null ); }).toList() ?? [],
完整修改后的对应代码段:
default: return SizedBox( height: 550, child: CheckboxListItem( title: viewModel.data?.questions[index].text ?? "", checkboxItems: viewModel.data?.questions[index].answerVariants?.map((variant) { return CheckboxListTileModel( answer: variant.text ?? "", isChecked: false, image: null ); }).toList() ?? [], isEditable: true ) )
说明:
- 用
map遍历当前问题的所有answerVariants选项,逐个生成对应的多选框模型 - 调用
toList()将迭代器转为列表,匹配checkboxItems的类型要求 - 用
?? []处理answerVariants为null的情况,避免空指针异常
内容的提问来源于stack exchange,提问作者MaryLitv21
相关产品推荐
相关产品推荐

