• [Flutter] 带图标的Text


    先看下效果图(框起来的地方)

    水平方向:

    垂直方向效果:

     

    我们经常需要这样的效果,文字前面或上方加上图标。

    import 'package:flutter/material.dart';
    
    /// icon text
    class IconText extends StatelessWidget {
      final String text;
      final Icon icon;
      final double iconSize;
      final Axis direction;
      /// icon padding
      final EdgeInsetsGeometry padding;
      final TextStyle style;
      final int maxLines;
      final bool softWrap;
      final TextOverflow overflow;
      final TextAlign textAlign;
    
      const IconText(this.text,
          {Key key,
          this.icon,
          this.iconSize,
          this.direction = Axis.horizontal,
          this.style,
          this.maxLines,
          this.softWrap,
          this.padding,
          this.textAlign,
          this.overflow = TextOverflow.ellipsis})
          : assert(direction != null),
            assert(overflow != null),
            super(key: key);
    
      @override
      Widget build(BuildContext context) {
        return icon == null
            ? Text(text ?? '', style: style)
            : text == null || text.isEmpty
                ? (padding == null ? icon : Padding(padding: padding, child: icon))
                : RichText(
                    text: TextSpan(style: style, children: [
                      WidgetSpan(
                          child: IconTheme(
                        data: IconThemeData(
                            size: iconSize ??
                                (style == null || style.fontSize == null
                                    ? 16
                                    : style.fontSize + 1),
                            color: style == null ? null : style.color),
                        child: padding == null
                            ? icon
                            : Padding(
                                padding: padding,
                                child: icon,
                              ),
                      )),
                      TextSpan(
                          text: direction == Axis.horizontal ? text : "
    $text"),
                    ]),
                    maxLines: maxLines,
                    softWrap: softWrap ?? true,
                    overflow: overflow ?? TextOverflow.clip,
                    textAlign: textAlign ?? (direction == Axis.horizontal ? TextAlign.start : TextAlign.center),
                  );
      }
    }

    用方和 Text 类似,只是加了些属性。

  • 相关阅读:
    程序员数学
    [topcoder]FlowerGarden
    [leetcode]Trapping Rain Water
    [leetcode]Gray Code
    [leetcode]Unique Paths II
    hdu 4112 Break the Chocolate(ceil floor)
    【转】博弈-翻硬币游戏
    POJ 3710 Christmas Game
    hdu 3590 PP and QQ
    博弈进阶
  • 原文地址:https://www.cnblogs.com/yangyxd/p/13223134.html
Copyright © 2020-2023  润新知