Вы можете обернуть CupertinoButton
в GestureDetector
. Затем используйте onTapDown
и onTapCancel
для изменения цвета только при нажатии. Как это:
class HomePage extends StatefulWidget {
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
Color _buttonColor = Colors.deepPurpleAccent;
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
child: Center(
child: GestureDetector(
onTap: () {
print(_emailValue);
print(_passwordValue);
Navigator.pushReplacementNamed(context, '/products');
},
onTapDown: (tapDetails) {
setState(() => _buttonColor = Colors.black);
},
onTapCancel: () {
setState(() => _buttonColor = Colors.deepPurpleAccent);
},
child: CupertinoButton(
color: _buttonColor,
child: Text('test'),
onPressed: () {},
pressedOpacity: 1.0,
),
),
),
),
);
}
}
Теперь вы можете использовать событие onTap в GestureDetector для вызова навигации или всего, что вам нужно.
![enter image description here](https://i.stack.imgur.com/D9FGy.gif)