68 lines
1.9 KiB
Dart
68 lines
1.9 KiB
Dart
import 'package:flutter/material.dart';
|
|
|
|
class CityCard extends StatelessWidget {
|
|
final String name;
|
|
final String image;
|
|
final bool checked; // devient requis
|
|
final VoidCallback updateChecked;
|
|
const CityCard({
|
|
super.key,
|
|
required this.name,
|
|
required this.image,
|
|
required this.checked,
|
|
required this.updateChecked,
|
|
});
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Card(
|
|
elevation: 5,
|
|
clipBehavior: Clip.antiAlias,
|
|
child: SizedBox(
|
|
height: 150,
|
|
child: Stack(
|
|
fit: StackFit.expand,
|
|
children: [
|
|
Ink.image(
|
|
image: AssetImage(image),
|
|
fit: BoxFit.cover,
|
|
child: InkWell(onTap: updateChecked), // notifie le parent
|
|
),
|
|
Padding(
|
|
padding: const EdgeInsets.all(10),
|
|
child: Column(
|
|
children: [
|
|
// Icône favori : pleine si checked, sinon contour
|
|
Expanded(
|
|
child: Row(
|
|
mainAxisAlignment: MainAxisAlignment.end,
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
children: [
|
|
Icon(
|
|
checked ? Icons.star : Icons.star_border,
|
|
size: 30,
|
|
color: Colors.white,
|
|
),
|
|
],
|
|
),
|
|
),
|
|
Row(
|
|
children: [
|
|
Text(
|
|
name,
|
|
style: const TextStyle(
|
|
fontSize: 30,
|
|
color: Colors.white,
|
|
),
|
|
),
|
|
],
|
|
),
|
|
],
|
|
),
|
|
),
|
|
],
|
|
),
|
|
),
|
|
);
|
|
}
|
|
}
|