Pular para o conteúdo principal

Sua primeira feature

A lib expõe um CLI Dart que gera o esqueleto completo de uma feature CRUD seguindo as convenções do framework.

Gerar a feature

dart run archbase_flutter:archbase feature cliente

Saída:

✓ Feature "cliente" gerada em lib/features/cliente

+ lib/features/cliente/models/cliente.dart
+ lib/features/cliente/cliente_repository.dart
+ lib/features/cliente/cliente_controller.dart
+ lib/features/cliente/cliente_list_page.dart
+ lib/features/cliente/cliente_form_page.dart
+ lib/features/cliente/cliente_detail_page.dart

Próximos passos:
1. Ajuste o model em lib/features/cliente/models/cliente.dart
2. Plug a rota da ClienteListPage no seu router
3. (opcional) Crie um provider Riverpod/Get binding pro controller

O que cada arquivo faz

ArquivoResponsabilidade
models/cliente.dartDTO + LabeledEnum de status, toJson/fromJson
cliente_repository.dartWrapper do ArchbaseApiClient com list, get, create, update, delete
cliente_controller.dartArchbaseController<ClienteState> com loadFirstPage, loadNextPage, save, remove
cliente_list_page.dartArchbaseCrudListScreen com busca + paginação + tap-to-edit
cliente_form_page.dartArchbaseCrudFormScreen com validação + descarte + delete
cliente_detail_page.dartArchbaseDetailScreen (seções verticais)

Opções do CLI

# Endpoint customizado
dart run archbase_flutter:archbase feature pdv --endpoint /api/v2/points-of-sale

# Outro diretório raiz
dart run archbase_flutter:archbase feature cliente --root src

# Sobrescrever arquivos existentes
dart run archbase_flutter:archbase feature cliente --force

Aceita qualquer casing

dart run archbase_flutter:archbase feature point-of-sale
dart run archbase_flutter:archbase feature pointOfSale
dart run archbase_flutter:archbase feature PointOfSale

Todos geram lib/features/point_of_sale/ com classe PointOfSale, controller PointOfSaleController, etc.

Plug no router

Após gerar, basta adicionar a rota no seu router (go_router, auto_route, Navigator 1.0, etc.):

import 'features/cliente/cliente_list_page.dart';

// Em algum lugar do router:
case '/clientes':
return MaterialPageRoute(builder: (_) => const ClienteListPage());

E está pronto — você tem busca, paginação infinita, criar/editar/excluir com confirmação e tratamento de erro, tudo herdado das telas templates da archbase.

Para mais detalhes do CLI, veja a referência completa.