0% ont trouvé ce document utile (0 vote)
72 vues11 pages

Flutter Code

Cette application d'urgence développée avec Flutter permet aux utilisateurs d'envoyer des alertes, de créer des groupes de contacts et de visualiser des messages d'urgence. Elle utilise une interface à onglets avec des fonctionnalités telles que la gestion d'état, des dialogues pour la création de groupes et une liste de messages triée par date. Des améliorations possibles incluent l'intégration d'une base de données, l'authentification, des notifications push et la géolocalisation.

Transféré par

Clovis Muvunga
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOC, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
72 vues11 pages

Flutter Code

Cette application d'urgence développée avec Flutter permet aux utilisateurs d'envoyer des alertes, de créer des groupes de contacts et de visualiser des messages d'urgence. Elle utilise une interface à onglets avec des fonctionnalités telles que la gestion d'état, des dialogues pour la création de groupes et une liste de messages triée par date. Des améliorations possibles incluent l'intégration d'une base de données, l'authentification, des notifications push et la géolocalisation.

Transféré par

Clovis Muvunga
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOC, PDF, TXT ou lisez en ligne sur Scribd

Voici une version de cette application d'urgence développée avec Flutter :

```dart

import 'package:flutter/material.dart';

void main() => runApp(EmergencyApp());

class EmergencyApp extends StatelessWidget {

@override

Widget build(BuildContext context) {

return MaterialApp(

title: 'Emergency Connect',

theme: ThemeData(

primarySwatch: Colors.blue,

visualDensity: VisualDensity.adaptivePlatformDensity,

),

home: HomeScreen(),

);

class HomeScreen extends StatefulWidget {

@override

_HomeScreenState createState() => _HomeScreenState();

}
class _HomeScreenState extends State<HomeScreen> with SingleTickerProviderStateMixin {

late TabController _tabController;

final List<EmergencyGroup> _groups = [];

final List<EmergencyMessage> _messages = [];

@override

void initState() {

super.initState();

_tabController = TabController(length: 3, vsync: this);

void _sendEmergencyAlert() {

final newMessage = EmergencyMessage(

content: '🚨 ALERTE URGENTE! J\'ai besoin d\'aide immédiate!',

group: 'urgence-générale',

timestamp: DateTime.now(),

);

setState(() {

_messages.add(newMessage);

});

ScaffoldMessenger.of(context).showSnackBar(

SnackBar(
content: Text('Alerte envoyée à tous les contacts!'),

duration: Duration(seconds: 2),

),

);

void _createNewGroup() async {

final TextEditingController nameController = TextEditingController();

bool isPrivate = true;

await showDialog(

context: context,

builder: (context) => AlertDialog(

title: Text('Créer un groupe'),

content: Column(

mainAxisSize: MainAxisSize.min,

children: [

TextField(

controller: nameController,

decoration: InputDecoration(labelText: 'Nom du groupe'),

),

SwitchListTile(

title: Text('Groupe privé'),

value: isPrivate,

onChanged: (value) => isPrivate = value,


),

],

),

actions: [

TextButton(

onPressed: () => Navigator.pop(context),

child: Text('Annuler'),

),

ElevatedButton(

onPressed: () {

if (nameController.text.isNotEmpty) {

setState(() {

_groups.add(EmergencyGroup(

name: nameController.text,

isPrivate: isPrivate,

members: ['Moi', 'Contact 1', 'Contact 2'],

));

});

Navigator.pop(context);

},

child: Text('Créer'),

),

],

),
);

@override

Widget build(BuildContext context) {

return Scaffold(

appBar: AppBar(

title: Text('Emergency Connect'),

bottom: TabBar(

controller: _tabController,

tabs: [

Tab(icon: Icon(Icons.warning), text: 'Urgence'),

Tab(icon: Icon(Icons.group), text: 'Groupes'),

Tab(icon: Icon(Icons.message), text: 'Messages'),

],

),

),

body: TabBarView(

controller: _tabController,

children: [

_buildEmergencyTab(),

_buildGroupsTab(),

_buildMessagesTab(),

],

),
);

Widget _buildEmergencyTab() {

return Column(

children: [

SizedBox(height: 20),

ElevatedButton.icon(

icon: Icon(Icons.warning, size: 30),

label: Text('ALERTE GÉNÉRALE', style: TextStyle(fontSize: 20)),

style: ElevatedButton.styleFrom(

primary: Colors.red,

padding: EdgeInsets.symmetric(vertical: 20, horizontal: 30),

),

onPressed: _sendEmergencyAlert,

),

SizedBox(height: 20),

Expanded(

child: ListView(

children: [

ListTile(

leading: Icon(Icons.person),

title: Text('Contact d\'urgence 1'),

subtitle: Text('Dernière connexion: il y a 2 min'),

),
ListTile(

leading: Icon(Icons.person),

title: Text('Contact d\'urgence 2'),

subtitle: Text('En ligne'),

),

],

),

),

],

);

Widget _buildGroupsTab() {

return Column(

children: [

Padding(

padding: EdgeInsets.all(16.0),

child: ElevatedButton(

onPressed: _createNewGroup,

child: Text('Créer un nouveau groupe'),

),

),

Expanded(

child: ListView.builder(

itemCount: _groups.length,
itemBuilder: (context, index) => Card(

child: ListTile(

leading: Icon(_groups[index].isPrivate ? Icons.lock : Icons.public),

title: Text(_groups[index].name),

subtitle: Text('Membres: ${_groups[index].members.join(', ')}'),

),

),

),

),

],

);

Widget _buildMessagesTab() {

return ListView.builder(

reverse: true,

itemCount: _messages.length,

itemBuilder: (context, index) {

final message = _messages.reversed.toList()[index];

return Card(

child: ListTile(

leading: Icon(Icons.warning, color: Colors.red),

title: Text(message.content),

subtitle: Text('${_formatTime(message.timestamp)} - ${message.group}'),

),
);

},

);

String _formatTime(DateTime date) {

return '${date.hour}:${date.minute.toString().padLeft(2, '0')}';

class EmergencyGroup {

final String name;

final bool isPrivate;

final List<String> members;

EmergencyGroup({

required this.name,

required this.isPrivate,

required this.members,

});

class EmergencyMessage {

final String content;

final String group;


final DateTime timestamp;

EmergencyMessage({

required this.content,

required this.group,

required this.timestamp,

});

```

Cette version Flutter inclut :

1. **Structure principale** :

- Système d'onglets avec TabBar

- Design Material moderne

- Gestion d'état avec setState

2. **Fonctionnalités** :

- Bouton d'alerte d'urgence avec confirmation

- Création de groupes (publics/privés)

- Liste des messages d'urgence avec horodatage

- Liste des contacts d'urgence

- Interface responsive

3. **Composants clés** :
- Dialogues de création de groupe

- Cartes interactives pour les groupes

- Liste des messages inversée (plus récents en premier)

- Design cohérent avec les bonnes pratiques Material Design

Pour améliorer cette application, vous pourriez :

1. Ajouter une base de données locale avec Hive ou SQLite

2. Implémenter l'authentification avec Firebase

3. Ajouter des notifications push

4. Intégrer la géolocalisation

5. Ajouter des appels vocaux/VoIP

6. Implémenter le chiffrement des messages

Exécutez l'application avec :

```bash

flutter run

```

Assurez-vous d'ajouter les dépendances nécessaires dans `pubspec.yaml` selon les fonctionnalités que
vous ajouterez.

Vous aimerez peut-être aussi