| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266 |
- import 'package:flutter/material.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/data/bean/contact_info.dart';
- import 'package:location/module/urgent_contact/urgent_contact_controller.dart';
- import 'package:location/resource/assets.gen.dart';
- import 'package:location/utils/common_expand.dart';
- import 'package:location/widget/common_view.dart';
- import '../../resource/colors.gen.dart';
- import '../../resource/string.gen.dart';
- import '../../router/app_pages.dart';
- class UrgentContactPage extends BasePage<UrgentContactController> {
- const UrgentContactPage({super.key});
- static void start() {
- Get.toNamed(RoutePath.urgentContact);
- }
- @override
- bool immersive() {
- return true;
- }
- @override
- Widget buildBody(BuildContext context) {
- return Obx(() {
- if (controller.isLoaded) {
- return urgentPageView();
- }
- return SizedBox.shrink();
- });
- }
- Widget urgentPageView() {
- if (controller.contactList.isEmpty) {
- return urgentEmptyView();
- } else {
- return urgentListView();
- }
- }
- Widget urgentListView() {
- return Container(
- decoration: BoxDecoration(
- gradient: LinearGradient(
- colors: [ColorName.white, '#F7F7F7'.color, '#F7F7F7'.color],
- begin: Alignment.topCenter,
- end: Alignment.bottomCenter),
- ),
- child: Stack(
- children: [
- Assets.images.bgPageBackground.image(width: 1.sw),
- Positioned(
- top: 0,
- right: 35.w,
- child: SafeArea(
- child: Assets.images.bgUrgentContactLogo
- .image(width: 145.w, height: 145.w)),
- ),
- SafeArea(
- child: Column(
- children: [
- CommonView.buildAppBar("", backOnTap: controller.back),
- Expanded(
- child: ListView(
- children: [
- SizedBox(height: 25.h),
- buildAddContact(),
- SizedBox(height: 20.w),
- Padding(
- padding: EdgeInsets.only(left: 17.w),
- child: Text(
- StringName.urgentContactSubtitle,
- style: TextStyle(
- fontSize: 16.sp,
- color: ColorName.black90,
- fontWeight: FontWeight.bold),
- ),
- ),
- SizedBox(height: 14.w),
- ...controller.contactList.map((e) => buildContactItem(e))
- ],
- )),
- Container(
- decoration: BoxDecoration(
- color: ColorName.white,
- boxShadow: [
- BoxShadow(
- color: ColorName.black.withOpacity(0.1),
- offset: Offset(20, 20),
- blurRadius: 10)
- ],
- ),
- child: Container(
- decoration: BoxDecoration(
- color: '#FF5555'.color,
- borderRadius: BorderRadius.circular(10.w),
- ),
- height: 46.w,
- width: 330.w,
- margin: EdgeInsets.only(top: 10.w, bottom: 15.w),
- child: Center(
- child: Text(StringName.urgentContactSendHelp,
- style: TextStyle(
- fontSize: 14.sp, color: ColorName.white)),
- ),
- ),
- )
- ],
- ),
- )
- ],
- ),
- );
- }
- Widget buildContactItem(ContactInfo e) {
- return Container(
- decoration: BoxDecoration(
- color: ColorName.white,
- borderRadius: BorderRadius.circular(11.w),
- boxShadow: [
- BoxShadow(
- color: ColorName.black.withOpacity(0.03),
- offset: Offset(2, 2),
- blurRadius: 2)
- ]),
- margin: EdgeInsets.only(left: 12.w, right: 12.w, bottom: 10.w),
- padding: EdgeInsets.symmetric(horizontal: 10.w, vertical: 16.w),
- child: Row(
- children: [
- Assets.images.iconDefaultFriendAvatar
- .image(width: 48.w, height: 48.w),
- SizedBox(width: 8.w),
- Text(e.remark ?? e.phone,
- style: TextStyle(
- fontSize: 14.sp,
- color: ColorName.black90,
- fontWeight: FontWeight.bold)),
- SizedBox(width: 8.w),
- Visibility(
- visible: e.favor == true,
- child: Container(
- decoration: BoxDecoration(
- color: '#1F969696'.color,
- borderRadius: BorderRadius.circular(4.w)),
- padding: EdgeInsets.symmetric(horizontal: 9.w, vertical: 3.w),
- child: Text(StringName.urgentContactDefaultSelected,
- style: TextStyle(fontSize: 12.sp, color: '#858585'.color))),
- ),
- Spacer(),
- Assets.images.iconUrgentContactDialPhone
- .image(width: 40.w, height: 40.w),
- SizedBox(width: 16.w),
- Assets.images.iconUrgentContactMore.image(width: 24.w, height: 24.w)
- ],
- ),
- );
- }
- Widget urgentEmptyView() {
- return SafeArea(
- child: Column(
- children: [
- CommonView.buildAppBar(StringName.urgentContactTitle,
- backOnTap: controller.back),
- SizedBox(height: 40.h),
- Assets.images.bgUrgentContactLogo.image(width: 268.w, height: 234.w),
- SizedBox(height: 37.h),
- Text(StringName.urgentContactOnceClickHelp,
- style: TextStyle(
- fontSize: 18.sp,
- color: '#FF4B34'.color,
- fontWeight: FontWeight.bold)),
- SizedBox(height: 21.h),
- SizedBox(
- width: 261.w,
- child: Text(StringName.urgentContactOnceClickHelpDesc,
- style: TextStyle(
- fontSize: 13.sp,
- color: ColorName.black90,
- )),
- ),
- SizedBox(height: 60.h),
- GestureDetector(
- onTap: controller.addContactClick,
- child: Container(
- decoration: BoxDecoration(
- color: ColorName.colorPrimary,
- borderRadius: BorderRadius.circular(10.w)),
- width: 320.w,
- height: 42.w,
- child: Row(
- mainAxisAlignment: MainAxisAlignment.center,
- children: [
- Assets.images.iconUrgentAdd.image(width: 12.w, height: 12.w),
- SizedBox(width: 5.w),
- Text(StringName.urgentContactBtnTxt,
- style:
- TextStyle(fontSize: 14.sp, color: ColorName.white)),
- ],
- ),
- ),
- ),
- ],
- ),
- );
- }
- Widget buildAddContact() {
- return GestureDetector(
- onTap: controller.addContactClick,
- child: Container(
- height: 66.w,
- decoration: BoxDecoration(boxShadow: [
- BoxShadow(
- color: ColorName.black.withOpacity(0.06),
- offset: Offset(0, 2),
- blurRadius: 10)
- ], color: ColorName.white, borderRadius: BorderRadius.circular(10.w)),
- margin: EdgeInsets.symmetric(horizontal: 12.w),
- child: Row(
- mainAxisAlignment: MainAxisAlignment.center,
- children: [
- SizedBox(
- width: 52.w,
- height: 52.w,
- child: Stack(
- children: [
- Assets.images.bgUrgentContactAdd
- .image(width: double.infinity, height: double.infinity),
- Center(
- child: Assets.images.iconUrgentContactAdd
- .image(width: 28.w, height: 28.w),
- ),
- ],
- ),
- ),
- SizedBox(width: 18.w),
- Column(
- mainAxisAlignment: MainAxisAlignment.center,
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- Text(
- StringName.urgentContactTitle,
- style: TextStyle(
- fontSize: 14.sp,
- color: ColorName.black90,
- fontWeight: FontWeight.bold),
- ),
- SizedBox(height: 3.w),
- Text(StringName.urgentContactAddDesc,
- style:
- TextStyle(fontSize: 12.sp, color: ColorName.black70)),
- ],
- )
- ],
- ),
- ),
- );
- }
- }
|