ui: Make [VideoChatWidget] stateless

This commit is contained in:
PapaTutuWawa 2022-04-13 19:20:01 +02:00
parent da22d5a3d2
commit 3676973dbe

View File

@ -1,7 +1,6 @@
import "dart:typed_data";
import "package:moxxyv2/shared/models/message.dart";
import "package:moxxyv2/ui/service/data.dart";
import "package:moxxyv2/ui/service/thumbnail.dart";
import "package:moxxyv2/ui/widgets/chat/gradient.dart";
import "package:moxxyv2/ui/widgets/chat/bottom.dart";
@ -14,9 +13,7 @@ import "package:flutter/material.dart";
import "package:get_it/get_it.dart";
import "package:open_file/open_file.dart";
// TODO: This should be stateless
class VideoChatWidget extends StatefulWidget {
class VideoChatWidget extends StatelessWidget {
final Message message;
final double maxWidth;
final BorderRadius radius;
@ -30,19 +27,14 @@ class VideoChatWidget extends StatefulWidget {
}
) : super(key: key);
@override
_VideoChatWidgetState createState() => _VideoChatWidgetState();
}
class _VideoChatWidgetState extends State<VideoChatWidget> {
Widget _buildNonDownloaded() {
// TODO
if (widget.message.thumbnailData != null) {}
if (message.thumbnailData != null) {}
return FileChatWidget(
widget.message,
message,
extra: ElevatedButton(
onPressed: () => requestMediaDownload(widget.message),
onPressed: () => requestMediaDownload(message),
child: const Text("Download")
)
);
@ -50,22 +42,22 @@ class _VideoChatWidgetState extends State<VideoChatWidget> {
Widget _buildDownloading() {
// TODO
if (widget.message.thumbnailData != null) {}
if (message.thumbnailData != null) {}
return FileChatWidget(widget.message);
return FileChatWidget(message);
}
Widget _buildVideo() {
return FutureBuilder<Uint8List>(
future: GetIt.I.get<ThumbnailCacheService>().getVideoThumbnail(widget.message.mediaUrl!),
future: GetIt.I.get<ThumbnailCacheService>().getVideoThumbnail(message.mediaUrl!),
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.done) {
if (snapshot.data != null) {
return ImageBaseChatWidget(
widget.message.mediaUrl!,
widget.radius,
message.mediaUrl!,
radius,
Image.memory(snapshot.data!),
MessageBubbleBottom(widget.message),
MessageBubbleBottom(message),
extra: const PlayButton()
);
} else {
@ -88,7 +80,6 @@ class _VideoChatWidgetState extends State<VideoChatWidget> {
}
Widget _innerBuild() {
final message = widget.message;
if (!message.isDownloading && message.mediaUrl != null) return _buildVideo();
if (message.isDownloading) return _buildDownloading();
@ -100,22 +91,22 @@ class _VideoChatWidgetState extends State<VideoChatWidget> {
return IntrinsicWidth(
child: InkWell(
onTap: () {
OpenFile.open(widget.message.mediaUrl!);
OpenFile.open(message.mediaUrl!);
},
child: Stack(
children: [
ClipRRect(
borderRadius: widget.radius,
borderRadius: radius,
child: _innerBuild()
),
BottomGradient(widget.radius),
BottomGradient(radius),
Positioned(
bottom: 0,
left: 0,
right: 0,
child: Padding(
padding: const EdgeInsets.only(bottom: 3.0, right: 6.0),
child: MessageBubbleBottom(widget.message)
child: MessageBubbleBottom(message)
)
)
]