fluffychat/lib/pages/chat/reply_display.dart

80 lines
2.2 KiB
Dart
Raw Normal View History

import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/l10n.dart';
import 'package:matrix/matrix.dart';
import 'package:fluffychat/utils/matrix_sdk_extensions.dart/matrix_locals.dart';
import 'chat.dart';
import 'events/reply_content.dart';
class ReplyDisplay extends StatelessWidget {
final ChatController controller;
2022-01-29 12:35:03 +01:00
const ReplyDisplay(this.controller, {Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return AnimatedContainer(
duration: const Duration(milliseconds: 300),
height: controller.editEvent != null || controller.replyEvent != null
? 56
: 0,
clipBehavior: Clip.hardEdge,
decoration: const BoxDecoration(),
child: Material(
color: Theme.of(context).secondaryHeaderColor,
child: Row(
children: <Widget>[
IconButton(
2022-01-29 12:35:03 +01:00
tooltip: L10n.of(context)!.close,
icon: const Icon(Icons.close),
onPressed: controller.cancelReplyEventAction,
),
Expanded(
child: controller.replyEvent != null
2022-01-29 12:35:03 +01:00
? ReplyContent(controller.replyEvent!,
timeline: controller.timeline!)
: _EditContent(controller.editEvent
2022-01-29 12:35:03 +01:00
?.getDisplayEvent(controller.timeline!)),
),
],
),
),
);
}
}
class _EditContent extends StatelessWidget {
2022-01-29 12:35:03 +01:00
final Event? event;
const _EditContent(this.event);
@override
Widget build(BuildContext context) {
if (event == null) {
return Container();
}
return Row(
children: <Widget>[
Icon(
Icons.edit,
color: Theme.of(context).primaryColor,
),
Container(width: 15.0),
Text(
event?.getLocalizedBody(
2022-01-29 12:35:03 +01:00
MatrixLocals(L10n.of(context)!),
withSenderNamePrefix: false,
hideReply: true,
) ??
'',
overflow: TextOverflow.ellipsis,
maxLines: 1,
style: TextStyle(
2022-01-29 12:35:03 +01:00
color: Theme.of(context).textTheme.bodyText2!.color,
),
),
],
);
}
}