friend_page.dart 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. import 'package:flutter/cupertino.dart';
  2. import 'package:flutter/src/widgets/framework.dart';
  3. import 'package:flutter_screenutil/flutter_screenutil.dart';
  4. import 'package:get/get.dart';
  5. import 'package:get/get_core/src/get_main.dart';
  6. import 'package:location/base/base_page.dart';
  7. import 'package:location/resource/assets.gen.dart';
  8. import 'package:location/resource/colors.gen.dart';
  9. import 'package:location/resource/string.gen.dart';
  10. import 'package:location/utils/common_expand.dart';
  11. import '../../router/app_pages.dart';
  12. import '../../widget/common_view.dart';
  13. import 'friend_controller.dart';
  14. import 'friend_list_item.dart';
  15. class FriendPage extends BasePage<FriendController> {
  16. const FriendPage({super.key});
  17. static void start() {
  18. Get.toNamed(RoutePath.friend);
  19. }
  20. @override
  21. bool immersive() {
  22. return true;
  23. }
  24. @override
  25. Color backgroundColor() {
  26. return '#F7F7F7'.color;
  27. }
  28. @override
  29. Widget buildBody(BuildContext context) {
  30. return Stack(
  31. children: [
  32. Assets.images.bgPageBackground.image(width: double.infinity),
  33. Positioned(
  34. top: 24.w,
  35. right: 19.w,
  36. child: SafeArea(child: Obx(() {
  37. return Opacity(
  38. opacity: 1 - controller.opacity,
  39. child: Assets.images.iconGuard.image(width: 118.w));
  40. }))),
  41. SafeArea(
  42. child: Column(
  43. children: [
  44. buildHeadView(),
  45. Expanded(
  46. child: Obx(() {
  47. return ListView(
  48. controller: controller.scrollController,
  49. children: [
  50. SizedBox(height: 18.w),
  51. Padding(
  52. padding: EdgeInsets.only(left: 12.w),
  53. child: Text(StringName.friendTitle,
  54. style: TextStyle(
  55. fontSize: 16.sp,
  56. color: ColorName.black90,
  57. fontWeight: FontWeight.bold)),
  58. ),
  59. SizedBox(height: 10.w),
  60. Obx(() {
  61. return buildFriendItem(controller.mineUserInfo,
  62. onEditClick: () =>
  63. controller.onEditClick(controller.mineUserInfo),
  64. viewTraceClick: () => controller
  65. .onViewTraceClick(controller.mineUserInfo));
  66. }),
  67. Obx(() {
  68. return controller.virtualFriendInfo == null
  69. ? SizedBox.shrink()
  70. : buildFriendItem(controller.virtualFriendInfo!,
  71. viewTraceClick: () =>
  72. controller.onViewTraceClick(
  73. controller.virtualFriendInfo!));
  74. }),
  75. ...controller.friendsList.map((e) => Obx(() {
  76. return buildFriendItem(e,
  77. onEditClick: () => controller.onEditClick(e),
  78. viewTraceClick: () =>
  79. controller.onViewTraceClick(e));
  80. }))
  81. ],
  82. );
  83. }),
  84. )
  85. ],
  86. ),
  87. )
  88. ],
  89. );
  90. }
  91. Widget buildHeadView() {
  92. return Container(
  93. margin: EdgeInsets.symmetric(horizontal: 12.w, vertical: 14.w),
  94. child: Row(
  95. crossAxisAlignment: CrossAxisAlignment.center,
  96. mainAxisAlignment: MainAxisAlignment.spaceBetween,
  97. children: [
  98. GestureDetector(
  99. onTap: controller.back, child: CommonView.getBackBtnView()),
  100. Obx(() {
  101. return Opacity(
  102. opacity: controller.opacity,
  103. child: Text(StringName.friendTitle,
  104. style: TextStyle(
  105. fontSize: 16.sp,
  106. color: ColorName.black90,
  107. fontWeight: FontWeight.bold)),
  108. );
  109. }),
  110. GestureDetector(
  111. onTap: controller.newsClick,
  112. child:
  113. Assets.images.iconFriendNews.image(width: 24.w, height: 24.w))
  114. ],
  115. ),
  116. );
  117. }
  118. }