मुझे लगता है कि कंटेनर में रंग जोड़ना स्याही प्रभाव को कवर कर रहा है
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
यह वास्तव में अपेक्षित है, हालांकि हमें इसे स्पष्ट करने के लिए डॉक्स को अपडेट करना चाहिए।
क्या चल रहा है कि सामग्री युक्ति का कहना है कि स्पलैश वास्तव में सामग्री पर स्याही है। इसलिए जब हम छपते हैं, तो हम जो करते हैं, उसका शाब्दिक अर्थ होता है भौतिक विजेट छप। यदि आपके पास सामग्री के ऊपर कुछ है, तो हम उसके नीचे छप जाते हैं, और आप इसे नहीं देख सकते।
मैं एक "MaterialImage" विजेट जोड़ना चाहता हूं जो वैचारिक रूप से अपनी छवि को सामग्री के रूप में अच्छी तरह से मुद्रित करता है ताकि छवि पर स्पलैश खत्म हो जाए। हम एक MaterialDecoration हो सकता है जो एक सजावट के लिए कुछ समान है। या हम हो सकता है सामग्री खुद एक सजावट ले। अभी इसमें एक रंग लगता है, लेकिन हम इसे पूरी सजावट में ले जा सकते हैं। यह स्पष्ट नहीं है कि क्या यह वास्तव में सामग्री-कल्पना-संगत है जिसमें एक ढाल के साथ एक सामग्री है, हालांकि, मुझे यकीन नहीं है कि क्या हमें ऐसा करना चाहिए।
थोड़े समय में, यदि आपको केवल वर्कअराउंड की आवश्यकता है, तो आप "पारदर्शिता" प्रकार का उपयोग करने के लिए सेट की गई सामग्री के साथ, कंटेनर के ऊपर एक सामग्री रख सकते हैं, और फिर स्याही को उसके अंदर अच्छी तरह से डाल सकते हैं।
--hixie
अपडेट: Hixie ने पिछले साल एक नया इंक समाधान का विलय किया। इंक छवियों पर छप करने के लिए एक सुविधाजनक तरीका प्रदान करता है।
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_paint_test.dart और इंक वर्ग डॉक्स से कोड कॉपी किया
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
।