gpt4 book ai didi

flutter - 当其聚焦时, flutter 更改GestureDetector内部的Container的颜色

转载 作者:行者123 更新时间:2023-12-03 04:13:22 25 4
gpt4 key购买 nike

我正在尝试使用GestureDetector使用容器显示按钮,因为我不喜欢FlatButtonInkwell的启动动画,所以我想做的是通过使用户知道何时按下或聚焦颜色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包装您的容器,并使用onPointerDownonPointerUp:

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

关于flutter - 当其聚焦时, flutter 更改GestureDetector内部的Container的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63163176/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com