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 类似,只是加了些属性。

  • 相关阅读:
    找水王
    环状二维数组最大子数组和
    用户模板
    课堂作业-电梯调度
    书店折扣问题
    《软件工程》读后感
    首尾相连的二维数组最大子数组求和
    梦断代码读后感(二)
    返回一个整数数组中最大子数组的和之测试
    首尾相连的一位数组最大子数组和
  • 原文地址:https://www.cnblogs.com/yangyxd/p/13223134.html
Copyright © 2011-2022 走看看