1
resposta

Desafio concluído, mas com uma dúvida!

Olá, eu também consegui resolver o desafio, mas aconteceu uma coisa que eu não consegui entender até agora: reparem que eu coloquei a cor cinza no case 6: color = Colors.grey, pois o black não funcionou de jeito nenhum, ficava dando erro, mas por qual motivo isso aconteceu, se funcionou com todas as outras cores?

tela do Android Studio apresentando erro no case quando usado Colors.black

import 'package:flutter/material.dart'; import 'package:nosso_primeiro_projeto/components/difficulty.dart';

class Task extends StatefulWidget { final String nome; final String foto; final int dificuldade;

const Task(this.nome, this.foto, this.dificuldade, {Key? key}) : super(key: key);

@override State createState() => _TaskState(); }

class _TaskState extends State { int nivel = 0; int specialty = 0; int totalSpecialty = 0; var color = Colors.blue;

@override Widget build(BuildContext context) { switch(specialty){ case 0: color = Colors.blue; break; case 1: color = Colors.green; break; case 2: color = Colors.yellow; break; case 3: color = Colors.orange; break; case 4: color = Colors.red; break; case 5: color = Colors.purple; break; case 6: color = Colors.grey; break; default: color = Colors.blue; break; } return Padding( padding: const EdgeInsets.all(8.0), child: Container( color: const Color(0xFFB0C4DE), child: Stack( alignment: AlignmentDirectional.topCenter, children: [ Container( decoration: BoxDecoration( borderRadius: BorderRadius.circular(4), color: color, ), height: 140, ), Column( children: [ Container( decoration: BoxDecoration( borderRadius: BorderRadius.circular(4), color: Colors.white, ), height: 100, child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Container( decoration: BoxDecoration( borderRadius: BorderRadius.circular(4), color: Colors.grey, ), width: 72, height: 100, child: ClipRRect( borderRadius: BorderRadius.circular(4), child: Image.asset( widget.foto, fit: BoxFit.cover, ), ), ), Column( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.start, children: [ SizedBox( width: 200, child: Text( widget.nome, style: const TextStyle( color: Colors.black, fontSize: 24), textAlign: TextAlign.left, overflow: TextOverflow.ellipsis, ), ), Difficulty( difficultyLevel: widget.dificuldade, ), ], ), Container( width: 52, height: 52, alignment: AlignmentDirectional.center, child: ElevatedButton( onPressed: () { setState(() { nivel++; if (nivel > (widget.dificuldade10)) { specialty++; nivel = 0; print('A especialidade está em: $specialty'); } }); //print(nivel); }, child: Column( .**... Não cabe o restante do código...*

1 resposta

Eu acredito que o erro está na hora que você criou a variavel color.

você criou com o 'var' var color = Colors.blue; ===> ela é atribuida como MaterialColor.

agora você pode criar assim: Color color = Colors.blue; ===> agora ela será uma Color e vai aceitar o preto. Colors.black.

eu vi ela na linha que a classe foi criada. class _TaskState extends State { int nivel = 0; int specialty = 0; int totalSpecialty = 0; var color = Colors.blue;

altera aqui e pra ver se resolve o problema da cor.

Parabéns pelo trabalho. Bons estudos.