Files
MWClash/lib/widgets/icon.dart
chen08209 ef97ef40a1 Remake dashboard
Optimize theme

Optimize more details

Update flutter version
2025-01-09 10:10:06 +08:00

53 lines
1.1 KiB
Dart

import 'package:cached_network_image/cached_network_image.dart';
import 'package:fl_clash/common/common.dart';
import 'package:flutter/material.dart';
class CommonTargetIcon extends StatelessWidget {
final String src;
final double size;
const CommonTargetIcon({
super.key,
required this.src,
required this.size,
});
Widget _defaultIcon() {
return Icon(
IconsExt.target,
size: size,
);
}
Widget _buildIcon() {
if (src.isEmpty) {
return _defaultIcon();
}
final base64 = src.getBase64;
if (base64 != null) {
return Image.memory(
base64,
gaplessPlayback: true,
errorBuilder: (_, error, ___) {
return _defaultIcon();
},
);
}
return CachedNetworkImage(
imageUrl: src,
fadeInDuration: Duration.zero,
fadeOutDuration: Duration.zero,
errorWidget: (_, __, ___) => _defaultIcon(),
);
}
@override
Widget build(BuildContext context) {
return SizedBox(
width: size,
height: size,
child: _buildIcon(),
);
}
}