Creo que agregar color al recipiente cubre el efecto de tinta.
https://docs.flutter.io/flutter/material/InkWell/InkWell.html
Este código parece funcionar
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,
),
),
simplemente haga clic en el cuadrado del medio.
Editar: encontré el informe de error. https://github.com/flutter/flutter/issues/3782
En realidad, esto es lo que se esperaba, aunque deberíamos actualizar los documentos para que sea más claro.
Lo que sucede es que la especificación del material dice que las salpicaduras son en realidad tinta sobre el material. Entonces, cuando salpicamos, lo que hacemos es literalmente hacer que el widget Material haga el efecto. Si tiene algo encima del Material, salpicamos debajo de él y no puede verlo.
He querido agregar un widget "MaterialImage" que imprime conceptualmente su imagen en el Material también para que luego las salpicaduras estén sobre la imagen. Podríamos tener un MaterialDecoration que haga algo similar para una Decoración. O podríamos hacer que el propio Material tome una decoración. Ahora mismo toma un color, pero podríamos extenderlo a una decoración completa. Sin embargo, no está claro si es realmente compatible con las especificaciones del material tener un material con un degradado, por lo que no estoy seguro de si deberíamos hacer eso.
A corto plazo, si solo necesita una solución alternativa, puede colocar un Material en la parte superior del contenedor, con el material configurado para usar el tipo de "transparencia", y luego poner la tinta bien dentro.
--hixie
Actualización: Hixie fusionó una nueva solución de tinta el año pasado. La tinta proporciona una forma cómoda de salpicar imágenes.
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)),
),
)
),
),
),
)
Nota: no probé el nuevo Ink Widget. Copié el código de ink_paint_test.dart y los documentos de la clase 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
sí mismo y omitir elContainer
.