1
resposta

Resolução do desafio

  • No arquivo task.dart, eu movi a maestria para o nível do widget:
class Task extends StatefulWidget {
  final String nome;
  final String foto;
  final int dificuldade;
  int maestria = 0;
  ...
 }
  • No initial_screen.dart, criei uma propriedade level, e uma função para calcular esse level utilizando a dificuldade da tarefa e o nível de maestria:
class _InitialScreenState extends State<InitialScreen> {

  int level = 0;

  void updateLevel() {
    level = TaskInherited.of(context).taskList.map((task) => task.dificuldade*task.maestria).reduce((a, b) => a+b);
  }
  ...
}
  • No widget AppBar, eu adicionei um IconButton que ao ser clicado, atualiza o level:
AppBar(
        toolbarHeight: 80,
          title: Column(
        children: [
          Row(
            mainAxisAlignment: MainAxisAlignment.spaceAround,
            children: [
              const Text('Tarefas'),
              IconButton(onPressed: () {
                setState(() {
                  updateLevel();
                });
              },
              icon: const Icon(Icons.refresh))
            ],
          ),
          Row(
            mainAxisAlignment: MainAxisAlignment.spaceAround,
            children: [
              const SizedBox(
                  width: 200,
                  child: LinearProgressIndicator(
                      color: Colors.white, value: 1)),
              Text('Level: $level')
            ],
          )
        ],
      ))

Screenshot de uma tela de celular, com uma barra superior escrito Tarefas, um ícone de recarregar ao lado direito. Embaixo uma barra de progresso, ao lado esquerdo está escrito Level: 5. Embaixo há 2 cards, cada um com uma tarefa. A primeira tarefa está escrito Aprender Flutter, possui 3 estrelas abaixo.  A segunda tarefa está escrito Andar de Bike, e tem 2 estrelas embaixo

1 resposta