Browse Source

图片添加缓存

ios
Jolie 3 months ago
parent
commit
e37449de09
9 changed files with 139 additions and 93 deletions
  1. 38
      lib/pages/message/conversation_tab.dart
  2. 22
      lib/widget/live/live_room_chat_item.dart
  3. 25
      lib/widget/message/call_item.dart
  4. 24
      lib/widget/message/gift_item.dart
  5. 25
      lib/widget/message/image_item.dart
  6. 24
      lib/widget/message/room_item.dart
  7. 25
      lib/widget/message/text_item.dart
  8. 24
      lib/widget/message/video_item.dart
  9. 25
      lib/widget/message/voice_item.dart

38
lib/pages/message/conversation_tab.dart

@ -5,6 +5,7 @@ import 'package:get/get.dart';
import 'package:tdesign_flutter/tdesign_flutter.dart';
import 'package:im_flutter_sdk/im_flutter_sdk.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:cached_network_image/cached_network_image.dart';
import '../../controller/message/conversation_controller.dart';
import '../../widget/message/emoji_text_widget.dart';
import '../../config/emoji_config.dart';
@ -140,27 +141,36 @@ class _ConversationTabState extends State<ConversationTab>
height: 56,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(28),
image: (userInfo?.avatarUrl != null && userInfo!.avatarUrl!.isNotEmpty)
? DecorationImage(
image: NetworkImage(userInfo.avatarUrl!),
color: Colors.grey[300],
),
child: ClipRRect(
borderRadius: BorderRadius.circular(28),
child: (userInfo?.avatarUrl != null && userInfo!.avatarUrl!.isNotEmpty)
? CachedNetworkImage(
imageUrl: userInfo.avatarUrl!,
width: 56,
height: 56,
fit: BoxFit.cover,
placeholder: (context, url) => Image.asset(
Assets.imagesUserAvatar,
width: 56,
height: 56,
fit: BoxFit.cover,
),
errorWidget: (context, url, error) => Image.asset(
Assets.imagesUserAvatar,
width: 56,
height: 56,
fit: BoxFit.cover,
),
)
: null,
color: (userInfo?.avatarUrl == null || (userInfo?.avatarUrl?.isEmpty ?? true))
? Colors.grey[300]
: null,
),
child: (userInfo?.avatarUrl == null || (userInfo?.avatarUrl?.isEmpty ?? true))
? ClipRRect(
borderRadius: BorderRadius.circular(28),
child: Image.asset(
: Image.asset(
Assets.imagesUserAvatar,
width: 56,
height: 56,
fit: BoxFit.cover,
),
)
: null,
),
),
const SizedBox(width: 12),
Expanded(

22
lib/widget/live/live_room_chat_item.dart

@ -7,6 +7,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart';
import 'package:cached_network_image/cached_network_image.dart';
import '../../pages/message/chat_page.dart';
@ -258,18 +259,21 @@ class LiveRoomChatItem extends StatelessWidget {
//
ClipOval(
child: message.avatar != null && message.avatar!.isNotEmpty
? Image.network(
message.avatar!,
? CachedNetworkImage(
imageUrl: message.avatar!,
width: 25.w,
height: 25.w,
fit: BoxFit.cover,
errorBuilder: (context, error, stackTrace) {
return Image.asset(
Assets.imagesUserAvatar,
width: 25.w,
height: 25.w,
);
},
placeholder: (context, url) => Image.asset(
Assets.imagesUserAvatar,
width: 25.w,
height: 25.w,
),
errorWidget: (context, url, error) => Image.asset(
Assets.imagesUserAvatar,
width: 25.w,
height: 25.w,
),
).onTap(() {
_showUserProfileDialog(context);
})

25
lib/widget/message/call_item.dart

@ -3,6 +3,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:im_flutter_sdk/im_flutter_sdk.dart';
import 'package:get/get.dart';
import 'package:cached_network_image/cached_network_image.dart';
import '../../generated/assets.dart';
import '../../controller/global.dart';
@ -309,19 +310,23 @@ class CallItem extends StatelessWidget {
return ClipOval(
child: avatarUrl != null && avatarUrl.isNotEmpty
? Image.network(
avatarUrl,
? CachedNetworkImage(
imageUrl: avatarUrl,
width: 40.w,
height: 40.w,
fit: BoxFit.cover,
errorBuilder: (context, error, stackTrace) {
return Image.asset(
Assets.imagesUserAvatar,
width: 40.w,
height: 40.w,
fit: BoxFit.cover,
);
},
placeholder: (context, url) => Image.asset(
Assets.imagesUserAvatar,
width: 40.w,
height: 40.w,
fit: BoxFit.cover,
),
errorWidget: (context, url, error) => Image.asset(
Assets.imagesUserAvatar,
width: 40.w,
height: 40.w,
fit: BoxFit.cover,
),
)
: Image.asset(
Assets.imagesUserAvatar,

24
lib/widget/message/gift_item.dart

@ -288,19 +288,23 @@ class GiftItem extends StatelessWidget {
return ClipOval(
child: avatarUrl != null && avatarUrl.isNotEmpty
? Image.network(
avatarUrl,
? CachedNetworkImage(
imageUrl: avatarUrl,
width: 40.w,
height: 40.w,
fit: BoxFit.cover,
errorBuilder: (context, error, stackTrace) {
return Image.asset(
Assets.imagesUserAvatar,
width: 40.w,
height: 40.w,
fit: BoxFit.cover,
);
},
placeholder: (context, url) => Image.asset(
Assets.imagesUserAvatar,
width: 40.w,
height: 40.w,
fit: BoxFit.cover,
),
errorWidget: (context, url, error) => Image.asset(
Assets.imagesUserAvatar,
width: 40.w,
height: 40.w,
fit: BoxFit.cover,
),
)
: Image.asset(
Assets.imagesUserAvatar,

25
lib/widget/message/image_item.dart

@ -4,6 +4,7 @@ import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:im_flutter_sdk/im_flutter_sdk.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:cached_network_image/cached_network_image.dart';
import 'package:dating_touchme_app/generated/assets.dart';
import 'package:dating_touchme_app/pages/message/image_viewer_page.dart';
import 'package:dating_touchme_app/controller/global.dart';
@ -645,19 +646,23 @@ class _ImageItemState extends State<ImageItem> {
return ClipOval(
child: avatarUrl != null && avatarUrl.isNotEmpty
? Image.network(
avatarUrl,
? CachedNetworkImage(
imageUrl: avatarUrl,
width: 40.w,
height: 40.w,
fit: BoxFit.cover,
errorBuilder: (context, error, stackTrace) {
return Image.asset(
Assets.imagesUserAvatar,
width: 40.w,
height: 40.w,
fit: BoxFit.cover,
);
},
placeholder: (context, url) => Image.asset(
Assets.imagesUserAvatar,
width: 40.w,
height: 40.w,
fit: BoxFit.cover,
),
errorWidget: (context, url, error) => Image.asset(
Assets.imagesUserAvatar,
width: 40.w,
height: 40.w,
fit: BoxFit.cover,
),
)
: Image.asset(
Assets.imagesUserAvatar,

24
lib/widget/message/room_item.dart

@ -349,19 +349,23 @@ class RoomItem extends StatelessWidget {
return ClipOval(
child: avatarUrl != null && avatarUrl.isNotEmpty
? Image.network(
avatarUrl,
? CachedNetworkImage(
imageUrl: avatarUrl,
width: 40.w,
height: 40.w,
fit: BoxFit.cover,
errorBuilder: (context, error, stackTrace) {
return Image.asset(
Assets.imagesUserAvatar,
width: 40.w,
height: 40.w,
fit: BoxFit.cover,
);
},
placeholder: (context, url) => Image.asset(
Assets.imagesUserAvatar,
width: 40.w,
height: 40.w,
fit: BoxFit.cover,
),
errorWidget: (context, url, error) => Image.asset(
Assets.imagesUserAvatar,
width: 40.w,
height: 40.w,
fit: BoxFit.cover,
),
)
: Image.asset(
Assets.imagesUserAvatar,

25
lib/widget/message/text_item.dart

@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:im_flutter_sdk/im_flutter_sdk.dart';
import 'package:get/get.dart';
import 'package:cached_network_image/cached_network_image.dart';
import '../../../generated/assets.dart';
import '../../../controller/global.dart';
@ -175,19 +176,23 @@ class TextItem extends StatelessWidget {
return ClipOval(
child: avatarUrl != null && avatarUrl.isNotEmpty
? Image.network(
avatarUrl,
? CachedNetworkImage(
imageUrl: avatarUrl,
width: 40.w,
height: 40.w,
fit: BoxFit.cover,
errorBuilder: (context, error, stackTrace) {
return Image.asset(
Assets.imagesUserAvatar,
width: 40.w,
height: 40.w,
fit: BoxFit.cover,
);
},
placeholder: (context, url) => Image.asset(
Assets.imagesUserAvatar,
width: 40.w,
height: 40.w,
fit: BoxFit.cover,
),
errorWidget: (context, url, error) => Image.asset(
Assets.imagesUserAvatar,
width: 40.w,
height: 40.w,
fit: BoxFit.cover,
),
)
: Image.asset(
Assets.imagesUserAvatar,

24
lib/widget/message/video_item.dart

@ -448,19 +448,23 @@ class _VideoItemState extends State<VideoItem> {
return ClipOval(
child: avatarUrl != null && avatarUrl.isNotEmpty
? Image.network(
avatarUrl,
? CachedNetworkImage(
imageUrl: avatarUrl,
width: 40.w,
height: 40.w,
fit: BoxFit.cover,
errorBuilder: (context, error, stackTrace) {
return Image.asset(
Assets.imagesUserAvatar,
width: 40.w,
height: 40.w,
fit: BoxFit.cover,
);
},
placeholder: (context, url) => Image.asset(
Assets.imagesUserAvatar,
width: 40.w,
height: 40.w,
fit: BoxFit.cover,
),
errorWidget: (context, url, error) => Image.asset(
Assets.imagesUserAvatar,
width: 40.w,
height: 40.w,
fit: BoxFit.cover,
),
)
: Image.asset(
Assets.imagesUserAvatar,

25
lib/widget/message/voice_item.dart

@ -7,6 +7,7 @@ import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart';
import 'package:im_flutter_sdk/im_flutter_sdk.dart';
import 'package:cached_network_image/cached_network_image.dart';
import '../../../generated/assets.dart';
import '../../../controller/message/voice_player_manager.dart';
@ -493,19 +494,23 @@ class _VoiceItemState extends State<VoiceItem> with TickerProviderStateMixin {
return ClipOval(
child: avatarUrl != null && avatarUrl.isNotEmpty
? Image.network(
avatarUrl,
? CachedNetworkImage(
imageUrl: avatarUrl,
width: 40.w,
height: 40.w,
fit: BoxFit.cover,
errorBuilder: (context, error, stackTrace) {
return Image.asset(
Assets.imagesUserAvatar,
width: 40.w,
height: 40.w,
fit: BoxFit.cover,
);
},
placeholder: (context, url) => Image.asset(
Assets.imagesUserAvatar,
width: 40.w,
height: 40.w,
fit: BoxFit.cover,
),
errorWidget: (context, url, error) => Image.asset(
Assets.imagesUserAvatar,
width: 40.w,
height: 40.w,
fit: BoxFit.cover,
),
)
: Image.asset(
Assets.imagesUserAvatar,

Loading…
Cancel
Save