diff --git a/frontend/lib/models/card_assets.dart b/frontend/lib/models/card_assets.dart index c86b663..f046103 100644 --- a/frontend/lib/models/card_assets.dart +++ b/frontend/lib/models/card_assets.dart @@ -1,3 +1,5 @@ +import 'package:flutter/material.dart'; + enum CardColorVertical { red('assets/cards/card_red.png'), pink('assets/cards/card_pink.png'), @@ -22,4 +24,14 @@ enum CardColorHorizontal { final String path; const CardColorHorizontal(this.path); -} \ No newline at end of file + + /// Taille intrinsèque des PNG `card_*_h` (~1024×512). + static const Size sourceSize = Size(1024, 512); + + /// Facteur d’affichage : PNG ~2× → coins 9-slice en taille logique correcte. + static const double displayScale = 2.0; + + /// 9-slice en pixels image : coins fixes, bords H/V + centre extensibles. + /// Même logique que extensible.png — sans fichier `.9.png` Android. + static const Rect centerSlice = Rect.fromLTRB(100, 90, 924, 422); +} diff --git a/frontend/lib/widgets/quotidien/cartes_feed.dart b/frontend/lib/widgets/quotidien/cartes_feed.dart index e8b37b3..445905a 100644 --- a/frontend/lib/widgets/quotidien/cartes_feed.dart +++ b/frontend/lib/widgets/quotidien/cartes_feed.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:google_fonts/google_fonts.dart'; +import 'package:p_tits_pas/models/card_assets.dart'; import 'package:p_tits_pas/models/carte_bulle.dart'; import 'package:p_tits_pas/services/api/cards_service.dart'; import 'package:p_tits_pas/widgets/quotidien/quotidien_theme.dart'; @@ -287,14 +288,20 @@ class _BulleTile extends StatelessWidget { return Opacity( opacity: treated ? 0.55 : 1, child: Container( - constraints: const BoxConstraints(minHeight: 88), + constraints: const BoxConstraints(minHeight: 96), decoration: BoxDecoration( image: DecorationImage( - image: AssetImage(card.backgroundAsset), + image: AssetImage( + card.backgroundAsset, + scale: CardColorHorizontal.displayScale, + ), + // 9-slice dynamique : coins fixes, bords / centre étirés + // selon la taille réelle de la bulle (tout écran). + centerSlice: CardColorHorizontal.centerSlice, fit: BoxFit.fill, ), ), - padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12), + padding: const EdgeInsets.fromLTRB(20, 14, 20, 14), child: Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: [