未找到Dart列表项



我创建了抗原(元素)地图列表,并将一些抗原添加到另一个列表中,即选择。如果列表项包含在所选列表中,我希望它的颜色为红色。但是,即使在打印抗原存在的选定项目时,也不会显示颜色变化。

import 'package:allerpath_app_new/controller/mulit_allergy_profile_controller.dart';
import 'package:allerpath_app_new/model/blood_antigens.dart';
import 'package:flutter/material.dart';
import 'package:get/get_core/src/get_main.dart';
import 'package:get/get_instance/src/extension_instance.dart';
class TestingMAP extends StatelessWidget {
TestingMAP({Key? key}) : super(key: key);
final controller = Get.put(MultiProfile());
final BloodAntigens antigen = BloodAntigens();
@override
Widget build(BuildContext context) {
List<dynamic> _namesList =
controller.selectedAntigens.map((e) => e['name']).toList();
return SafeArea(
child: Scaffold(
body: ListView.builder(
itemCount: antigen.inhalantPanel.length,
itemBuilder: (context, index) {
var item = antigen.inhalantPanel[index];
return Text(
item['name'],
style: TextStyle(
color: (_namesList.contains(item)) ? Colors.red : Colors.black,
),
);
},
),
));
}
}

我打印了列表,看它是否存在

print(controller.selectedAntigens);
print((controller.selectedAntigens.contains(item)) ? '1' : '0');

输出:

[{name: STRAW DUST, value: 123}]
0

模型代码

List<Map<String, dynamic>> inhalantPanel = [
{'name': 'HOUSE DUST', 'value': 0.35},
{'name': 'MIXED MITES', 'value': 0.35},
{'name': 'COCKROACH', 'value': 0.35},
{'name': 'STRAW DUST', 'value': 0.35},
{'name': 'COTTON', 'value': 0.35},
{'name': 'JUTE', 'value': 0.35},
];

因为你的抗原模型中可能没有相等算子

你要么这样做,要么创建一个包含抗原名称的列表。

List<String> _namesList = controller.selectedAntigens.map((e)=>e['name']).toList();
print(_namesList.contains(item['name']) ? '1' : '0'); //=> "1";

最新更新