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.
 
 
 
 
 
 

147 lines
3.9 KiB

import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'custom_image.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.w),
child: Icon(
leftIcon,
size: iconSize,
color: iconColor,
),
),
);
} else if (leftImage != null && leftImage != "") {
widgets.add(Padding(
padding: EdgeInsets.only(left: 2.w),
child: leftImage.startsWith("http")
? MImage(
leftImage,
width: iconSize,
height: iconSize,
)
: (leftImage.endsWith(".svg")
? SvgPicture.asset(
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.w),
child: Icon(
rightIcon,
size: iconSize,
color: iconColor,
),
),
);
} else if (rightImage != null && rightImage != "") {
widgets.add(
Padding(
padding: EdgeInsets.only(left: 2.w),
child: rightImage.startsWith("http")
? Image.network(
rightImage,
width: iconSize,
height: iconSize,
)
: (rightImage.endsWith(".svg")
? SvgPicture.asset(
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,
),
);
}
}