Untitled
unknown
plain_text
4 years ago
3.8 kB
5
Indexable
import 'package:flutter/material.dart';
import 'package:flutter_app/models/meal.dart';
import 'package:flutter_app/views/meal_details_screen.dart';
class MealItem extends StatelessWidget {
final String id;
final String title;
final String imageUrl;
final int duration;
final Complexity complexity;
final Affordability affordability;
MealItem({
required this.id,
required this.title,
required this.imageUrl,
required this.duration,
required this.complexity,
required this.affordability,
});
String get complexityText {
switch (complexity) {
case Complexity.Simple:
return "Simple";
case Complexity.Challenging:
return "Challenging";
case Complexity.Hard:
return "Hard";
default:
return "Unknown";
}
}
String get affordabilityText {
switch (affordability) {
case Affordability.Affordable:
return "Affordable";
case Affordability.Pricey:
return "Pricey";
case Affordability.Luxurious:
return "Luxurious";
default:
return "Unknown";
}
}
selectMeal(BuildContext context) {
Navigator.of(context).pushNamed(MealDetailsScreeen.route, arguments: id);
}
@override
Widget build(BuildContext context) {
return InkWell(
onTap: () => selectMeal(context),
child: Card(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(15),
),
elevation: 4,
margin: EdgeInsets.all(10),
child: Column(
children: [
Stack(
children: [
ClipRRect(
borderRadius: BorderRadius.only(
topLeft: Radius.circular(15),
topRight: Radius.circular(15),
),
child: Image.network(
imageUrl,
height: 250,
fit: BoxFit.cover,
width: double.infinity,
),
),
Positioned(
bottom: 15,
right: 15,
child: Container(
width: 220,
color: Colors.black45,
padding: EdgeInsets.symmetric(
vertical: 6,
horizontal: 3,
),
child: Text(
title,
style: TextStyle(
fontSize: 26,
color: Colors.white,
),
softWrap: true,
//overflow: TextOverflow.fade,
),
),
),
],
),
Padding(
padding: EdgeInsets.all(20),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
Row(
children: [
Icon(
Icons.schedule,
),
SizedBox(width: 6),
Text("$duration min"),
],
),
Row(
children: [
Icon(Icons.work),
SizedBox(width: 6),
Text(complexityText),
],
),
Row(
children: [
Icon(Icons.money),
SizedBox(width: 6),
Text(affordabilityText),
],
),
],
),
),
],
),
),
);
}
}
Editor is loading...