content: import 'package:flutter/gestures.dart';
  import 'package:flutter/material.dart';
  
  import 'package:matrix/matrix.dart';
  
  import 'package:fluffychat/config/themes.dart';
  import 'package:fluffychat/l10n/l10n.dart';
  import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_locals.dart';
  import '../../../config/app_config.dart';
  
  class StateMessage extends StatelessWidget {
    final Event event;
    final void Function()? onExpand;
    final bool isCollapsed;
    const StateMessage(
      this.event, {
      this.onExpand,
      this.isCollapsed = false,
      super.key,
    });
  
    @override
    Widget build(BuildContext context) {
      final theme = Theme.of(context);
      return AnimatedSize(
        duration: FluffyThemes.animationDuration,
        curve: FluffyThemes.animationCurve,
        child: isCollapsed
            ? const SizedBox.shrink()
            : Padding(
                padding: const EdgeInsets.symmetric(horizontal: 8.0),
                child: Center(
                  child: Padding(
                    padding: const EdgeInsets.all(4),
                    child: Material(
                      color: theme.colorScheme.surface.withAlpha(128),
                      borderRadius:
                          BorderRadius.circular(AppConfig.borderRadius / 3),
                      child: Padding(
                        padding: const EdgeInsets.symmetric(
                          horizontal: 8.0,
                          vertical: 4.0,
                        ),
                        child: Text.rich(
                          TextSpan(
                            children: [
                              TextSpan(
                                text: event.calcLocalizedBodyFallback(
                                  MatrixLocals(L10n.of(context)),
                                ),
                              ),
                              if (onExpand != null) ...[
                                const TextSpan(
                                  text: ' + ',
                                  style: TextStyle(fontWeight: FontWeight.bold),
                                ),
                                TextSpan(
                                  style: TextStyle(
                                    color: theme.colorScheme.primary,
                                    decoration: TextDecoration.underline,
                                  ),
                                  recognizer: TapGestureRecognizer()
                                    ..onTap = onExpand,
                                  text: L10n.of(context).moreEvents,
                                ),
                              ],
                            ],
                          ),
                          textAlign: TextAlign.center,
                          style: TextStyle(
                            fontSize: 12 * AppConfig.fontSizeFactor,
                            decoration: event.redacted
                                ? TextDecoration.lineThrough
                                : null,
                          ),
                        ),
                      ),
                    ),
                  ),
                ),
              ),
      );
    }
  }
  