3
respostas

Duvida em condição

criei uma classe random que cada vez q eu adiciono um quadrado na tela, ele aparece de uma cor diferente. Meio que para aprender a trabalhar com aleatórios. To com dificuldade na hora de criar uma condição, para que quando for adicionado dois quadrados, os dois não sejam de mesma cor. Alguem pode me ajudar ?????

3 respostas

Olá Victor!

Poderia mostrar um pouco do código?

import 'dart:math';
List<Color> coresDisponiveis = [
  Colors.red,
  Colors.blue,
  Colors.green,
  Colors.yellow,
  Colors.purple,
  Colors.orange,
  Colors.teal,
  Colors.pink,
];

Random random = Random();
Color corAleatoria = coresDisponiveis[random.nextInt(coresDisponiveis.length)];

Container(
  width: 50,
  height: 50,
  color: corAleatoria,
);```

o código seria esse, porem quando eu adicionar 2 containers, eu quero q os dois n caiam com a mesma cor entende ? eu teria que colocar um if certo ?

Sim, para garantir que os dois containers não tenham a mesma cor aleatória, você pode adicionar um if para verificar se as cores aleatórias dos dois containers são iguais. Se forem iguais, você pode gerar uma nova cor aleatória para o segundo container.

Aqui está um exemplo de como fazer isso:

import 'dart:math';
import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Containers Aleatórios'),
        ),
        body: ContainerScreen(),
      ),
    );
  }
}

class ContainerScreen extends StatelessWidget {
  final List<Color> coresDisponiveis = [
    Colors.red,
    Colors.blue,
    Colors.green,
    Colors.yellow,
    Colors.purple,
    Colors.orange,
    Colors.teal,
    Colors.pink,
  ];

  final Random random = Random();

  Color gerarCorAleatoria() {
    return coresDisponiveis[random.nextInt(coresDisponiveis.length)];
  }

  @override
  Widget build(BuildContext context) {
    Color primeiraCor = gerarCorAleatoria();
    Color segundaCor;

    do {
      segundaCor = gerarCorAleatoria();
    } while (segundaCor == primeiraCor);

    return Row(
      mainAxisAlignment: MainAxisAlignment.spaceEvenly,
      children: [
        Container(
          width: 50,
          height: 50,
          color: primeiraCor,
        ),
        Container(
          width: 50,
          height: 50,
          color: segundaCor,
        ),
      ],
    );
  }
}

Neste exemplo, a função gerarCorAleatoria foi criada para retornar uma cor aleatória da lista coresDisponiveis. Em seguida, criamos uma cor aleatória para o primeiro container e, em seguida, um loop do-while é usado para gerar uma nova cor aleatória para o segundo container até que seja diferente da cor do primeiro container. Dessa forma, garantimos que os dois containers sempre tenham cores diferentes.