new Card(child: new Text('My cool card'))
のような単純なCardがあります。CardにはonPressed
メソッドがないことを除いて、どこかをクリックして何らかの機能を実行できるようにしたいと思います。下部にボタンを追加することもできますが、これはこの状況には理想的ではありません。
誰もがカード全体をクリック可能にする方法を知っていますか?
フラッターは、プロパティよりも合成を使用します。目的のウィジェットをクリック可能なウィジェットにラップして、必要なものを実現します。
いくつかのクリック可能なウィジェット: GestureDetector
、 InkWell
、 InkResponse
。
new GestureDetector(
onTap: ...,
child: new Card(...),
);
InkWellGestureDetector とは別に、InkWell()
Widget内にカードをラップすることもできると思います
InkWell(
onTap: (){ print("Card Clicked"); }
child: new Card(),
);
Inkwellを使用してsplashColorを挿入できます。ユーザーがクリックすると、選択した色のリバウンド効果がカードに作成されます。これは主にマテリアルデザインで使用されます。
return Card(
color: item.completed ? Colors.white70 : Colors.white,
elevation: 8,
child: InkWell(
splashColor: "Insert color when user tap on card",
onTap: () async {
},
),
);