Flutter: импортировать правильные значения цвета со связанным идентификатором из другого класса - PullRequest
0 голосов
/ 25 апреля 2020

Я хочу получить доступ к данным в списке, который находится в другом классе (класс RubricItem). Цвет должен быть с соответствующим идентификатором.

Затем я хотел бы вставить данные из списка, который я вызвал из класса RubricItem, в список из класса Colors. В классе Colors есть параметр id:. И в зависимости от того, какой идентификатор я набрал, мой «rubricColor:» должен знать, каким должно быть его значение.

Пример:

Я записываю значение идентификатора списка из класса Colors ' BlueAccent ', тогда он также должен знать, какой цвет должен быть написан в рубрикеЦвет :. Он видит «BlueAccent» в id: из класса Colors и сравнивает его с id: в списке из класса RubricItem и видит значение цвета в том же списке из класса RubricItem и моего rubricColor: значение в списке цветов. class, получает значение color из списка класса RubricItem.

Надеюсь, вы понимаете, о чем я. Мне было очень трудно объяснить.

RubricItem класс:

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',
    ),
  ];
...

Список классов цветов:

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

1 Ответ

1 голос
/ 26 апреля 2020

Используйте карты вместо списков.

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

и строки - это идентификаторы. А затем просто используйте идентификаторы

Edit1: пример

Я не знаю, является ли это лучшим способом решения вашей проблемы, но это работает.

Я использовал ключ карты в качестве идентификатора и удалил идентификатор как из класса Rubri c, так и из класса Colorr.

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;
}
...