Tôi nghĩ rằng việc thêm màu vào hộp chứa sẽ che phủ hiệu ứng mực
https://docs.flutter.io/flutter/material/InkWell/InkWell.html
Mã này có vẻ hoạt động
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,
),
),
chỉ cần nhấp vào hình vuông ở giữa.
Chỉnh sửa: Tôi đã tìm thấy báo cáo lỗi. https://github.com/flutter/flutter/issues/3782
Điều này thực sự như mong đợi, mặc dù chúng tôi nên cập nhật tài liệu để làm cho nó rõ ràng hơn.
Điều đang xảy ra là thông số Vật liệu nói rằng các tia nước thực sự là mực trên Vật liệu. Vì vậy, khi chúng tôi giật gân, những gì chúng tôi làm là chúng tôi thực sự có tiện ích Vật liệu thực hiện giật gân. Nếu bạn có thứ gì đó ở trên Vật liệu, chúng tôi sẽ bắn tung tóe bên dưới nó và bạn không thể nhìn thấy nó.
Tôi đã muốn thêm một widget "MaterialImage", nó cũng in hình ảnh của nó vào Material một cách khái niệm để sau đó các tia sáng sẽ tràn qua hình ảnh. Chúng ta có thể có một MaterialDecoration làm một cái gì đó tương tự cho một trang trí. Hoặc chúng ta có thể để Vật liệu tự trang trí. Ngay bây giờ nó cần một màu sắc, nhưng chúng tôi có thể mở rộng điều đó sang việc trang trí toàn bộ. Tuy nhiên, không rõ liệu có thực sự tương thích với vật liệu thông số kỹ thuật hay không, vì vậy tôi không chắc liệu chúng ta có nên làm điều đó hay không.
Trước mắt, nếu bạn chỉ cần một giải pháp khác, bạn có thể đặt Vật liệu lên trên hộp đựng, với vật liệu được đặt để sử dụng loại "trong suốt", sau đó đổ mực vào bên trong hộp đó.
--hixie
Cập nhật: Hixie đã hợp nhất một giải pháp Ink mới vào năm ngoái. Ink cung cấp một cách thuận tiện để hiển thị hình ảnh.
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)),
),
)
),
),
),
)
Xin lưu ý: Tôi đã không thử nghiệm tiện ích Ink mới. Tôi đã đối phó mã từ ink_paint_test.dart và tài liệu lớp 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
chính nó và bỏ điContainer
.