refactor(fix): performance metrics

This commit is contained in:
mso7nueh
2024-06-19 16:00:18 +03:00
parent 4b22f1c638
commit 76d33623c7
3 changed files with 80 additions and 71 deletions

View File

@@ -1,4 +1,5 @@
import 'package:cached_network_image/cached_network_image.dart';
import 'package:eatvio_app/theme/app_decoration.dart';
import 'package:flutter/material.dart';
import 'package:flutter_dotenv/flutter_dotenv.dart';
import 'package:go_router/go_router.dart';
@@ -25,69 +26,71 @@ class ChatBubbleWidget extends StatelessWidget {
child: DecoratedBox(
decoration: BoxDecoration(
color: isCurrentUser ? Color(0xFFF6FAFF) : Colors.white,
borderRadius: BorderRadius.circular(16),
borderRadius: BorderRadiusStyle.circleBorder17,
),
child: Padding(
padding: const EdgeInsets.all(12),
child: Column(
children: [
if (mediaData != null)
ListView.separated(
physics: NeverScrollableScrollPhysics(),
CustomScrollView(
shrinkWrap: true,
itemBuilder: (context, index) {
if (!mediaData![index].toString().contains('.png') &&
!mediaData![index].toString().contains('.jpg') &&
!mediaData![index].toString().contains('.jpeg')) {
return ListTile(
contentPadding: EdgeInsets.zero,
horizontalTitleGap: 8,
onTap: () async {
if (!await launchUrl(Uri.parse(dotenv.env['STORAGE_URL']! + mediaData![index].toString()))) {
throw Exception('Could not launch ${mediaData![index].toString()}');
}
},
leading: Icon(
Icons.file_copy_outlined,
color: Color(0xFF2F80ED),
),
trailing: Icon(
Icons.download_outlined,
color: Color(0xFF2F80ED),
),
title: Text(
mediaData![index].toString().replaceAll('chat_files/', ''),
maxLines: 2,
style: TextStyle(
color: Color(0xFF323F4B),
fontSize: 12,
overflow: TextOverflow.ellipsis,
),
),
);
}
return GestureDetector(
onTap: () {
GoRouter.of(context).pushNamed(
'photoViewScreen',
extra: mediaData!.map((e) => dotenv.env['STORAGE_URL']! + e.toString()).toList(),
pathParameters: {
'index': index.toString(),
physics: NeverScrollableScrollPhysics(),
slivers: [
SliverList.separated(
itemBuilder: (BuildContext context, int index) {
if (!mediaData![index].toString().contains('.png') &&
!mediaData![index].toString().contains('.jpg') &&
!mediaData![index].toString().contains('.jpeg')) {
return ListTile(
contentPadding: EdgeInsets.zero,
horizontalTitleGap: 8,
onTap: () async {
if (!await launchUrl(Uri.parse(dotenv.env['STORAGE_URL']! + mediaData![index].toString()))) {
throw Exception('Could not launch ${mediaData![index].toString()}');
}
},
leading: Icon(
Icons.file_copy_outlined,
color: Color(0xFF2F80ED),
),
trailing: Icon(
Icons.download_outlined,
color: Color(0xFF2F80ED),
),
title: Text(
mediaData![index].toString().replaceAll('chat_files/', ''),
maxLines: 2,
style: TextStyle(
color: Color(0xFF323F4B),
fontSize: 12,
overflow: TextOverflow.ellipsis,
),
),
);
}
return GestureDetector(
onTap: () {
GoRouter.of(context).pushNamed(
'photoViewScreen',
extra: mediaData!.map((e) => dotenv.env['STORAGE_URL']! + e.toString()).toList(),
pathParameters: {
'index': index.toString(),
},
);
},
child: ClipRRect(
borderRadius: BorderRadiusStyle.roundedBorder8,
child: CachedNetworkImage(
imageUrl: dotenv.env['STORAGE_URL']! + '${mediaData![index]}',
),
),
);
},
child: ClipRRect(
borderRadius: BorderRadius.circular(8),
child: CachedNetworkImage(
imageUrl: dotenv.env['STORAGE_URL']! + '${mediaData![index]}',
),
),
);
},
separatorBuilder: (context, index) {
return SizedBox(height: 8);
},
itemCount: mediaData!.length,
separatorBuilder: (BuildContext context, int index) => const SizedBox(height: 8),
itemCount: mediaData!.length,
),
],
),
if (mediaData!.length > 0 && text.isNotEmpty) SizedBox(height: 8),
if (text.isNotEmpty)