Co-authored-by: Cursor <cursoragent@cursor.com> Co-authored-by: multica-agent <github@multica.ai>
43 lines
1.1 KiB
Dart
43 lines
1.1 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
|
import 'package:openim_common/openim_common.dart';
|
|
|
|
enum BubbleType {
|
|
send,
|
|
receiver,
|
|
}
|
|
|
|
class ChatBubble extends StatelessWidget {
|
|
const ChatBubble({
|
|
Key? key,
|
|
this.margin,
|
|
this.constraints,
|
|
this.alignment = Alignment.center,
|
|
this.backgroundColor,
|
|
this.child,
|
|
required this.bubbleType,
|
|
}) : super(key: key);
|
|
final EdgeInsetsGeometry? margin;
|
|
final BoxConstraints? constraints;
|
|
final AlignmentGeometry? alignment;
|
|
final Color? backgroundColor;
|
|
final Widget? child;
|
|
final BubbleType bubbleType;
|
|
|
|
bool get isISend => bubbleType == BubbleType.send;
|
|
|
|
@override
|
|
Widget build(BuildContext context) => Container(
|
|
constraints: constraints,
|
|
margin: margin,
|
|
padding: EdgeInsets.symmetric(horizontal: 12.w, vertical: 10.h),
|
|
alignment: alignment,
|
|
decoration: BoxDecoration(
|
|
color:
|
|
backgroundColor ?? (isISend ? Styles.c_CCE7FE : Styles.c_FFFFFF),
|
|
borderRadius: borderRadius(isISend),
|
|
),
|
|
child: child,
|
|
);
|
|
}
|