Untitled
unknown
plain_text
3 years ago
3.8 kB
4
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...