Skip to content
Snippets Groups Projects
Commit 0a27acc2 authored by RENAULT Juliette's avatar RENAULT Juliette
Browse files

description updated et reliée à la base de données

parent e3973b97
No related branches found
No related tags found
No related merge requests found
......@@ -9,34 +9,16 @@ import '../Theme_colors/colors.dart';
import 'package:atlub/Services/groupesMessagerie.dart';
import 'package:firebase_auth/firebase_auth.dart';
/**ListView.builder(
itemCount: clubsData.length,
itemBuilder: (context, index) {
final clubId = clubsData.keys.elementAt(index);
final clubData = clubsData[clubId];
return Club(
key: Key(clubId), // Use clubId as the key for each club
clubData: clubData,
); // Passage des données du club à Club widget
},
),**/
class Club extends StatelessWidget {
final Map<String, dynamic>? clubData;// Les données du club
final Map<String, dynamic>? clubData; // Les données du club
final String clubid;
const Club({Key? key, required this.clubData, required this.clubid});
@override
Widget build(BuildContext context) {
DatabaseService db= DatabaseService();
final userinBDX = Provider.of<UserProvider>(context).userinBDX ?? {"BDA":false, "BDS":false, "BDD":false, "BDE":false};
DatabaseService db = DatabaseService();
final userinBDX = Provider.of<UserProvider>(context).userinBDX ?? {"BDA": false, "BDS": false, "BDD": false, "BDE": false};
//de type {"BDA":false, "BDS":false, "BDD":false, "BDE":false};
GroupesMessagerie groupe = GroupesMessagerie();
......@@ -45,32 +27,34 @@ class Club extends StatelessWidget {
return Padding(
padding: const EdgeInsets.all(12.0),
child: Container(
padding: EdgeInsets.all(5),
decoration: BoxDecoration(
color: Color(0x806ebebf),
borderRadius: BorderRadius.circular(10),
//border: Border.all(color: AppTheme.colors.deepBlue, width: 2)
),
child: ExpansionTile(
title: Text(clubData?['nom'] ?? '', style: TextStyle(color: AppColor.violetBlue, fontWeight: FontWeight.bold, fontSize: 20)),
subtitle: FutureBuilder<String?>(
future: db.getPresidentClubnom(clubid, "current"),
builder: (context, snapshot) {
return RichText(text: TextSpan(
text:'Président: ',
style: const TextStyle(color: AppColor.black, fontWeight: FontWeight.bold),
children: [
TextSpan(
text: snapshot.data ?? '',
style: const TextStyle(color: AppColor.darkBlue, fontWeight: FontWeight.w600),
)
]
));
}
),
title: Text(
clubData?['nom'] ?? '',
style: TextStyle(color: AppColor.violetBlue, fontWeight: FontWeight.bold, fontSize: 20),
),
subtitle: FutureBuilder<String?>(
future: db.getPresidentClubnom(clubid, "current"),
builder: (context, snapshot) {
return RichText(
text: TextSpan(
text: 'Président: ',
style: const TextStyle(color: AppColor.black, fontWeight: FontWeight.bold),
children: [
TextSpan(
text: snapshot.data ?? '',
style: const TextStyle(color: AppColor.darkBlue, fontWeight: FontWeight.w600),
),
],
),
);
},
),
children: [
Padding(
padding: const EdgeInsets.only(left: 15.0),
......@@ -79,92 +63,102 @@ class Club extends StatelessWidget {
Align(
alignment: Alignment.centerLeft,
child: FutureBuilder<String?>(
future: db.getPresidentClubnom(clubid, "co"),
builder: (context, snapshot) {
return RichText(text: TextSpan(
text:'Co-président: ',
style: const TextStyle(color: AppColor.black, fontWeight: FontWeight.bold),
children: [
TextSpan(
text: snapshot.data ?? '',
style: const TextStyle(color: AppColor.darkBlue, fontWeight: FontWeight.w600),
)
]
));
}
future: db.getPresidentClubnom(clubid, "co"),
builder: (context, snapshot) {
return RichText(
text: TextSpan(
text: 'Co-président: ',
style: const TextStyle(color: AppColor.black, fontWeight: FontWeight.bold),
children: [
TextSpan(
text: snapshot.data ?? '',
style: const TextStyle(color: AppColor.darkBlue, fontWeight: FontWeight.w600),
),
],
),
);
},
),
),
const SizedBox(height: 10,),
const Align(
const SizedBox(height: 10),
Align(
alignment: Alignment.centerLeft,
child: Text(
'Description :',
style: TextStyle(
color: AppColor.black,
fontSize: 15,
fontWeight: FontWeight.bold
),
child: FutureBuilder<String?>(
future: db.getClubDescription(clubid),
builder: (context, snapshot) {
return RichText(
text: TextSpan(
text: 'Description: ',
style: const TextStyle(color: AppColor.black, fontWeight: FontWeight.bold),
children: [
TextSpan(
text: snapshot.data ?? '',
style: const TextStyle(color: AppColor.darkBlue, fontWeight: FontWeight.w600),
),
],
),
);
},
),
),
const Text('Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.')
const SizedBox(height: 10),
],
),
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
//bouton supprimer
if (userinBDX[clubData?['BDX']] ?? false)
GestureDetector(
onTap: () {
db.deleteClub(clubid);
},
child: Chip(
label: Text(
'Supprimer',
style: Theme.of(context).textTheme.titleMedium?.copyWith(color: AppColor.white),
),
side: BorderSide.none,
backgroundColor: AppColor.turquoiseBlue,
),
),
//bouton suivre
GestureDetector(
onTap: () async {
String idGroup = await groupe.getgroupfromclub(clubid);
await groupe.addUserToGroup(idGroup , iduser!);
},
child: Chip(
label: Text(
'Suivre',
style: Theme.of(context).textTheme.titleMedium?.copyWith(color: AppColor.white),
),
side: BorderSide.none,
backgroundColor: AppColor.turquoiseBlue,
),
),
//bouton modifier
if (userinBDX[clubData?['BDX']] ?? false)
GestureDetector(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => ModClub(idClub: clubid)),
);
},
child: Chip(
label: Text(
'Modifier',
style: Theme.of(context).textTheme.titleMedium?.copyWith(color: AppColor.white),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
//bouton supprimer
if (userinBDX[clubData?['BDX']] ?? false)
GestureDetector(
onTap: () {
db.deleteClub(clubid);
},
child: Chip(
label: Text(
'Supprimer',
style: Theme.of(context).textTheme.titleMedium?.copyWith(color: AppColor.white),
),
side: BorderSide.none,
backgroundColor: AppColor.turquoiseBlue,
),
),
//bouton suivre
GestureDetector(
onTap: () async {
String idGroup = await groupe.getgroupfromclub(clubid);
await groupe.addUserToGroup(idGroup, iduser!);
},
child: Chip(
label: Text(
'Suivre',
style: Theme.of(context).textTheme.titleMedium?.copyWith(color: AppColor.white),
),
side: BorderSide.none,
backgroundColor: AppColor.turquoiseBlue,
),
),
side: BorderSide.none,
backgroundColor: AppColor.turquoiseBlue,
),
//bouton modifier
if (userinBDX[clubData?['BDX']] ?? false)
GestureDetector(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => ModClub(idClub: clubid)),
);
},
child: Chip(
label: Text(
'Modifier',
style: Theme.of(context).textTheme.titleMedium?.copyWith(color: AppColor.white),
),
side: BorderSide.none,
backgroundColor: AppColor.turquoiseBlue,
),
),
],
),
],
),
]
],
),
),
);
......
......@@ -546,6 +546,19 @@ class DatabaseService {
}
}
// Récupérer la description d'un club à partir de son ID
Future<String> getClubDescription(String clubId) async {
Map<String, Map<String, dynamic>> clubs = await getClubs();
if (clubs.containsKey(clubId)) {
Map<String, dynamic> clubData = clubs[clubId]!;
return clubData['description'];
} else {
throw Exception(
"L'id du club n'a pas été trouvé dans la base de données.");
}
}
// Récupérer la liste des posts
Future<Map<String, Map<String, dynamic>>> getPosts() async {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment