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,