zoukankan      html  css  js  c++  java
  • [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 类似,只是加了些属性。

  • 相关阅读:
    Python学习资料
    异常
    I/O
    Python3+迭代器与生成器
    python标准数据类型
    人工智能、机器学习和深度学习
    原地排序和复制排序
    序列化和Json
    登陆加密小程序
    hashlib模块加密用法
  • 原文地址:https://www.cnblogs.com/yangyxd/p/13223134.html
Copyright © 2011-2022 走看看