Line data Source code
1 : import 'package:amadeus_proto/constants.dart';
2 : import 'package:amadeus_proto/models/music_sheet_info.dart';
3 : import 'package:amadeus_proto/utils/date_time_extensions.dart';
4 : import 'package:flutter/material.dart';
5 :
6 : class MusicSheetOverviewItem extends StatelessWidget {
7 0 : const MusicSheetOverviewItem({
8 : super.key, required this.infos,
9 : });
10 :
11 : final MusicSheetInfo infos;
12 :
13 0 : @override
14 : Widget build(BuildContext context) {
15 0 : return Padding(
16 : padding: const EdgeInsets.all(8.0),
17 0 : child: Center(
18 0 : child: ClipRRect(
19 0 : borderRadius: BorderRadius.circular(16),
20 0 : child: AspectRatio(
21 : aspectRatio: 1,
22 0 : child: Stack(
23 0 : children: [
24 0 : LayoutBuilder(
25 0 : builder: (context, constraints) => Image.asset(
26 0 : infos.coverPath,
27 0 : width: constraints.maxWidth,
28 : fit: BoxFit.cover,
29 : ),
30 : ),
31 0 : Align(
32 : alignment: Alignment.bottomLeft,
33 0 : child: LayoutBuilder(
34 0 : builder: (context, constraints) => SizedBox(
35 0 : width: constraints.maxWidth,
36 0 : child: Padding(
37 : padding: const EdgeInsets.all(1),
38 0 : child: Card(
39 0 : shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(16)),
40 0 : child: Padding(
41 : padding: const EdgeInsets.symmetric(vertical: 4.0, horizontal: 8),
42 0 : child: Column(
43 : crossAxisAlignment: CrossAxisAlignment.start,
44 : mainAxisSize: MainAxisSize.min,
45 0 : children: [
46 0 : Text(
47 0 : infos.title,
48 : style: const TextStyle(
49 : fontSize: 16,
50 : fontWeight: FontWeight.bold,
51 : ),
52 : ),
53 0 : Text(
54 0 : infos.lastPlayed.toDateString(),
55 : style: const TextStyle(color: lightGrey1, fontSize: 12),
56 : )
57 : ],
58 : ),
59 : ),
60 : ),
61 : ),
62 : ),
63 : ),
64 : )
65 : ],
66 : ),
67 : ),
68 : ),
69 : ),
70 : );
71 : }
72 : }
|