Galeres, preciso de ajuda. Vi diversos posts aqui no fórum com possíveis resoluções para o desafio da subida de nível porém eu tentei criar uma linha de raciocínio aqui e preciso seguir com ela para realmente aprender rsrs.
Vamos lá.. aqui está o projetinho no github..
Inicialmente eu criei umas funções e variáveis dentro do TaskInheritad:
int nivelGlobal = 0;
int colorGlobal = 0;
int sumDifficulty(){
int sumDifficulty = 0;
for (int i=0; i < taskList.length; i++){
sumDifficulty += taskList[i].dificuldade;
}
return sumDifficulty;
}
void nivelGlobalUpgrade (){
if(nivelGlobal<(sumDifficulty()*10)){
nivelGlobal++;
} else if(nivelGlobal == (sumDifficulty()+10) && colorGlobal < 6){
nivelGlobal = 0;
colorGlobal++;
}
}
• A função sumDifficulty() serve exclusivamente para termos o valor da soma das dificuldades em int. • Criei a int nivelGlobal para termos o contagem de cada clique em subir de nível e eu acho que é nessa parte que estamos tendo um problema de context. • Já que eu fiz o esquema de troca de cor conforme vamos passando de nível nas tasks, criei a int colorGlobal para fazer isso na AppBar também.
No arquivo Task, adicionei a função void nivelGlobalUpgrade dentro do onPressed do botão Up. Isso para contabilizar os cliques e ir subindo o nível global. Justamente nessa parte que eu teorizo que esteja havendo um problema de context:
onPressed: () {
setState(() {
if (widget.nivel < (widget.dificuldade * 10)) {
widget.nivel++;
} else if (widget.nivel == (widget.dificuldade * 10) &&
widget.color < 6) {
widget.nivel = 0;
widget.color++;
widget.hashcolor = colorChanging(widget.color);
TaskInherited.of(context).nivelGlobalUpgrade;
}
});
}
Para finalizar, na Initial_Screen eu criei por enquanto a barra de progresso e o botão de update. No botão de update, eu só coloquei um print com os valores nivelGlobal, colorGlobal e o sumDifficulty. Coloquei esse print só para eu entender se os valores estão mudando e apenas o sumDifficulty está me entregando atualizado conforme incluo novas tasks. Os outros 2 valores não alteram conforme clico em up de alguma task.
AppBar(
leading: Builder(
builder: (BuildContext context) {
return IconButton(
icon: const Icon(
Icons.recycling,
color: Colors.white,
),
onPressed: () {
setState(() {
print(
'${TaskInherited.of(context).nivelGlobal}, ${TaskInherited.of(context).colorGlobal} e ${TaskInherited.of(context).sumDifficulty()}');
});
},
tooltip: MaterialLocalizations.of(context).openAppDrawerTooltip,
);
},
),
backgroundColor: colorChanging(TaskInherited.of(context).colorGlobal),
title: Column(
children: [
const Text(
'Tarefas',
style: TextStyle(color: Colors.white),
),
LinearProgressIndicator(
color: Colors.white,
backgroundColor: const Color.fromARGB(100, 255, 255, 255),
value: (TaskInherited.of(context).nivelGlobal /
(TaskInherited.of(context).sumDifficulty() / 10)))
],
))
Bom.. é isso. O que devo fazer? rsrsrs