showKuralWithShowMore function
Implementation
Widget showKuralWithShowMore({
required int index,
required Kural kural,
required double imgHeight,
required double imgWidth,
required bool isMobile,
required bool isExpanded,
required VoidCallback onToggle,
}) {
final fullText = kural.kural ?? '';
return AnimatedContainer(
duration: const Duration(milliseconds: 300),
curve: Curves.easeInOut,
margin: const EdgeInsets.symmetric(horizontal: 12.0, vertical: 6.0),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(18.0),
boxShadow: [
BoxShadow(
color: isExpanded
? CommonColors.primary.withValues(alpha: 0.2)
: Colors.grey.withValues(alpha: 0.1),
blurRadius: isExpanded ? 20 : 10,
offset: const Offset(0, 4),
spreadRadius: isExpanded ? 2 : 0,
),
],
border: Border.all(
color: isExpanded
? CommonColors.primary.withValues(alpha: 0.3)
: Colors.transparent,
width: 1.5,
),
),
child: ClipRRect(
borderRadius: BorderRadius.circular(18.0),
child: Column(
children: [
_buildCollapsibleHeader(kural.kuralNumber ?? 0, isExpanded, onToggle),
Padding(
padding: const EdgeInsets.all(16.0),
child: _buildCompactKuralText(fullText, isMobile),
),
AnimatedCrossFade(
firstChild: const SizedBox.shrink(),
secondChild: Padding(
padding: const EdgeInsets.fromLTRB(16, 0, 16, 16),
child: Column(
children: [
_buildExplanationsSection(kural),
const SizedBox(height: 16),
_buildMetadataSection(kural),
],
),
),
crossFadeState: isExpanded
? CrossFadeState.showSecond
: CrossFadeState.showFirst,
duration: const Duration(milliseconds: 300),
),
],
),
),
);
}