debut projet dart

This commit is contained in:
2025-11-25 10:45:30 +01:00
parent 628b28d49f
commit 39a2da9b7d
135 changed files with 5012 additions and 0 deletions

16
my_travel/lib/main.dart Normal file
View File

@@ -0,0 +1,16 @@
import 'package:flutter/material.dart';
import 'views/home/home_view.dart';
void main() => runApp(const DrEvaristenTrip());
class DrEvaristenTrip extends StatelessWidget {
const DrEvaristenTrip({super.key});
@override
Widget build(BuildContext context) {
return const MaterialApp(
debugShowCheckedModeBanner: false,
home: HomeView(),
);
}
}

View File

@@ -0,0 +1,15 @@
class Activity {
final String id;
final String name;
final String image;
final double price;
final String city;
Activity({
required this.id,
required this.name,
required this.city,
required this.price,
required this.image,
});
}

View File

@@ -0,0 +1,9 @@
class City {
final String name;
final String image;
City({
required this.name,
required this.image,
});
}

View File

@@ -0,0 +1,26 @@
import 'package:flutter/material.dart';
import '../../../models/city_model.dart';
class CityView extends StatelessWidget {
final City city;
const CityView({
super.key,
required this.city,
});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(city.name),
),
body: Center(
child: Text(
'Bienvenue à ${city.name} !',
style: const TextStyle(fontSize: 25),
),
),
);
}
}

View File

@@ -0,0 +1,26 @@
import 'package:flutter/material.dart';
import '../../../models/city_model.dart';
import '../../../widgets/city_card.dart';
class HomeView extends StatelessWidget {
const HomeView({super.key});
@override
Widget build(BuildContext context) {
final List<City> cities = [
City(name: 'Paris', image: 'assets/images/cities/paris.jpg'),
City(name: 'Lyon', image: 'assets/images/cities/lyon.jpg'),
City(name: 'Nice', image: 'assets/images/cities/nice.jpg'),
];
return Scaffold(
appBar: AppBar(
title: const Text('DrEvaristen Trip'),
),
body: ListView.builder(
itemCount: cities.length,
itemBuilder: (context, index) => CityCard(city: cities[index]),
),
);
}
}

View File

@@ -0,0 +1,36 @@
import 'package:flutter/material.dart';
import '../models/activity_model.dart';
class ActivityCard extends StatelessWidget {
final Activity activity;
const ActivityCard({
super.key,
required this.activity,
});
@override
Widget build(BuildContext context) {
return Card(
elevation: 3,
child: Column(
children: [
Expanded(
child: Image.asset(
activity.image,
fit: BoxFit.cover,
width: double.infinity,
),
),
Padding(
padding: const EdgeInsets.all(8),
child: Text(
activity.name,
style: const TextStyle(fontSize: 18),
),
),
],
),
);
}
}

View File

@@ -0,0 +1,51 @@
import 'package:flutter/material.dart';
import '../models/city_model.dart';
import '../views/city/city_view.dart';
class CityCard extends StatelessWidget {
final City city;
const CityCard({super.key, required this.city});
@override
Widget build(BuildContext context) {
return Card(
elevation: 4,
margin: const EdgeInsets.all(10),
child: InkWell(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => CityView(city: city),
),
);
},
child: SizedBox(
height: 180,
child: Stack(
fit: StackFit.expand,
children: [
Image.asset(
city.image,
fit: BoxFit.cover,
),
Container(
alignment: Alignment.bottomLeft,
padding: const EdgeInsets.all(10),
color: Colors.black45,
child: Text(
city.name,
style: const TextStyle(
fontSize: 30,
color: Colors.white,
),
),
),
],
),
),
),
);
}
}