showKuralWithShowMore function

Widget showKuralWithShowMore({
  1. required int index,
  2. required Kural kural,
  3. required double imgHeight,
  4. required double imgWidth,
  5. required bool isMobile,
  6. required bool isExpanded,
  7. required VoidCallback onToggle,
})

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),
          ),
        ],
      ),
    ),
  );
}