2017-07-31 59 views
2

點擊容器會觸發onTap處理程序,但不會顯示任何墨水飛濺效果。InkWell不會顯示連鎖效應

class _MyHomePageState extends State<MyHomePage> { 
    @override 
    Widget build(BuildContext context) { 
    return new Scaffold(
     appBar: new AppBar(
     title: new Text(widget.title), 
    ), 
     body: new Center(
     child: new InkWell(
      onTap:(){print("tapped");}, 
      child: new Container(
      width: 100.0, 
      height: 100.0, 
      color: Colors.orange, 
     ), 
     ), 
    ), 
    ); 
    } 
} 

我試着將InkWell放入容器中,但也是徒勞。

回答

1

我想添加一個顏色的容器被遮蓋在墨效果

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, 
    ), 
), 

只需點擊中間的廣場。

編輯:我發現了bugreport。 https://github.com/flutter/flutter/issues/3782

這實際上和預期的一樣,儘管我們應該更新文檔以使其更清晰。

這是怎麼回事材料規格說飛濺實際上是材料上的墨跡。所以,當我們飛濺時,我們所做的就是我們從字面上看,材質小部件會發生飛濺。如果你在材質上有什麼東西,我們會在它下面飛濺,而你看不到它。

我想添加一個「MaterialImage」小部件,它在概念上將其圖像打印到材質中,以便飛濺在圖像上。我們可以有一個MaterialDecoration,爲裝飾做類似的事情。或者我們可以讓材料本身進行裝飾。現在它需要一種顏色,但我們可以延伸到採取整體裝飾。不過,目前還不清楚它是否真的具有材質規格兼容性,因此我不確定我們是否應該這樣做。

短期來看,如果您只需要一種解決方法,您可以將材質放在容器的頂部,將材質設置爲使用「透明度」類型,然後將墨水放入其中。

- hixie