friend_page.dart 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  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. }),
  63. Obx(() {
  64. return controller.virtualFriendInfo == null
  65. ? SizedBox.shrink()
  66. : buildFriendItem(controller.virtualFriendInfo!);
  67. }),
  68. ...controller.friendsList.map((e) => Obx(() {
  69. return buildFriendItem(e);
  70. }))
  71. ],
  72. );
  73. }),
  74. )
  75. ],
  76. ),
  77. )
  78. ],
  79. );
  80. }
  81. Widget buildHeadView() {
  82. return Container(
  83. margin: EdgeInsets.symmetric(horizontal: 12.w, vertical: 14.w),
  84. child: Row(
  85. crossAxisAlignment: CrossAxisAlignment.center,
  86. mainAxisAlignment: MainAxisAlignment.spaceBetween,
  87. children: [
  88. GestureDetector(
  89. onTap: controller.back, child: CommonView.getBackBtnView()),
  90. Obx(() {
  91. return Opacity(
  92. opacity: controller.opacity,
  93. child: Text(StringName.friendTitle,
  94. style: TextStyle(
  95. fontSize: 16.sp,
  96. color: ColorName.black90,
  97. fontWeight: FontWeight.bold)),
  98. );
  99. }),
  100. GestureDetector(
  101. onTap: controller.newsClick,
  102. child:
  103. Assets.images.iconFriendNews.image(width: 24.w, height: 24.w))
  104. ],
  105. ),
  106. );
  107. }
  108. }