Je pense que l'ajout de couleur au conteneur recouvre l'effet d'encre
https://docs.flutter.io/flutter/material/InkWell/InkWell.html
Ce code semble fonctionner
body: new Center(
child: new Container(
child: new Material(
child: new InkWell(
onTap: (){print("tapped");},
child: new Container(
width: 100.0,
height: 100.0,
),
),
color: Colors.transparent,
),
color: Colors.orange,
),
),
cliquez simplement sur le carré du milieu.
Edit: j'ai trouvé le rapport de bogue. https://github.com/flutter/flutter/issues/3782
C'est en fait comme prévu, bien que nous devions mettre à jour la documentation pour la rendre plus claire.
Ce qui se passe, c'est que la spécification du matériau indique que les éclaboussures sont en fait de l'encre sur le matériau. Ainsi, lorsque nous éclaboussons, nous faisons littéralement éclabousser le widget Matériel. Si vous avez quelque chose sur le matériau, nous éclaboussons dessous et vous ne pouvez pas le voir.
J'ai voulu ajouter un widget "MaterialImage" qui imprime conceptuellement son image dans le Material afin que les éclaboussures soient alors sur l'image. Nous pourrions avoir un MaterialDecoration qui fait quelque chose de similaire pour une décoration. Ou nous pourrions demander à Material lui-même de prendre une décoration. À l'heure actuelle, il faut une couleur, mais nous pourrions l'étendre à toute une décoration. Il n'est pas clair s'il est vraiment compatible avec les spécifications des matériaux d'avoir un matériau avec un dégradé, donc je ne suis pas sûr que nous devrions le faire.
À court terme, si vous avez juste besoin d'une solution de contournement, vous pouvez placer un matériau sur le dessus du conteneur, avec le matériau défini pour utiliser le type «transparence», puis mettre bien l'encre à l'intérieur.
--hixie
Mise à jour: Hixie a fusionné une nouvelle solution d'encre l'année dernière. L'encre offre un moyen pratique d'éclabousser les images.
testWidgets('Does the Ink widget render anything', (WidgetTester tester) async {
await tester.pumpWidget(
new Material(
child: new Center(
child: new Ink(
color: Colors.blue,
width: 200.0,
height: 200.0,
child: new InkWell(
splashColor: Colors.green,
onTap: () { },
),
),
),
),
);
Material(
color: Colors.grey[800],
child: Center(
child: Ink.image(
image: AssetImage('cat.jpeg'),
fit: BoxFit.cover,
width: 300.0,
height: 200.0,
child: InkWell(
onTap: () { },
child: Align(
alignment: Alignment.topLeft,
child: Padding(
padding: const EdgeInsets.all(10.0),
child: Text('KITTEN', style: TextStyle(fontWeight: FontWeight.w900, color: Colors.white)),
),
)
),
),
),
)
Remarque: je n'ai pas testé le nouveau widget d'encre. J'ai copié le code de ink_paint_test.dart et la documentation de la classe Ink
https://github.com/Hixie/flutter/blob/1f6531984984f52328e66c0cd500a8d517964564/packages/flutter/test/material/ink_paint_test.dart
https://github.com/flutter/flutter/pull/13900
https://api.flutter.dev/flutter/material/Ink-class.html
Material
elle - même et laisser de côté leContainer
.