Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

o id esta recebendo uma string "id"

Boa tarde,

Ao fazer a função registerJournal, o id parou de registrar valores aleatórios e está somento "id", quando eu dou o restart, ele vem o id certo, porém ao escrever e salvar a anotação, ele vem como "id":

import 'package:flutter/material.dart';
import 'package:flutter_webapi_first_course/helpers/weekday.dart';
import 'package:flutter_webapi_first_course/services/journal_service.dart';

import '../../../models/journal.dart';

class AddJournalScreen extends StatelessWidget {
  final Journal journal;
  AddJournalScreen({Key? key, required this.journal}) : super(key: key);
  final TextEditingController _contentcontroller =  TextEditingController();
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(
            "${WeekDay(journal.createdAt.weekday).long}, ${journal.createdAt.day} | ${journal.createdAt.month} | ${journal.createdAt.year}"),
      actions: [
        IconButton(onPressed: (){
          registerJournal(context);
        }, icon: const Icon(Icons.check))
      ],
      ),
      body: Padding(
        padding: const EdgeInsets.all(8.0),
        child: TextField(
          controller: _contentcontroller,
          keyboardType: TextInputType.multiline,
          style: const TextStyle(fontSize: 24),
          expands: true,
          minLines: null,
          maxLines: null,
        ),
      ),
    );
  }
  registerJournal(BuildContext context) async{
    String content = _contentcontroller.text;
    journal.content = content;
    JournalService service = JournalService();
    bool result = await service.register(journal);
    Navigator.pop(context, result);
  }
}
{
  "learnhttp": {
    "content": "Hello World"
  },
  "journals": [
    {
      "id": "b8763cb0-c6b9-11ee-8ee2-312410bf4b98",
      "content": "",
      "created_At": "2024-02-08 19:39:06.111290",
      "updated_At": "2024-02-08 19:39:06.111301"
    },
    {
      "id": "id",
      "content": "Ola",
      "created_At": "2024-02-08 19:39:11.649948",
      "updated_At": "2024-02-08 19:39:11.649956"
    }
  ]
}
3 respostas

Olá, Vitória. Tudo bem com você?

Pelo que você descreveu, você está tentando registrar novas anotações e o id está recebendo a string "id" em vez de um valor aleatório, correto?

Isso pode estar ocorrendo devido a algum problema no serviço que gera os ids. Você mencionou que ao reiniciar a aplicação, o id é gerado corretamente. Isso me leva a crer que pode haver algum problema na inicialização do serviço que gera os ids ou na forma como ele é chamado durante a execução do método registerJournal.

No código que você compartilhou, não consigo ver onde o id do journal é definido. Normalmente, em uma aplicação Flutter que se comunica com uma WebAPI, o id é gerado no servidor quando uma nova anotação é criada. No entanto, se você está gerando o id no cliente (no aplicativo Flutter), você precisará garantir que um novo id seja gerado cada vez que uma anotação for criada.

Uma possível solução seria garantir que o id seja gerado corretamente antes de chamar o método registerJournal. Por exemplo:

String newId = generateNewId(); // Substitua por sua lógica de geração de id
journal.id = newId;
registerJournal(context);

No entanto, sem ver o código completo do seu projeto, é difícil dizer exatamente o que está causando o problema. Se você puder compartilhar mais detalhes sobre como o id é gerado e onde isso ocorre no seu código, poderei fornecer uma resposta mais precisa.

Espero ter ajudado e bons estudos!

Fala pessoal!

Em complemento ao que o Renan trouxe, a funcionalidade de adicionar ao iniciar aplicação que adicionamos no vídeo anterior, você pode comentar (ou remover) esse código da main;

Sobre o momento que o ID é gerado, nesse caso é no arquivo journal_card.dart, verifica se na linha do Navigator.pushNamed() se os arguments passam um objeto similar a esse:

Journal(
  id: const Uuid().v1(),
  content: "",
  createdAt: showedDate,
  updatedAt: showedDate,
),

É aqui que o id é gerado quando estamos criando um novo registro.

Qualquer coisa, manda seu journal_card.dart pra gente analisar, tá?

Obrigadão pessoal!

solução!

Meu journal_card estava igual, porem algum parte do código devo ter esquecido de configurar, pois peguei o projeto da Alura e o id está funcionando agora.

Obrigado pelo retorno!