Ich denke, dass das Hinzufügen von Farbe zum Behälter den Tinteneffekt überdeckt
https://docs.flutter.io/flutter/material/InkWell/InkWell.html
Dieser Code scheint zu funktionieren
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,
),
),
Klicken Sie einfach auf das mittlere Quadrat.
Bearbeiten: Ich habe den Fehlerbericht gefunden. https://github.com/flutter/flutter/issues/3782
Dies ist tatsächlich wie erwartet, obwohl wir die Dokumente aktualisieren sollten, um es klarer zu machen.
Was passiert ist, dass die Materialspezifikation besagt, dass die Spritzer tatsächlich Tinte auf dem Material sind. Wenn wir also spritzen, lassen wir das Material-Widget buchstäblich spritzen. Wenn Sie etwas auf dem Material haben, spritzen wir darunter und Sie können es nicht sehen.
Ich wollte ein "MaterialImage" -Widget hinzufügen, das das Bild konzeptionell auch in das Material druckt, damit dann die Spritzer über dem Bild liegen. Wir könnten eine Materialdekoration haben, die etwas Ähnliches für eine Dekoration tut. Oder wir könnten Material selbst dekorieren lassen. Im Moment braucht es eine Farbe, aber wir könnten das auf eine ganze Dekoration ausweiten. Es ist jedoch nicht klar, ob es wirklich materialspezifikationskompatibel ist, ein Material mit einem Farbverlauf zu haben, daher bin ich mir nicht sicher, ob wir das tun sollen.
Kurzfristig können Sie, wenn Sie nur eine Problemumgehung benötigen, ein Material auf den Behälter legen, wobei das Material auf den Typ "Transparenz" eingestellt ist, und dann die Tinte gut darin platzieren.
--hixie
Update: Hixie hat letztes Jahr eine neue Ink-Lösung zusammengeführt. Die Tinte bietet eine bequeme Möglichkeit, über Bilder zu spritzen.
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)),
),
)
),
),
),
)
Bitte beachten Sie: Ich habe das neue Ink Widget nicht getestet. Ich habe den Code aus ink_paint_test.dart und den Dokumenten der Ink-Klasse kopiert
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
selbst setzen und das weglassenContainer
.