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<Task> createState() => _TaskState();
}
class _TaskState extends State<Task> {
int nivel = 0;
List<Color> currentColor = [Colors.blue, Colors.green,Colors.amber,Colors.orange,Colors.red,Colors.black];
int colorIndex = 1;
@override
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.all(8.0),
child: Stack(
children: [
Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(4),
color: currentColor[colorIndex]),
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.black26,
),
height: 100,
width: 72,
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(fontSize: 24),
overflow: TextOverflow.ellipsis,
),
),
Difficulty(difficultyLevel: widget.dificuldade,)
],
),
SizedBox(
height: 52,
width: 52,
child: ElevatedButton(
onPressed: () {
setState(() {
if(colorIndex != 5 && (nivel/widget.dificuldade) == 10){
colorIndex++;
nivel = 0;
} else if(colorIndex != 5 && nivel/widget.dificuldade != 10){
nivel++;
} else {
nivel++;
}
// print('colors.lengh: ${currentColor.length}');
});
},
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
crossAxisAlignment: CrossAxisAlignment.end,
children: const [
Icon(Icons.arrow_drop_up),
Text('UP', style: TextStyle(fontSize: 12))
],
)),
),
],
),
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Padding(
padding: const EdgeInsets.all(8.0),
child: SizedBox(
width: 200,
child: LinearProgressIndicator(
color: Colors.white,
value: widget.dificuldade > 0
? (nivel / widget.dificuldade) / 10
: 1,
)),
),
Padding(
padding: const EdgeInsets.all(12),
child: Text(
'Nivel: $nivel',
style:
const TextStyle(color: Colors.white, fontSize: 16),
),
),
],
),
],
)
],
),
);
}
}