Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Projeto] Desafio

//Barra de progresso e nível

Column(
            mainAxisAlignment: MainAxisAlignment.center,
            crossAxisAlignment: CrossAxisAlignment.center,
            children: [
              Row(
                mainAxisAlignment: MainAxisAlignment.center,
                crossAxisAlignment: CrossAxisAlignment.center,
                children: [
                  Text('Tarefa'),
                  SizedBox(width: 10),
                  SizedBox(
                    width: 25,
                    height: 25,
                    child: IconButton(
                        padding: EdgeInsets.all(0),
                        iconSize: 25,
                        onPressed: () =>
                            setState(() {
                              level = TaskInherited
                                  .of(context)
                                  .level;
                            }),
                        icon: Icon(Icons.restart_alt)),
                  )
                ],
              ),
              Row(
                mainAxisAlignment: MainAxisAlignment.center,
                crossAxisAlignment: CrossAxisAlignment.center,
                children: [
                  SizedBox(
                    width: 200,
                    child: LinearProgressIndicator(
                      color: Colors.white,
                      value: TaskInherited
                          .of(context)
                          .level / 100,
                    ),
                  ),
                  SizedBox(width: 10),
                  Text('Level: ${TaskInherited
                      .of(context)
                      .level}')
                ],
              )
            ]),

//Função de aumentar nível global

void increaseGlobalLevel(int taskLevel, int dificulade, int maestria) {
  level = double.parse(
      (level + (taskLevel / (dificulade * maestria * tasks.length)) / 10)
          .toStringAsFixed(2));
}

//Ao apertar Level Up em alguma das tasks, elas chamam uma função de update do nível global

void levelUp() {
    if (widget.level < 999) widget.level++;
    TaskInherited.of(context).increaseGlobalLevel(
        widget.level, widget.dificuldade, widget.maestry);
    setState(() {
      widget.progress =
          (widget.level / (widget.dificuldade * widget.maestry)) / 10;
      if (widget.progress >= 1.0 && widget.maestry < (colors.length)) {
        widget.maestry++;
        widget.level = 0;
        widget.progress = 0;
      }
    });
  }
1 resposta
solução!

Olá David!

Pelo que entendi, você está com dúvidas sobre como implementar a barra de progresso e o nível global no seu aplicativo Flutter. Vou te ajudar com isso!

No código que você compartilhou, você já tem uma estrutura básica para a barra de progresso e o nível. A barra de progresso é um LinearProgressIndicator e o nível é exibido em um Text. Agora, vamos ver como atualizar o nível global quando uma tarefa é concluída.

No trecho de código que você compartilhou, há uma função chamada levelUp(). Essa função é chamada quando o botão "Level Up" é pressionado em uma das tarefas. Nessa função, você incrementa o nível da tarefa e chama a função increaseGlobalLevel() do TaskInherited para atualizar o nível global.

A função increaseGlobalLevel() recebe como parâmetros o nível da tarefa, a dificuldade e a maestria. No corpo dessa função, você está atualizando o nível global com base nos valores passados e no número de tarefas existentes.

Aparentemente, o código está correto para atualizar o nível global. No entanto, é importante garantir que você esteja usando corretamente a classe TaskInherited e que ela esteja corretamente configurada para compartilhar o nível global entre os widgets.

Certifique-se de que você está usando o TaskInherited corretamente em todos os lugares necessários, como no IconButton que reinicia o nível global e na parte em que você exibe a barra de progresso e o nível. Além disso, verifique se você está passando corretamente o contexto para o TaskInherited quando chama a função increaseGlobalLevel().

Caso você esteja enfrentando algum problema específico ou tenha alguma dúvida adicional, por favor, me avise para que eu possa te ajudar de forma mais precisa.

Espero ter ajudado e bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software