59 lines
1.5 KiB
Dart
59 lines
1.5 KiB
Dart
import 'package:flutter/material.dart';
|
||
|
||
class ProductCard extends StatelessWidget {
|
||
final Image imagePath;
|
||
final String name;
|
||
final String price;
|
||
final VoidCallback onTap;
|
||
|
||
const ProductCard({
|
||
super.key,
|
||
required this.imagePath,
|
||
required this.name,
|
||
required this.price,
|
||
required this.onTap,
|
||
});
|
||
|
||
double getCardHeight({required BuildContext context}) {
|
||
if (MediaQuery.of(context).size.width > 600) {
|
||
return 200;
|
||
}
|
||
return 100;
|
||
}
|
||
|
||
@override
|
||
Widget build(BuildContext context) {
|
||
return GestureDetector(
|
||
onTap: onTap,
|
||
child: ConstrainedBox(
|
||
constraints: BoxConstraints(
|
||
minHeight: 80, maxHeight: getCardHeight(context: context)),
|
||
child: Card(
|
||
elevation: 3,
|
||
color: Theme.of(context).scaffoldBackgroundColor,
|
||
shape: RoundedRectangleBorder(
|
||
borderRadius: BorderRadius.circular(16),
|
||
),
|
||
child: Column(
|
||
mainAxisAlignment: MainAxisAlignment.center,
|
||
mainAxisSize: MainAxisSize.min,
|
||
children: [
|
||
imagePath,
|
||
const SizedBox(height: 16),
|
||
Text(
|
||
name,
|
||
style: Theme.of(context).textTheme.titleLarge,
|
||
),
|
||
const SizedBox(height: 8),
|
||
Text(
|
||
'$price руб.',
|
||
style: Theme.of(context).textTheme.titleSmall,
|
||
),
|
||
],
|
||
),
|
||
),
|
||
),
|
||
);
|
||
}
|
||
}
|