Flutter:使用来自另一个 class 的链接 ID 导入正确的颜色值

Flutter: Import the correct color values ​with the linked id from another class

我想访问另一个 class (class RubricItem) 中的列表中的数据。颜色必须是对应id的颜色

然后我想将我从 RubricItem class 调用的列表中的数据插入到颜色 class 中的列表中。在 Colors class 中是参数 id :.根据我输入的 ID,我的 "rubricColor:" 应该知道它的值应该是多少。

示例:

我从Colorsclass'BlueAccent'中记下list的id值,那么他也得知道rubricColor:里面要写什么颜色。他在颜色 class 的 id: 处看到 'BlueAccent' 并将其与 RubricItem class 列表中的 id: 进行比较,并在 RubricItem [=] 的同一列表中看到颜色值=31=] 和我的 rubricColor: 颜色列表中的值 class,从 RubricItem class.

列表中获取颜色值

希望你明白我的意思。 我很难解释。

RubricItem class:

class _RubricItemState extends State<RubricItem> {
  final List<Rubric> rubrics = [
    Rubric(
      id: 'BlueAccent',
      title: "BLUEACCENT",
      color: Colors.blueAccent,
      icon: 'assets/icons/blueAC.png',
    ),
    Rubric(
      id: "Pink",
      title: "PINK",
      color: Colors.pinkAccent,
      icon: 'assets/icons/PINK.png',
    ),
    Rubric(
      id: 'GreenAccent',
      title: "GREENACCENT",
      color: Colors.greenAccent,
      icon: 'assets/icons/GreenAccent.png',
    ),
  ];
...

颜色列表 classes:

final List<Colorr> colors = [
  Colorr(
    id: 'BlueAccent',  // with this id he should be find the id in the List of the RubricItem() class 
    title: 'Blabla',
    rubric: '',
    rubricColor: , //(RubricItemColor)
  ),
];

使用地图而不是列表。

map<String, Rubric>
map<String, Colorr>

字符串是 ID。然后只需使用 ids

Edit1:例子

我不知道这是否是解决您的问题的最佳方法,但它确实有效。

我使用地图的键作为 ID,并从 Rubric class 和 Colorr class 中删除了 ID。

import 'package:flutter/material.dart';
void main() {

  final Map<String,Rubric> rubrics = {
    'BlueAccent': Rubric(title:'BLUEACCENT',color:  Colors.blueAccent, icon:   'assets/icons/blueAC.png'),
  };
  final Map<String, Colorr> colors = {
    'BlueAccent': Colorr(title: 'title', rubric:rubrics['BlueAccent'],rubricColor: rubrics['BlueAccent'].color),
  };
}


class Rubric{
  Rubric({this.title,this.icon,this.color});
  final String title;
  final Color color;
  final String icon;
}

class Colorr{
  Colorr({this.title,this.rubric,this.rubricColor});
  final String title;
  final Rubric rubric;
  final Color rubricColor;
}