You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

120 lines
3.0 KiB

import 'package:flutter/material.dart';
class IconText extends StatelessWidget {
final String? leftImage;
final String? rightImage;
final IconData? leftIcon;
final IconData? rightIcon;
final String text;
final TextStyle? textStyle;
final double iconSize;
final double space;
final Color iconColor;
final TextOverflow overFlow;
final CrossAxisAlignment textAxisAlignment;
final bool isMax;
IconText(this.text,
{this.leftIcon,
this.rightIcon,
this.leftImage,
this.rightImage,
this.isMax = false,
this.iconSize = 16,
this.space = 1,
this.overFlow = TextOverflow.fade,
this.textAxisAlignment = CrossAxisAlignment.center,
this.iconColor = Colors.black,
this.textStyle});
@override
Widget build(BuildContext context) {
var widgets = <Widget>[];
if (leftIcon != null || (leftImage != null && leftImage != "")) {
if (leftIcon != null) {
widgets.add(
Padding(
padding: EdgeInsets.only(left: 2),
child: Icon(
leftIcon,
size: iconSize,
color: iconColor,
),
),
);
} else if (leftImage != null && leftImage != "") {
widgets.add(Padding(
padding: EdgeInsets.only(left: 2),
child: leftImage!.startsWith("http") ? Image.network(
leftImage!,
width: iconSize,
height: iconSize,
) : Image.asset(
leftImage!,
width: iconSize,
height: iconSize,
),
));
}
}
widgets.add(SizedBox(width: space,));
widgets.add(isMax ? Expanded(
child: Text(
text,
overflow: overFlow,
maxLines: 2,
textAlign: TextAlign.start,
style: textStyle,
),
flex: 1,
) : Text(
text,
overflow: overFlow,
textAlign: TextAlign.center,
style: textStyle,
));
widgets.add(SizedBox(width: space,));
if (rightIcon != null || rightImage != null && rightImage != "") {
if (rightIcon != null) {
widgets.add(
Padding(
padding: EdgeInsets.only(left: 2),
child: Icon(
rightIcon,
size: iconSize,
color: iconColor,
),
),
);
} else if (rightImage != null && rightImage != "") {
widgets.add(
Padding(
padding: EdgeInsets.only(left: 2),
child: rightImage!.startsWith("http") ? Image.network(
rightImage!,
width: iconSize,
height: iconSize,
) : Image.asset(
rightImage!,
width: iconSize,
height: iconSize,
),
),
);
}
}
return Container(
child: Row(
mainAxisAlignment: isMax ? MainAxisAlignment.center : MainAxisAlignment.start,
crossAxisAlignment: textAxisAlignment,
mainAxisSize: MainAxisSize.min,
children: widgets,
),
);
}
}