如何在Flutter中为文本小部件添加自定义删除线

ikfrs5lh  于 2023-03-13  发布在  Flutter
关注(0)|答案(2)|浏览(189)

我正在寻找一种方法来添加一个自定义删除线到一个文本小部件如下

我查看了文本样式API,但找不到任何自定义删除线图形的选项。

style: TextStyle(decoration: TextDecoration.lineThrough),
nfeuvbwi

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

结果

和删除线图像

ars1skjm

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")),
                    )
                  ],
                ),

这就是结果。

相关问题