我正在做一个Flutter项目,我想创建一个渐变背景的按钮,包括图像和文本。但是,我不知道如何实现这一点。我试着把它做成这个样子:
我试过使用MaterialButton小部件并将其shape属性设置为带有渐变颜色的RoundedRectangleBorder,但我不知道如何将图像和文本添加到按钮中。有人可以请给我一个例子,如何创建一个渐变按钮的图像和文本在Flutter?另外,有没有办法自定义按钮的渐变颜色?
lnvxswe21#
只需使用Stack小部件和3个子部件(从最低到最高):
Stack
Image
Container
decoration.gradient
Text
ClipRRect
GestureDetector
InkWell
mpbci0fu2#
所需代码:
class ReusableButton extends StatelessWidget { const ReusableButton({ super.key, required this.onTap, required this.imageUrl, required this.title, required this.gradientColors, }); final void Function() onTap; final String imageUrl; final String title; final List<Color> gradientColors; @override Widget build(BuildContext context) { return Padding( padding: const EdgeInsets.only(left: 16), child: GestureDetector( onTap: onTap, child: Stack( children: [ SizedBox( width: 200, height: 120, child: Image.network( imageUrl, fit: BoxFit.cover, ), ), Container( decoration: BoxDecoration( borderRadius: BorderRadius.circular(5), gradient: LinearGradient( colors: gradientColors, ), ), width: 200, height: 120, alignment: Alignment.center, child: Text( title, style: const TextStyle( fontSize: 20, color: Colors.white, fontWeight: FontWeight.bold, ), ), ), ], ), ), ); } }
用法:
Row( children: [ ReusableButton( onTap: () {}, imageUrl: 'Your image URL...', title: 'Your title...', gradientColors: <Color>[ Colors.red.withOpacity(0.7), Colors.green.withOpacity(0.7), Colors.blue.withOpacity(0.7), ], ), ReusableButton( onTap: () {}, imageUrl: 'Your image URL...'', title: 'Your title...', gradientColors: <Color>[ Colors.red.withOpacity(0.7), Colors.green.withOpacity(0.7), ], ), ReusableButton( onTap: () {}, imageUrl: 'Your image URL...'', title: 'Your title...', gradientColors: <Color>[ Colors.blue.withOpacity(0.7), Colors.blue.withOpacity(0.7), ], ), ], ),
2条答案
按热度按时间lnvxswe21#
只需使用
Stack
小部件和3个子部件(从最低到最高):Image
Container
与decoration.gradient
的半透明颜色Text
如果您愿意,可以将整个
Stack
包裹在ClipRRect
中以添加圆角。要添加按钮行为,可以使用自定义
GestureDetector
或InkWell
mpbci0fu2#
所需代码:
用法: