Flutter 带icon的TextButton

Flutter 实现如下效果的TextButton

在这里插入图片描述

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';

class TextIconButton extends StatelessWidget {
  const TextIconButton({
    Key? key,
    required this.onPressed,
    required this.textSpanText,
    this.backgroundColor,
    this.icon,
    this.iconColor,
    this.alignment
  }) : super(key: key);

  final VoidCallback onPressed;
  final String textSpanText;
  final MaterialStateProperty<Color>? backgroundColor;
  final IconData? icon;
  final PlaceholderAlignment? alignment;
  final Color? iconColor;

  @override
  Widget build(BuildContext context) {
    return TextButton(
        style: ButtonStyle(
            padding: MaterialStateProperty.all<EdgeInsets>(
                EdgeInsets.only(left: 10)),
            backgroundColor: backgroundColor ?? MaterialStateProperty.all<Color>(Colors.white)),
        onPressed: onPressed,
        child: Text.rich(
          TextSpan(
              style: TextStyle(color: Colors.black54, fontSize: 13),
              children: [
                TextSpan(
                  text: textSpanText,
                ),
                WidgetSpan(
                  child: Icon(icon, color: iconColor,),
                  alignment: alignment ?? PlaceholderAlignment.middle,
                ),
              ]),
        ));
  }
}

使用

child: TextIconButton(
                      onPressed: showTaskTypeDialog,
                      textSpanText: '来源',
                      icon: Icons.arrow_drop_down,
                      iconColor: Colors.black54,
                    )),

效果
在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值