import 'package:flutter/cupertino.dart'; import 'package:flutter/src/widgets/framework.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import 'package:get/get_core/src/get_main.dart'; import 'package:location/base/base_page.dart'; import 'package:location/resource/assets.gen.dart'; import 'package:location/resource/colors.gen.dart'; import 'package:location/resource/string.gen.dart'; import 'package:location/utils/common_expand.dart'; import '../../router/app_pages.dart'; import '../../widget/common_view.dart'; import 'friend_controller.dart'; import 'friend_list_item.dart'; class FriendPage extends BasePage { const FriendPage({super.key}); static void start() { Get.toNamed(RoutePath.friend); } @override bool immersive() { return true; } @override Color backgroundColor() { return '#F7F7F7'.color; } @override Widget buildBody(BuildContext context) { return Stack( children: [ Assets.images.bgPageBackground.image(width: double.infinity), Positioned( top: 24.w, right: 19.w, child: SafeArea(child: Obx(() { return Opacity( opacity: 1 - controller.opacity, child: Assets.images.iconGuard.image(width: 118.w)); }))), SafeArea( child: Column( children: [ buildHeadView(), Expanded( child: Obx(() { return ListView( controller: controller.scrollController, children: [ SizedBox(height: 18.w), Padding( padding: EdgeInsets.only(left: 12.w), child: Text(StringName.friendTitle, style: TextStyle( fontSize: 16.sp, color: ColorName.black90, fontWeight: FontWeight.bold)), ), SizedBox(height: 10.w), Obx(() { return buildFriendItem(controller.mineUserInfo); }), Obx(() { return controller.virtualFriendInfo == null ? SizedBox.shrink() : buildFriendItem(controller.virtualFriendInfo!); }), ...controller.friendsList.map((e) => Obx(() { return buildFriendItem(e); })) ], ); }), ) ], ), ) ], ); } Widget buildHeadView() { return Container( margin: EdgeInsets.symmetric(horizontal: 12.w, vertical: 14.w), child: Row( crossAxisAlignment: CrossAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ GestureDetector( onTap: controller.back, child: CommonView.getBackBtnView()), Obx(() { return Opacity( opacity: controller.opacity, child: Text(StringName.friendTitle, style: TextStyle( fontSize: 16.sp, color: ColorName.black90, fontWeight: FontWeight.bold)), ); }), GestureDetector( onTap: controller.newsClick, child: Assets.images.iconFriendNews.image(width: 24.w, height: 24.w)) ], ), ); } }