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

Lista de exercícios - 1; 2; 3;

Exercício 1: Criando o modelo de tarefa

Arquivo:  lib/task.dart

// Classe - tarefa da lista de compras
class Task {
  String id;
  String title;
  String description;
  bool isCompleted;

  // Construtor - cria uma nova tarefa
  Task({
    required this.id,
    required this.title,
    required this.description,
    this.isCompleted = false, // Tarefas novas iniciam como NÃO concluidas
  });

  // Converte o objeto Task em um Map
  Map<String, dynamic> toMap() {
    return {
      'id': id,
      'title': title,
      'description': description,
      'isCompleted': isCompleted,
    };
  }

  // Cria um objeto Task a partir de um Map
  factory Task.fromMap(Map<String, dynamic> map) {
    return Task(
      id: map['id'],
      title: map['title'],
      description: map['description'],
      isCompleted: map['isCompleted'] ?? false,
    );
  }

  // Metodo para imprimir a tarefa de forma legivel
  @override
  String toString() {
    String status = isCompleted ? '[X]' : '[ ]';
    return '$status $title';
  }
}

Exercício 2: Implementando um controlador de stream

Arquivo: lib/task_manager.dart - trecho do código utilizado

import 'dart:async';
import 'task.dart';

class TaskManager {
  final List<Task> _listTasks = [];
  
  // StreamController para gerenciar notificacoes
  final StreamController<String> _streamController = StreamController<String>();
  
  // Getter para expor a stream (somente leitura)
  Stream<String> get notificationStream => _streamController.stream;
  
  // ... resto dos metodos ...
  
  // Metodo para fechar o StreamController
  void dispose() {
    _streamController.close();
  }
}

Exercício 3: Enviando atualizações para a stream

Arquivo: bin/main.dart - trecho do código utilizado

import 'package:listacompras/task.dart';
import 'package:listacompras/task_manager.dart';

void main() async {
  print('=== GERENCIADOR DE LISTA DE COMPRAS ===\n');

  final taskManager = TaskManager();

// Criar o ouvinte para as notificacoes
  final subscription = taskManager.notificationStream.listen((mensagem) {
    print('[NOTIFICACAO] $mensagem');
  });

  // ... continuação do código ...
}

Matricule-se agora e aproveite até 50% OFF

O maior desconto do ano para você evoluir com a maior escola de tecnologia

QUERO APROVEITAR
1 resposta
solução!

Olá, José, como vai?

O código está consistente e cumpre bem o que a atividade propõe. A estrutura está clara, organizada e demonstra boa compreensão dos conceitos de modelos, streams e listeners no Dart.

Parabéns pelo trabalho e obrigado por compartilhar seu exercício. Continue enviando suas soluções, o fórum está à disposição.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!