import 'dart:math' as math; import 'package:eatvio_app/generated/l10n.dart'; import 'package:eatvio_app/core/theme/custom_text_style.dart'; import 'package:eatvio_app/core/theme/theme_helper.dart'; import 'package:flutter/material.dart'; import 'package:flutter_html/flutter_html.dart'; import 'package:flutter_svg/svg.dart'; class ExpandableText extends StatefulWidget { final String text; final int maxLines; ExpandableText({required this.text, this.maxLines = 3}); @override _ExpandableTextState createState() => _ExpandableTextState(); } class _ExpandableTextState extends State { bool isExpanded = false; void toggleExpansion() { setState(() { isExpanded = !isExpanded; }); } @override Widget build(BuildContext context) { final s = S.of(context); return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Padding( padding: const EdgeInsets.symmetric(horizontal: 16), child: Stack( children: [ Text( widget.text, style: TextStyles.textMMediumAuto.copyWith(color: appTheme.black), // style: { // "*": Style( // margin: Margins.all(0), // color: Colors.black87, // maxLines: isExpanded ? null : widget.maxLines, // textOverflow: TextOverflow.clip, // ), // }, ), if (!isExpanded) Positioned.fill( child: Align( alignment: Alignment.bottomCenter, child: Container( height: 35, decoration: BoxDecoration( gradient: LinearGradient( begin: Alignment.topCenter, end: Alignment.bottomCenter, colors: [Colors.white.withValues(alpha: 0.0), Colors.white.withValues(alpha: 0.6), Colors.white], ), ), ), ), ), ], ), ), Align( alignment: Alignment.bottomCenter, child: GestureDetector( onTap: toggleExpansion, child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ Text(isExpanded ? s.hide : s.expand, style: TextStyles.textMMedium.copyWith(color: appTheme.blueA400)), Transform.rotate(angle: isExpanded ? math.pi : 0, child: SvgPicture.asset('assets/icons/arrow_down.svg', width: 12, height: 12)), ], ), ), ), ], ); } }