Как создать список цветов градиента в флаттере? - PullRequest
0 голосов
/ 16 октября 2019

Я хочу создать список из 7 цветов градиента, которые я могу произвольно применять в качестве фона для контейнера.

gradientColors[rand(0,6)];

Список должен храниться локально в приложении в отдельном файле.

Идея заключалась в следующем:

List<Color> gradientRed = Colors.amber, Colors.red;
List<Color> gradientBlue = Colors.blue, Colors.blueAccent;

List<Colors> gradientColor = [
  gradientRed, gradientBlue, ...
];

, но я столкнулся со следующей ошибкой:

The element type 'List<Color>' can't be assigned to the list type 'Colors'.dart(list_element_type_not_assignable)

плюс я пытался сгенерировать случайное число между заданным диапазоном. но я всегда получаю одно и то же число.

, используя этот код внутри цикла foreach в флаттере

    int min = 0;
    int max = gradientColors.length;
    var randIndex = min + (Random(1).nextInt(max - 1));
    print(randIndex);

в чем здесь решение?

Ответы [ 3 ]

1 голос
/ 16 октября 2019

Ваш тип списка должен быть самим списком:

List<List<Colors>> gradientColor = [color gradients go here]
0 голосов
/ 16 октября 2019

Вы можете сделать это:

final gradientColors = [Colors.red, Colors.green, Colors.blue];

Color _getRandomGradientColor() => (gradientColors..shuffle()).first;

Если вы не хотите изменять порядок списка, вы можете использовать копию, подобную этой:

Color _getRandomGradientColor() => (List.from(gradientColors)..shuffle()).first;

или

Color _getRandomGradientColor() => (gradientColors.toList()..shuffle()).first;
0 голосов
/ 16 октября 2019

для проблемы со списком, которую я имел, я просто удалил тип списка и теперь он будет динамическим, как показано ниже:

List gradientColors = [
     gradientRed,
     gradientBlue,
     gradientGreen,
     gradientYellow,
     gradientPurple,
     gradientPink,
     gradientOrange,
     gradientAmber,
];

и для случайного числа в длине списка, которое я использовал ниже кода:

const int min = 0;
    int max = gradientColors.length;
    var randIndex = Random().nextInt(max);
    print(randIndex);
...