Files
2026-07-22 12:55:43 +02:00

54 lines
1.8 KiB
Dart

import 'package:shared_preferences/shared_preferences.dart';
import '../models/produit.dart';
/// Petits réglages persistés (préférences utilisateur) pour accélérer la saisie.
class Reglages {
Reglages._();
static final Reglages instance = Reglages._();
static const _cleDerniereUnite = 'derniere_unite';
static const _cleServeur = 'serveur_url';
/// Adresse par défaut du serveur PocketBase (le Raspberry Pi du magasin,
/// exposé via Tailscale : accessible aussi bien au magasin qu'à l'extérieur).
static const serveurParDefaut = 'https://db.tailb756e1.ts.net';
/// Anciennes adresses par défaut : si la tablette a encore l'une d'elles
/// enregistrée, on bascule automatiquement sur la nouvelle.
static const _anciensDefauts = {
'http://192.168.1.32:8090',
};
SharedPreferences? _prefs;
Future<SharedPreferences> get _p async =>
_prefs ??= await SharedPreferences.getInstance();
/// Adresse du serveur PocketBase (modifiable dans les réglages).
Future<String> serveurUrl() async {
final p = await _p;
final url = p.getString(_cleServeur);
if (url == null || _anciensDefauts.contains(url)) {
// Jamais réglé, ou ancienne adresse par défaut restée en mémoire.
if (url != null) await p.setString(_cleServeur, serveurParDefaut);
return serveurParDefaut;
}
return url;
}
Future<void> setServeurUrl(String url) async =>
(await _p).setString(_cleServeur, url.trim());
/// Dernière unité choisie lors d'un ajout (pour la re-proposer par défaut).
Future<String> derniereUnite() async {
final p = await _p;
return p.getString(_cleDerniereUnite) ?? Unites.g;
}
Future<void> memoriserUnite(String unite) async {
final p = await _p;
await p.setString(_cleDerniereUnite, unite);
}
}