1
resposta

09 Faça como eu fiz: isolando em um serviço - Parte 1

1.Crie um diretório services em lib e adicione um arquivo account_service.dart:

class AccountServices {
final  StreamController<String> _streamController = StreamController<String>();
Stream<String> get streamInfos => _streamController.stream;

2.Crie o arquivo account_service.dart na pasta services;

Future<List<Account>> getAll() async {
  Response response = await get(Uri.parse(url));
 _streamController.add("${DateTime.now()} | Requisicão de leitura.");

3. No arquivo account_service.dart, crie a classe AccountService;

List<Account> listAccounts = [];

for (dynamic dyn in listDynamic){
  Map<String, dynamic> mapAccount = dyn as Map<String, dynamic>;
  Account account = Account.fromMap(mapAccount);
  listAccounts.add(account);
  }
   return listAccounts;
}

4.Mova as funções correspondentes a getAll e addAccount para dentro do serviço;

Future<void> addAccount(Account account) async {
    List<Account> listAccounts = await getAll();
    listAccounts.add(account);

    List<Map<String, dynamic>> listContent = [];
  for (Account account in listAccounts){
    listContent.add(account.toMap());
  }

  String content = json.encode(listContent);
1 resposta

Olá, Zilda, como vai?

Sua implementação demonstra boa compreensão da ideia de separar a lógica de comunicação com a API em um serviço dedicado. O fluxo de leitura, transformação dos dados em Account e retorno da lista está bem organizado, mantendo a aplicação mais modular e clara.

Parabéns por compartilhar o exercício e seguir corretamente os passos propostos. Continue publicando suas evoluções, o fórum está à disposição.

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