fix(#173): 9-slice manuel avec coins à taille logique fixe

Remplace DecorationImage.centerSlice (inopérant si bulle trop
basse) par un peintre 9 zones : coins fixes, centre extensible.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-10-01 17:10:40 +02:00
co-authored by Cursor
parent 7ff169d4c9
commit 42163826fe
3 changed files with 228 additions and 22 deletions
@@ -3,6 +3,7 @@ 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/nine_slice_asset.dart';
import 'package:p_tits_pas/widgets/quotidien/quotidien_theme.dart';
/// Feed de bulles (file d'attention) — ticket #173.
@@ -287,20 +288,12 @@ class _BulleTile extends StatelessWidget {
final treated = card.statut == CarteStatut.traitee;
return Opacity(
opacity: treated ? 0.55 : 1,
child: Container(
child: NineSliceAsset(
assetPath: card.backgroundAsset,
centerSlice: CardColorHorizontal.centerSlice,
cornerWidth: CardColorHorizontal.cornerWidth,
cornerHeight: CardColorHorizontal.cornerHeight,
constraints: const BoxConstraints(minHeight: 96),
decoration: BoxDecoration(
image: DecorationImage(
image: ExactAssetImage(
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.fromLTRB(20, 14, 20, 14),
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
@@ -381,7 +374,8 @@ class _BulleTile extends StatelessWidget {
spacing: 8,
runSpacing: 4,
children: [
if (card.responseMode == CarteResponseMode.acceptRefuse) ...[
if (card.responseMode ==
CarteResponseMode.acceptRefuse) ...[
_ActionChip(
label: 'Accepter',
onTap: onAccept,