ฉันคิดว่าการเพิ่มสีลงในภาชนะนั้นครอบคลุมเอฟเฟกต์หมึก
https://docs.flutter.io/flutter/material/InkWell/InkWell.html
ดูเหมือนว่ารหัสนี้จะใช้งานได้
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,
),
),
เพียงคลิกสี่เหลี่ยมตรงกลาง
แก้ไข: ฉันพบรายงานข้อบกพร่อง https://github.com/flutter/flutter/issues/3782
เป็นไปตามที่คาดไว้จริง ๆ แม้ว่าเราควรอัปเดตเอกสารเพื่อให้ชัดเจนขึ้น
สิ่งที่เกิดขึ้นคือข้อมูลจำเพาะของวัสดุบอกว่าจริงๆแล้วการกระเด็นนั้นเป็นหมึกบนวัสดุ ดังนั้นเมื่อเราสาดสิ่งที่เราทำก็คือเรามีวิดเจ็ต Material ทำการสาด หากคุณมีอะไรบางอย่างอยู่ด้านบนของวัสดุเราจะกระเด็นไปข้างใต้และคุณจะมองไม่เห็น
ฉันต้องการเพิ่มวิดเจ็ต "MaterialImage" ซึ่งจะพิมพ์ภาพในคอนเซ็ปต์ลงในวัสดุด้วยเช่นกันเพื่อให้การกระเซ็นอยู่เหนือรูปภาพ เราสามารถมี MaterialDecoration ซึ่งทำคล้าย ๆ กับของตกแต่งได้ หรือเราอาจมีวัสดุเป็นของตกแต่ง ตอนนี้ต้องใช้สี แต่เราสามารถขยายไปสู่การตกแต่งทั้งหมดได้ ยังไม่ชัดเจนว่ามันเข้ากันได้กับวัสดุที่มีการไล่ระดับสีหรือไม่ดังนั้นฉันไม่แน่ใจว่าเราควรทำเช่นนั้นหรือไม่
ในระยะสั้นหากคุณต้องการวิธีแก้ไขเบื้องต้นคุณสามารถวางวัสดุไว้ที่ด้านบนของภาชนะบรรจุโดยตั้งค่าวัสดุให้ใช้ประเภท "ความโปร่งใส" จากนั้นจึงใส่หมึกลงไปในนั้น
- hixie
อัปเดต: Hixie ผสานโซลูชัน Ink ใหม่เมื่อปีที่แล้ว หมึกเป็นวิธีที่สะดวกในการสาดภาพ
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)),
),
)
),
),
),
)
โปรดทราบ: ฉันไม่ได้ทดสอบ Ink Widget ใหม่ ฉันคัดลอกโค้ดจาก ink_paint_test.dart และเอกสารคลาส 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
ตัวมันเองและทิ้งไฟล์Container
.