fix(#173): 9-slice dynamique sur les bulles (centerSlice)
Coins fixes, bords et centre extensibles selon la taille réelle de la bulle — sans assets .9.png Android. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
/// 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);
|
||||
}
|
||||
|
||||
@@ -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: [
|
||||
|
||||
Reference in New Issue
Block a user