Integração entre um app Flutter e uma API .NET 8, com comunicação via REST, usando PostgreSQL como banco de dados.
- Visão Geral
- Funcionalidades
- Pré-requisitos
- Instalação e Execução
- Estrutura do Projeto
- Dicas e Solução de Problemas
- Contribuição
Este projeto demonstra como um aplicativo Flutter pode interagir com uma API REST construída em .NET 8, para realizar as operações básicas CRUD (Create, Read, Update, Delete).
O backend usa PostgreSQL como banco de dados para persistência de dados.
- GET – recuperar registros do banco
- POST – inserir novo registro
- PUT – atualizar registro existente
- DELETE – remover registro
- Conexão entre Flutter e a API
- Serialização / desserialização JSON
- Estrutura organizada entre camadas (models, controllers, serviços)
Antes de executar o projeto, é necessário:
- Instalar o .NET 8 SDK
- Instalar Flutter / Dart SDK
- Instalar PostgreSQL
- No backend, instalar os pacotes NuGet:
Microsoft.EntityFrameworkCore
Microsoft.EntityFrameworkCore.Tools
Microsoft.VisualStudio.Web.CodeGeneration
Microsoft.VisualStudio.Web.CodeGeneration.Design
Npgsql.EntityFrameworkCore.PostgreSQL
-
Abra o projeto
WebApi
no seu IDE. -
No Package Manager Console (ou terminal equivalente), execute:
Add-Migration "initial migration"
-
Configurar o Banco de Dados PostgreSQL
-
Certifique-se de que o PostgreSQL esteja instalado e em execução.
-
Atualize a connection string no arquivo appsettings.json da API, inserindo suas credenciais de acesso, host e nome do banco de dados. Exemplo:
"ConnectionStrings": { "DefaultConnection": "Host=localhost;Port=5432;Database=WebApi;Username=postgres;Password=suasenha" }
-
-
Após ajustar a conexão, rode novamente o comando:
Update-Database
-
No arquivo de solução (.sln), remova o trecho
<InvariantGlobalization>true</InvariantGlobalization>
Esse trecho deve ser removido para evitar conflitos relacionados à globalização e à cultura invariável no .NET, que podem causar falhas em determinadas operações (principalmente no uso de EntityFrameworkCore e PostgreSQL em ambientes não Windows).
-
Executar a atualização do banco de dados
- Após remover o trecho acima, execute o comando abaixo no Package Manager Console:
Update-Database
Isso aplicará as migrações criadas anteriormente e criará as tabelas correspondentes no banco de dados PostgreSQL.
-
Executar a API
-
Depois que as migrações forem aplicadas, inicie a aplicação
-
Verifique no console o endereço em que a API está rodando (geralmente algo como http://localhost:5000).
-
-
No projeto Flutter:
-
Abra o arquivo lib/api_handler.dart.
-
Localize a variável responsável pela URL base da API (baseUri).
-
Atualize o valor para o endereço real da sua API .NET, por exemplo:
final String baseUri = "http://192.168.3.9:7018/api/users";
-
💡 Dica:
-
No emulador Android, use 10.0.2.2 em vez de localhost.
-
Em dispositivos físicos, use o IP da máquina que está executando a API.
-
Salve as alterações e execute o app Flutter:
flutter pub get flutter run
-
O app agora deve se comunicar corretamente com a API .NET e o banco de dados PostgreSQL.
/
├── WebApi/ # Backend em .NET 8
│ ├── Controllers/ # Endpoints REST
│ ├── Models/ # Modelos de dados
│ ├── Program.cs # Ponto de entrada da aplicação
│ ├── appsettings.json # Configurações e connection string
│ └── Migrations/ # Migrações geradas pelo EF Core
└── user_registration/ # Aplicativo Flutter
├── lib/
│ ├── main.dart # Início da excecução
│ ├── main_page.dart # Página principal
│ ├── user.dart # Model
│ ├── api_handler.dart # Requisições http
│ ├── edit_page.dart # Tela de edição
| ├── internet_checker.dart # Verifica conexão com internet
│ └── http/
│ └── http_extensions.dart # Mensagens do status
└── pubspec.yaml
-
Caso o comando Update-Database falhe, verifique se o PostgreSQL está em execução e se as credenciais de acesso estão corretas.
-
Se o app Flutter não conseguir conectar à API, confirme se:
- O backend está rodando (dotnet run ativo).
- A URL base foi configurada corretamente no código Flutter.
- O CORS está habilitado no backend para permitir chamadas do aplicativo.
- Para testar endpoints, você pode usar o SWAGGER.
Contribuições são bem-vindas! Para contribuir:
- Fork este repositório
- Crie uma branch para a feature ou correção (git checkout -b feat/nova-funcionalidade)
- Faça commits claros e atômicos
- Envie pull request com descrição das mudanças
Antes de submeter, verifique se:
- O código compila corretamente
- Não há erros de lint
- Documentação / comentários foram atualizados