ctzon_api 0.1.12
ctzon_api: ^0.1.12 copied to clipboard
A library for handling HTTP requests with dialogs and shared preferences.
ctzon_api #
Libreria Flutter/Dart privata che incapsula il flusso di autenticazione di Ctzon
(login, registrazione, password recovery, profilo, pagine di supporto) e
espone un client HTTP pronto per parlare con le API proprietarie (/api/v3).
È pensata per essere integrata in app interne senza dover riscrivere la logica
di gestione sessione o le viste comuni.
Caratteristiche principali #
Httpwrapper con gestione token JWT, refresh e storage tramiteshared_preferences.- Pagine già pronte (
LoginPage,Register,RecoverPassword, ecc.) con UI responsive e supporto social login (Apple/Google). - Dialoghi e snackbar di feedback uniformi tramite
Dialogs. - Supporto ambienti production/stage con
CtzonApiSettings.getApiUrl(). - Classi JSON per account, slot, punti loyalty, ecc. per serializzare velocemente i payload restituiti dall'API.
Installazione #
Questo pacchetto non è pubblicato su pub.flutter-io.cn. Aggiungilo al tuo pubspec.yaml
come dipendenza locale o da repository Git privato:
dependencies:
ctzon_api:
git:
url: git@github.com:your-org/ctzon_api.git
ref: main
Esegui flutter pub get per scaricare i sorgenti.
Configurazione rapida #
Inizializza la libreria il prima possibile (es. subito dopo il bootstrap di Flutter) impostando chiave commerciale, ambiente ed eventuali URL di policy:
void main() {
WidgetsFlutterBinding.ensureInitialized();
CtzonApiSettings.set(
const String.fromEnvironment('CTZON_KEY'),
const bool.fromEnvironment('CTZON_DEV', defaultValue: false),
const PlaceholderHomePage(),
privacyUrl: 'https://www.ctzon.it/privacy',
thermsUrl: 'https://www.ctzon.it/terms',
socialLogin: true,
);
runApp(const MyApp());
}
Utilizzo #
Login programmatico #
final http = Http(context: context);
final success = await http.doLogin(emailController.text, passwordController.text);
if (success) {
Navigator.pushReplacementNamed(context, '/home');
} else {
// L'errore dettagliato è in http.errorMessage tramite elaborateResponse
}
Widget pronti #
Navigator.of(context).push(
MaterialPageRoute(builder: (_) => const LoginPage()),
);
Sono disponibili anche Register, RecoverPassword e componenti di supporto
nella cartella lib/pages.
Chiamate API custom #
final req = await HttpRequest().httpRequest(
HttpIntent('booking/slots', {'date': selectedDay.toIso8601String()}),
context,
'Carico le disponibilità...',
method: HttpMethod.get,
);
if (req.exception == null) {
final slots = (req.response['data'] as List)
.map((json) => Slot.fromJson(json))
.toList();
// usa slots
}
Note operative #
- Questo repository contiene logica e asset proprietari: non distribuirlo fuori dal perimetro aziendale.
- Non essendoci pubblicazione pubblica, la gestione delle issue e del versioning
avviene internamente (vedi
CHANGELOG.md). - Prima di pubblicare un'app che usa questa libreria ricordati di personalizzare i testi, gli URL di policy e di verificare che i flussi social siano autorizzati per i bundle identifier in uso.