Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Projeto] Desafio final

Curso Flutter: Controller, navegação e estados

O desafio é o seguinte:

Crie um level (nível) global, que seja a soma do Nível de todas as suas tarefas existentes; Toda vez que você subir de Nível numa tarefa, seu level pessoal deve subir também; Quanto mais difícil for a tarefa, mais level você ganhará; Mostre seu level na barra superior do aplicativo (uma barra de progresso cai bem, viu?).

@@ -11,12 +10,61 @@ class InitialScreen extends StatefulWidget {
 }
 
 class _InitialScreenState extends State<InitialScreen> {
+  double level = 0;
+  double progress = 0;
+  void refreshGeneralLevel() {
+    setState(() {
+      level = 0;
+      progress = 0;
+      for (var task in TaskInherited.of(context).taskList) {
+        level += (task.nivel * task.dificuldade) / 10;
+      }
+      progress = level / 100;
+    });
+  }
+
   @override
   Widget build(BuildContext context) {
     return Scaffold(
       appBar: AppBar(
         leading: Container(),
         title: const Text('Tarefas'),
+        flexibleSpace: Row(
+          mainAxisAlignment: MainAxisAlignment.spaceBetween,
+          children: [
+            Padding(
+              padding: const EdgeInsets.fromLTRB(5, 70, 8, 8),
+              child: SizedBox(
+                child: LinearProgressIndicator(
+                  color: Colors.white,
+                  value: progress,
+                ),
+                width: 170,
+              ),
+            ),
+            Padding(
+              padding: const EdgeInsets.fromLTRB(6, 50, 0, 8),
+              child: Text(
+                textAlign: TextAlign.left,
+                'Level: ${level}',
+                style: const TextStyle(color: Colors.white, fontSize: 16),
+              ),
+            ),
+            Padding(
+              padding: const EdgeInsets.fromLTRB(0, 20, 15, 0),
+              child: SizedBox(
+                height: 25,
+                width: 25,
+                child: IconButton(
+                    onPressed: () {
+                      refreshGeneralLevel();
+                      //print(level);
+                    },
+                    icon: Icon(Icons.refresh)),
+              ),
+            ),
+          ],
+        ),
       ),
       body: ListView(
         children: TaskInherited.of(context).taskList,

Gif Desafio Final

2 respostas
solução!

Olá, Leomark! Parece que você está fazendo um ótimo trabalho com o desafio final do curso Flutter: Controller, navegação e estados.

Pelo que percebi, você já implementou a lógica para calcular o level global e o progresso, além de exibir essas informações na barra superior do aplicativo, o que está totalmente de acordo com o desafio proposto. A função refreshGeneralLevel() que você criou parece estar corretamente configurada para atualizar o level e o progresso toda vez que é chamada.

No entanto, não consegui identificar uma pergunta específica em seu post. Se você está enfrentando algum problema ou tem alguma dúvida sobre o código que escreveu, por favor, forneça mais detalhes para que eu possa te ajudar de forma mais eficaz.

Espero ter ajudado e bons estudos!

Olá Matheus Brandino. O Post foi apenas para validar a solução do desafio, obrigado.