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 {
|
enum CardColorVertical {
|
||||||
red('assets/cards/card_red.png'),
|
red('assets/cards/card_red.png'),
|
||||||
pink('assets/cards/card_pink.png'),
|
pink('assets/cards/card_pink.png'),
|
||||||
@@ -22,4 +24,14 @@ enum CardColorHorizontal {
|
|||||||
|
|
||||||
final String path;
|
final String path;
|
||||||
const CardColorHorizontal(this.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:flutter/material.dart';
|
||||||
import 'package:google_fonts/google_fonts.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/models/carte_bulle.dart';
|
||||||
import 'package:p_tits_pas/services/api/cards_service.dart';
|
import 'package:p_tits_pas/services/api/cards_service.dart';
|
||||||
import 'package:p_tits_pas/widgets/quotidien/quotidien_theme.dart';
|
import 'package:p_tits_pas/widgets/quotidien/quotidien_theme.dart';
|
||||||
@@ -287,14 +288,20 @@ class _BulleTile extends StatelessWidget {
|
|||||||
return Opacity(
|
return Opacity(
|
||||||
opacity: treated ? 0.55 : 1,
|
opacity: treated ? 0.55 : 1,
|
||||||
child: Container(
|
child: Container(
|
||||||
constraints: const BoxConstraints(minHeight: 88),
|
constraints: const BoxConstraints(minHeight: 96),
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
image: DecorationImage(
|
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,
|
fit: BoxFit.fill,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12),
|
padding: const EdgeInsets.fromLTRB(20, 14, 20, 14),
|
||||||
child: Column(
|
child: Column(
|
||||||
crossAxisAlignment: CrossAxisAlignment.stretch,
|
crossAxisAlignment: CrossAxisAlignment.stretch,
|
||||||
children: [
|
children: [
|
||||||
|
|||||||
Reference in New Issue
Block a user