import 'package:didvan/config/design_config.dart'; import 'package:didvan/config/theme_data.dart'; import 'package:didvan/models/message_data/message_data.dart'; import 'package:didvan/pages/home/direct/direct_state.dart'; import 'package:didvan/utils/date_time.dart'; import 'package:didvan/widgets/didvan/text.dart'; import 'package:didvan/widgets/skeleton_image.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:persian_number_utility/persian_number_utility.dart'; class Message extends StatelessWidget { final MessageData message; const Message({Key? key, required this.message}) : super(key: key); @override Widget build(BuildContext context) { return Padding( padding: EdgeInsets.only( right: message.writedByAdmin ? 20 : 0, left: !message.writedByAdmin ? 20 : 0, ), child: Column( children: [ if (message.id == context .read() .dailyMessages[message.createdAt.split('T').first]! .last) Container( margin: const EdgeInsets.only(bottom: 12), padding: const EdgeInsets.all(4), decoration: BoxDecoration( color: Theme.of(context).colorScheme.splash, borderRadius: DesignConfig.lowBorderRadius, ), child: DidvanText( DateTime.parse(message.createdAt).toPersianDateStr(), style: Theme.of(context).textTheme.overline, color: DesignConfig.isDark ? Theme.of(context).colorScheme.white : Theme.of(context).colorScheme.black, ), ), _MessageContainer( isAttachment: false, writedByAdmin: message.writedByAdmin, child: message.text != null ? DidvanText(message.text!) : Container(), ), if (message.radar != null) DidvanText( 'لینک به مطلب زیر:', style: Theme.of(context).textTheme.overline, color: Theme.of(context).colorScheme.primary, ), if (message.radar != null) const SizedBox(height: 4), if (message.radar != null) _ReplyRadarOverview(message: message), if (message.radar != null) const SizedBox(height: 4), ], ), ); } } class _ReplyRadarOverview extends StatelessWidget { final MessageData message; const _ReplyRadarOverview({Key? key, required this.message}) : super(key: key); @override Widget build(BuildContext context) { return _MessageContainer( writedByAdmin: message.writedByAdmin, isAttachment: true, child: Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ SkeletonImage( imageUrl: message.radar!.image, height: 80, width: 80, ), const SizedBox(width: 8), Expanded( child: SizedBox( height: 80, child: Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ DidvanText( message.radar!.title, style: Theme.of(context).textTheme.bodyText1, maxLines: 2, overflow: TextOverflow.ellipsis, color: Theme.of(context).colorScheme.focusedBorder, ), Row( children: [ DidvanText( 'رادار ' + message.radar!.categories.first.label, style: Theme.of(context).textTheme.overline, color: Theme.of(context).colorScheme.focusedBorder, ), const Spacer(), DidvanText( DateTimeUtils.momentGenerator( message.radar!.createdAt) + ' | خواندن در ' + message.radar!.timeToRead.toString() + ' دقیقه', color: Theme.of(context).colorScheme.focusedBorder, style: Theme.of(context).textTheme.overline, ), // DidvanText('text'), ], ), ], ), ), ), ], ), ); } } class _MessageContainer extends StatelessWidget { final bool writedByAdmin; final bool isAttachment; final Widget child; const _MessageContainer({ Key? key, required this.writedByAdmin, required this.isAttachment, required this.child, }) : super(key: key); @override Widget build(BuildContext context) { return Container( padding: const EdgeInsets.all(16), decoration: BoxDecoration( borderRadius: DesignConfig.highBorderRadius.copyWith( bottomLeft: writedByAdmin && !isAttachment ? Radius.zero : null, bottomRight: !writedByAdmin && !isAttachment ? Radius.zero : null, ), color: writedByAdmin ? null : Theme.of(context).colorScheme.focused, border: Border.all( color: Theme.of(context).colorScheme.border, width: 0.5, ), ), child: child, ); } }