[英]Changing a container color when container is tapped using gesturedetector in flutter
[英]Flutter change color of Container inside GestureDetector when it is focused
我正在嘗試使用GestureDetector
使用 Container 顯示按鈕,因為我不喜歡來自FlatButton
或Inkwell
的飛濺 animation ,我想做的是讓用戶知道何時按下或聚焦顏色Container
的背景顏色較深,我在下面使用此代碼,但我知道這會在按下時改變顏色,並且在不按下時不會恢復到常規顏色。 有沒有辦法對其進行編碼,以便僅在按下或聚焦時顏色變暗,並在釋放按下時變回常規顏色。
import 'package:flutter/material.dart';
void main() => runApp(new MyApp());
class MyApp extends StatefulWidget {
MyAppState createState() => MyAppState();
}
class MyAppState extends State<MyApp> {
bool isTouching = true;
handleTouch(bool confirmTouch) {
setState(() {
isTouching = confirmTouch;
});
}
@override
Widget build(BuildContext context) {
return new MaterialApp(
home: new Scaffold(
body: new GestureDetector(
onTap: () {
handleTouch(false);
},
child: Container(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Container(
margin: EdgeInsets.fromLTRB(25, 15, 20, 8),
height: 58,
width: 58,
child: Icon(
Icons.add,
color: Colors.white,
size: 28,
),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(100),
color: isTouching == true ? Colors.green : Colors.red,
),
),
],
),
),
),
),
);
}
}
用Listener
包裹你的容器並使用onPointerDown
和onPointerUp
:
Listener(
child: Container(
margin: EdgeInsets.fromLTRB(25, 15, 20, 8),
height: 58,
width: 58,
child: Icon(
Icons.add,
color: Colors.white,
size: 28,
),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(100),
color: isTouching == true ? Colors.green : Colors.red,
),
),
onPointerDown: (event) => setState(() {
isTouching = true;
}),
onPointerUp: (event) => setState(() {
isTouching = false;
}),
),
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.