54 lines
1.5 KiB
Dart
54 lines
1.5 KiB
Dart
|
|
import 'package:flutter/material.dart';
|
||
|
|
import '../widgets/city_card.dart';
|
||
|
|
|
||
|
|
class Home extends StatefulWidget {
|
||
|
|
const Home({super.key});
|
||
|
|
|
||
|
|
@override
|
||
|
|
State<Home> createState() => _HomeState();
|
||
|
|
}
|
||
|
|
|
||
|
|
class _HomeState extends State<Home> {
|
||
|
|
// Liste "source de vérité" affichée dans l'UI
|
||
|
|
final List<Map<String, dynamic>> cities = [
|
||
|
|
{'name': 'Paris', 'image': 'assets/images/paris.jpg', 'checked': false},
|
||
|
|
{'name': 'Lyon', 'image': 'assets/images/lyon.jpg', 'checked': false},
|
||
|
|
{'name': 'Nice', 'image': 'assets/images/nice.jpg', 'checked': false},
|
||
|
|
];
|
||
|
|
|
||
|
|
// Fonction pour basculer l'état favori d'une ville
|
||
|
|
void switchChecked(Map<String, dynamic> city) {
|
||
|
|
setState(() {
|
||
|
|
city['checked'] = !(city['checked'] ?? false);
|
||
|
|
});
|
||
|
|
}
|
||
|
|
|
||
|
|
@override
|
||
|
|
Widget build(BuildContext context) {
|
||
|
|
return Scaffold(
|
||
|
|
appBar: AppBar(
|
||
|
|
leading: const Icon(Icons.home),
|
||
|
|
title: const Text('DrEvaristen Trip'),
|
||
|
|
actions: const [Icon(Icons.more_vert)],
|
||
|
|
),
|
||
|
|
body: Container(
|
||
|
|
padding: const EdgeInsets.all(10),
|
||
|
|
child: Column(
|
||
|
|
crossAxisAlignment: CrossAxisAlignment.stretch,
|
||
|
|
// On transforme chaque map en CityCard
|
||
|
|
children: [
|
||
|
|
for (final city in cities)
|
||
|
|
CityCard(
|
||
|
|
name: city['name'],
|
||
|
|
image: city['image'],
|
||
|
|
checked: city['checked'] ?? false,
|
||
|
|
updateChecked: () =>
|
||
|
|
switchChecked(city), // capture la bonne ville
|
||
|
|
),
|
||
|
|
],
|
||
|
|
),
|
||
|
|
),
|
||
|
|
);
|
||
|
|
}
|
||
|
|
}
|