- Ajout système complet de gestion des secteurs avec contours géographiques - Import des contours départementaux depuis GeoJSON - API REST pour la gestion des secteurs (/api/sectors) - Service de géolocalisation pour déterminer les secteurs - Migration base de données avec tables x_departements_contours et sectors_adresses - Interface Flutter pour visualisation et gestion des secteurs - Ajout thème sombre dans l'application - Corrections diverses et optimisations 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
106 lines
3.0 KiB
Dart
Executable File
106 lines
3.0 KiB
Dart
Executable File
import 'package:flutter/material.dart';
|
|
import 'package:geosector_app/core/services/api_service.dart';
|
|
|
|
/// Widget qui affiche les informations sur l'environnement actuel
|
|
/// Utile pour le débogage
|
|
class EnvironmentInfoWidget extends StatelessWidget {
|
|
final bool showInDialog;
|
|
|
|
const EnvironmentInfoWidget({
|
|
super.key,
|
|
this.showInDialog = false,
|
|
});
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
final apiService = ApiService.instance;
|
|
final environment = apiService.getCurrentEnvironment();
|
|
final apiUrl = apiService.getCurrentApiUrl();
|
|
final appIdentifier = apiService.getCurrentAppIdentifier();
|
|
|
|
final content = Padding(
|
|
padding: const EdgeInsets.all(16.0),
|
|
child: Column(
|
|
mainAxisSize: MainAxisSize.min,
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
children: [
|
|
Text(
|
|
'🌍 Environnement GeoSector',
|
|
style: Theme.of(context).textTheme.titleLarge?.copyWith(fontWeight: FontWeight.bold, color: _getEnvironmentColor(environment)),
|
|
),
|
|
const SizedBox(height: 16),
|
|
_buildInfoRow(context, 'Environnement', environment),
|
|
const Divider(),
|
|
_buildInfoRow(context, 'URL API', apiUrl),
|
|
const Divider(),
|
|
_buildInfoRow(context, 'App Identifier', appIdentifier),
|
|
const SizedBox(height: 20),
|
|
if (!showInDialog)
|
|
Align(
|
|
alignment: Alignment.center,
|
|
child: TextButton(
|
|
onPressed: () => Navigator.of(context).pop(),
|
|
child: const Text('Fermer'),
|
|
),
|
|
),
|
|
],
|
|
),
|
|
);
|
|
|
|
if (showInDialog) {
|
|
return content;
|
|
}
|
|
|
|
return Dialog(
|
|
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)),
|
|
child: content,
|
|
);
|
|
}
|
|
|
|
Widget _buildInfoRow(BuildContext context, String label, String value) {
|
|
return Padding(
|
|
padding: const EdgeInsets.symmetric(vertical: 8.0),
|
|
child: Row(
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
children: [
|
|
SizedBox(
|
|
width: 120,
|
|
child: Text(
|
|
label,
|
|
style: Theme.of(context).textTheme.bodyMedium?.copyWith(fontWeight: FontWeight.bold),
|
|
),
|
|
),
|
|
Expanded(
|
|
child: Text(
|
|
value,
|
|
style: Theme.of(context).textTheme.bodyMedium,
|
|
),
|
|
),
|
|
],
|
|
),
|
|
);
|
|
}
|
|
|
|
Color _getEnvironmentColor(String environment) {
|
|
switch (environment) {
|
|
case 'DEV':
|
|
return Colors.green;
|
|
case 'REC':
|
|
return Colors.orange;
|
|
case 'PROD':
|
|
return Colors.red;
|
|
default:
|
|
return Colors.grey;
|
|
}
|
|
}
|
|
|
|
/// Méthode statique pour afficher les informations sur l'environnement
|
|
/// dans une boîte de dialogue
|
|
static void show(BuildContext context) {
|
|
showDialog(
|
|
context: context,
|
|
builder: (context) => const EnvironmentInfoWidget(),
|
|
);
|
|
}
|
|
}
|