首页 > 解决方案 > 未找到飞镖列表项

问题描述

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

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},
  ];

标签: flutterdart

解决方案


因为您的抗原模型中可能没有相等运算符。

例如,您可以这样做,或者创建一个包含抗原名称的列表。

List<String> _namesList = controller.selectedAntigens.map((e)=>e['name']).toList();

print(_namesList.contains(item['name']) ? '1' : '0'); //=> "1";

推荐阅读