avatar.dart 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. import 'package:flutter/material.dart';
  2. import 'package:get/get.dart';
  3. import 'package:vitalapp/architecture/utils/prompt_box.dart';
  4. import 'package:vitalapp/global.dart';
  5. class HomeAvatarWidget extends StatelessWidget {
  6. final double size;
  7. final String headImageToken;
  8. const HomeAvatarWidget({
  9. super.key,
  10. required this.size,
  11. required this.headImageToken,
  12. });
  13. @override
  14. Widget build(BuildContext context) {
  15. return GestureDetector(
  16. child: _buildAvatar(),
  17. onTap: () {
  18. if (kIsOnline) {
  19. Get.toNamed(
  20. '/home/personal_center',
  21. );
  22. } else {
  23. PromptBox.toast("此功能仅网络在线时可用");
  24. }
  25. },
  26. );
  27. }
  28. Widget _buildAvatar() {
  29. // return SizedBox();
  30. if (headImageToken.isNotEmpty) {
  31. return ClipRRect(
  32. borderRadius: BorderRadius.circular(50 / 2),
  33. child: Image.network(
  34. headImageToken,
  35. width: 50,
  36. height: 50,
  37. fit: BoxFit.cover,
  38. loadingBuilder: (context, child, progress) {
  39. if (progress == null ||
  40. progress.cumulativeBytesLoaded == progress.expectedTotalBytes) {
  41. return Image.network(
  42. headImageToken,
  43. width: 50,
  44. height: 50,
  45. fit: BoxFit.cover,
  46. );
  47. }
  48. return const CircularProgressIndicator(color: Colors.white);
  49. },
  50. errorBuilder: (context, error, stackTrace) {
  51. return Image.asset(
  52. "assets/images/avatar.png",
  53. width: 50,
  54. height: 50,
  55. fit: BoxFit.cover,
  56. );
  57. },
  58. ),
  59. );
  60. }
  61. return ClipRRect(
  62. borderRadius: BorderRadius.circular(50 / 2),
  63. child: Image.asset(
  64. 'assets/images/avatar.png',
  65. width: 50,
  66. height: 50,
  67. fit: BoxFit.cover,
  68. ),
  69. );
  70. }
  71. }