gpt4 book ai didi

flutter - Flutter InkWell小部件未通过容器的渐变和颜色显示

转载 作者:行者123 更新时间:2023-12-03 04:50:59 26 4
gpt4 key购买 nike

编辑:我尝试将Container包装在Material小部件中并将color属性移到Material小部件,但是我将一堆ResourceCards放在水平ListView,中,因此Material小部件的颜色似乎只能填充周围的空间ResourceCard

我在Flutter中创建了自己的小部件ResourceCard。我用GestureDetector包裹了它来检测点击,但是我想显示某种反馈或效果来通知用户它被点击了。我决定将GestureDetector替换为InkWell小部件,但是我没有通过容器的线性渐变和颜色看到飞溅效果,因此我将其还原为GestureDetector。我看过其他具有潜在解决方法的帖子,但是它们均不适用于线性渐变和颜色。这是ResourceCard小部件之一的样子:https://imgur.com/dg3fu9e。这是小部件的代码:

class ResourceCard extends StatelessWidget {
ResourceCard({
@required this.colour,
@required this.margin,
@required this.cardText,
this.onPress,
@required this.cardCaption,
@required this.paddingText,
});

final Color colour;
final String cardText;
final Function onPress;
final EdgeInsets margin;
final String cardCaption;
final EdgeInsets paddingText;

@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: onPress,
child: Column(
children: <Widget>[
Container(
width: 75.0,
height: 75.0,
child: Center(
child: Text(
cardText,
style: TextStyle(
color: Colors.white,
fontFamily: 'Circular STD',
fontWeight: FontWeight.w900,
fontSize: 20.0,
),
),
),
margin: margin,
decoration: BoxDecoration(
gradient: LinearGradient(
begin: Alignment.topRight,
end: Alignment.bottomLeft,
colors: [colour, Colors.blue],
),
color: colour,
borderRadius: BorderRadius.circular(15.0),
boxShadow: [
BoxShadow(
color: Color.fromRGBO(0, 0, 0, 0.5),
blurRadius: 10.0,
spreadRadius: 1.0,
)
],
),
),
Padding(
padding: paddingText,
child: Text(
cardCaption,
textAlign: TextAlign.center,
style: TextStyle(
color: Colors.white70,
fontWeight: FontWeight.w300,
fontSize: 10.0,
fontFamily: 'Circular STD',
),
),
),
],
),
);
}
}

最佳答案

最简单的解决方案是使用Material小部件作为InkWell的父级,并将其color设置为透明。只能在卡上设置InkWell(在您的示例中,在整个列上设置GestureDetector)。为了适合确切的形状,InkWell与您的卡(容器)使用相同的borderRadius
这是您的构建方法的解决方案。我将InkWellMateral小部件放置为Center小部件的父级

@override
Widget build(BuildContext context) {
return Column(
children: <Widget>[
Container(
width: 75.0,
height: 75.0,
child: Material(
color: Colors.transparent,
child: InkWell(
onTap: onPress,
borderRadius: BorderRadius.circular(15.0),
splashColor: Colors.grey[500],
child: Center(
child: Text(
cardText,
style: TextStyle(
color: Colors.white,
fontFamily: 'Circular STD',
fontWeight: FontWeight.w900,
fontSize: 20.0,
),
),
),
),
),
...

关于flutter - Flutter InkWell小部件未通过容器的渐变和颜色显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61348622/

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