// Copyright 2024 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. import 'package:flutter/material.dart'; import 'package:flutter_markdown/flutter_markdown.dart'; class MessageWidget extends StatelessWidget { const MessageWidget({ super.key, this.text, this.image, required this.isFromUser, }); final Image? image; final String? text; final bool isFromUser; @override Widget build(BuildContext context) { return Row( mainAxisAlignment: isFromUser ? MainAxisAlignment.end : MainAxisAlignment.start, children: [ Flexible( child: Container( constraints: const BoxConstraints(maxWidth: 520), decoration: BoxDecoration( color: isFromUser ? Theme.of(context).colorScheme.primaryContainer : Theme.of(context).colorScheme.surfaceContainerHighest, borderRadius: BorderRadius.circular(18), ), padding: const EdgeInsets.symmetric( vertical: 15, horizontal: 20, ), margin: const EdgeInsets.only(bottom: 8), child: Column(children: [ if (text case final text?) MarkdownBody(data: text), if (image case final image?) image, ]), ), ), ], ); } }