Flutter中RxList<String>匹配ID失败的排查与解决
问题:成员ID匹配失败导致文本颜色不生效的解决办法
你定义的代码如下:
RxList<String> selectedMemberList = <String>[].obs; selectedMemberList = [180,160,150]
你希望ID存在于selectedMemberList时文本显示红色,编写的判断逻辑:
if (selectedMemberList.contains('180')) { // 文本红色 } else { // 文本黑色 }
但文本始终显示黑色,核心原因是类型不匹配:
- 你声明的
selectedMemberList是RxList<String>(字符串列表),但赋值的元素是整数180、160、150,而非字符串'180'。 - 用
contains('180')(字符串)去查找整数列表,自然匹配失败。
两种解决方式:
- 保持列表为字符串类型,赋值时把元素转为字符串,同时给列表加
.obs(RxList的规范要求):
RxList<String> selectedMemberList = <String>[].obs; selectedMemberList = ['180','160','150'].obs;
此时selectedMemberList.contains('180')就能正常匹配。
- 改为整数类型列表(如果你的ID本身就是整数):
RxList<int> selectedMemberList = <int>[].obs; selectedMemberList = [180,160,150].obs;
判断时去掉引号,用整数匹配:
if (selectedMemberList.contains(180)) { // 文本红色 } else { // 文本黑色 }
内容的提问来源于stack exchange,提问作者Vrusti Patel
相关产品推荐
相关产品推荐

