54 lines
1.8 KiB
Dart
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);
|
|
}
|
|
}
|