我正在寻找一种方法来添加一个自定义删除线到一个文本小部件如下
我查看了文本样式API,但找不到任何自定义删除线图形的选项。
style: TextStyle(decoration: TextDecoration.lineThrough),
nfeuvbwi1#
作为选项
import 'package:flutter/material.dart'; void main() => runApp(MyApp()); class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( body: Center( child: StrikeThroughWidget( child: Text('Apple Juice', style: TextStyle(fontSize: 30)), ), ), ), ); } } class StrikeThroughWidget extends StatelessWidget { final Widget _child; StrikeThroughWidget({Key key, @required Widget child}) : this._child = child, super(key: key); @override Widget build(BuildContext context) { return Container( child: _child, padding: EdgeInsets.symmetric(horizontal: 8), // this line is optional to make strikethrough effect outside a text decoration: BoxDecoration( image: DecorationImage(image: AssetImage('graphics/strikethrough.png'), fit: BoxFit.fitWidth), ), ); } }
结果
和删除线图像
ars1skjm2#
我试过使用decorationImage,但是没有得到想要的结果。问题是,罢工是在文本后面。所以我找到了一个解决办法,使用堆栈。
Stack( children: [ Text( "\$250", overflow: TextOverflow.ellipsis, style: GoogleFonts.roboto( decorationColor: Colors.red, fontSize: 20, color: Colors.grey.shade300, fontWeight: FontWeight.w400), ), Positioned( top: 2, left: 3, child: SizedBox( width: 42, child: Image.asset("assets/images/strike.png")), ) ], ),
这就是结果。
2条答案
按热度按时间nfeuvbwi1#
作为选项
结果
和删除线图像
ars1skjm2#
我试过使用decorationImage,但是没有得到想要的结果。问题是,罢工是在文本后面。所以我找到了一个解决办法,使用堆栈。
这就是结果。