Untitled
user_8529798
plain_text
9 months ago
3.2 kB
2
Indexable
import 'package:Buildeffective/src/ui_component/ag_tap_effect_widget.dart';
import 'package:Buildeffective/src/utils/comman_export.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:nb_utils/nb_utils.dart';
class ExpansionWidgetWithTitleCount extends StatelessWidget {
final bool isSelected;
final Function()? onTap;
final String title;
final String? count;
final bool? hideArrowButton;
final bool? hideArrowButtonSpace;
final double leftPadding;
final double verticalPadding;
final TextStyle? titleTextStyle;
const ExpansionWidgetWithTitleCount({
Key? key,
this.isSelected = false,
required this.onTap,
required this.title,
this.count,
this.hideArrowButton,
this.titleTextStyle,
this.hideArrowButtonSpace,
this.leftPadding = 0,
this.verticalPadding = 12.0,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return AgTapEffect(
enableRipple: onTap != null,
child: InkWell(
onTap: onTap,
child: Ink(
color: isSelected ? BEColors.primaryColorLight : Colors.white,
padding: EdgeInsets.only(left: leftPadding),
child: Padding(
padding: EdgeInsets.symmetric(horizontal: 16, vertical: verticalPadding),
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Visibility(
visible: !hideArrowButton.validate(),
maintainState: hideArrowButtonSpace.validate(value: true),
maintainAnimation: hideArrowButtonSpace.validate(value: true),
maintainSize: hideArrowButtonSpace.validate(value: true),
child: AnimatedRotation(
duration: Duration(milliseconds: 450),
curve: Curves.easeInOut, // Optional: Add an easing curve for smoother animation
turns: isSelected ? 0.25 : 0, // 0.25 turns equals 90 degrees rotate the arrow if moving down
child: SvgPicture.asset(
ResImages.ic_product_arrow_right,
color: BEColors.darkBlue,
height: 12,
width: 12,
),
),
).paddingTop(4),
if (hideArrowButtonSpace.validate(value: true)) 10.width,
Text(title, style: titleTextStyle ?? BETextStyles.InfoTextStylesWithDarkBlueColor).expand(),
16.width,
Visibility(
visible: count != null,
maintainState: true,
maintainAnimation: true,
maintainSize: true,
child: Container(
height: 22,
width: 31,
alignment: Alignment.center,
decoration: BoxDecoration(borderRadius: radius(100), color: Color(0xFFECECEC)),
child: Text(count.validate(), style: BETextStyles.TitleStyle600With12DarkBlueColor),
),
),
],
),
),
),
),
);
}
}
Editor is loading...
Leave a Comment