feat: 增加设备管理页

This commit is contained in:
liyi 2025-09-12 18:04:14 +08:00
parent a0ae48243d
commit 496ac22528
15 changed files with 534 additions and 333 deletions

View File

@ -1,4 +1,5 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
android:enableOnBackInvokedCallback="true"
xmlns:tools="http://schemas.android.com/tools">

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

View File

@ -54,7 +54,8 @@ class AppImages{
static const String iconTableMenu = 'assets/icon/icon_table_menu.png';
static const String iconVip = 'assets/icon/icon_vip.png';
static const String defaultAvatar = 'assets/images/default_avatar.png';
static const String iconLockGroupItem = 'assets/icon/icon_lockGroup_item.png';
static const String iconLockTypeDoorLock = 'assets/icon/lockType_doorLock.png';
//
static const String iconHome = 'assets/icon/bar/home.png';
static const String iconHomeSelected = 'assets/icon/bar/home_selected.png';
@ -62,4 +63,5 @@ class AppImages{
static const String iconNotificationSelected = 'assets/icon/bar/notification_selected.png';
static const String iconMine = 'assets/icon/bar/mine.png';
static const String iconMineSelected = 'assets/icon/bar/mine_selected.png';
}

View File

@ -0,0 +1,45 @@
import 'package:starwork_flutter/common/constant/app_images.dart';
class AppSupportDeviceType {
static const all = AppSupportDeviceType('0', '所有设备');
static const lock = AppSupportDeviceType('1', '', iconImagePath: AppImages.iconLockTypeDoorLock);
static const gateway = AppSupportDeviceType('2', '网关');
static const attendanceMachine = AppSupportDeviceType('3', '考勤机');
//
static List<AppSupportDeviceType> get allTypes => [
all,
lock,
gateway,
attendanceMachine,
];
final String value;
final String label;
final String? iconImagePath;
const AppSupportDeviceType(this.value, this.label, {this.iconImagePath});
//
static AppSupportDeviceType? fromValue(String? value) {
return {
'0': all,
'1': lock,
'2': gateway,
'3': attendanceMachine,
}[value];
}
// toString() value
@override
String toString() => value;
// ==
@override
bool operator ==(Object other) =>
identical(this, other) ||
other is AppSupportDeviceType && runtimeType == other.runtimeType && value == other.value;
@override
int get hashCode => value.hashCode;
}

View File

@ -1,35 +0,0 @@
class DeviceType {
static const all = DeviceType('0', '所有');
static const lock = DeviceType('1', '');
static const gateway = DeviceType('2', '网关');
static const attendanceMachine = DeviceType('3', '考勤机');
final String value;
final String label;
const DeviceType(this.value, this.label);
//
static DeviceType? fromValue(String? value) {
return {
'0': all,
'1': lock,
'2': gateway,
'3': attendanceMachine,
}[value];
}
// toString() value
@override
String toString() => value;
// ==
@override
bool operator ==(Object other) =>
identical(this, other) ||
other is DeviceType &&
runtimeType == other.runtimeType &&
value == other.value;
@override
int get hashCode => value.hashCode;
}

View File

@ -6,11 +6,13 @@ class CustomCellWidget extends StatelessWidget {
const CustomCellWidget({
super.key,
required this.leftText,
this.leftIcon,
this.rightWidget,
this.onTap,
});
final String leftText;
final Icon? leftIcon;
final Widget? rightWidget;
final GestureTapCallback? onTap;
@ -29,13 +31,21 @@ class CustomCellWidget extends StatelessWidget {
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text(
leftText,
style: TextStyle(
fontSize: 14.sp,
color: Colors.black87,
fontWeight: FontWeight.w400,
),
Row(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
if (leftIcon != null) leftIcon!,
if (leftIcon != null) SizedBox(width: 4.w),
Text(
leftText,
style: TextStyle(
fontSize: 14.sp,
color: Colors.black87,
fontWeight: FontWeight.w400,
),
),
],
),
rightWidget ??
Text(

View File

@ -2,6 +2,8 @@ import 'package:get/get.dart';
import 'package:starwork_flutter/routes/app_routes.dart';
import 'package:starwork_flutter/views/device/confirmPairDevice/confirm_pair_device_binding.dart';
import 'package:starwork_flutter/views/device/confirmPairDevice/confirm_pair_device_view.dart';
import 'package:starwork_flutter/views/device/deviceManage/device_manage_binding.dart';
import 'package:starwork_flutter/views/device/deviceManage/device_manage_view.dart';
import 'package:starwork_flutter/views/device/searchDevice/search_device_binding.dart';
import 'package:starwork_flutter/views/device/searchDevice/search_device_view.dart';
import 'package:starwork_flutter/views/home/home_binding.dart';
@ -123,5 +125,10 @@ class AppPages {
page: () => TeamInfoView(),
binding: TeamInfoBinding(),
),
GetPage(
name: AppRoutes.deviceManage,
page: () => DeviceManageView(),
binding: DeviceManageBinding(),
),
];
}

View File

@ -8,8 +8,6 @@ class AppRoutes{
static const String inputVerificationCode = '/inputVerificationCode';
static const String forgotPassword = '/forgotPassword';
static const String setNewPassword = '/setNewPassword';
static const String searchDevice = '/searchDevice';
static const String confirmPairDevice = '/confirmPairDevice';
static const String teamNotice = '/team/teamNotice';
static const String teamNoticeDetails = '/team/teamNoticeDetails';
static const String teamUseCaseSetting = '/team/useCaseSetting';
@ -17,4 +15,7 @@ class AppRoutes{
static const String teamJoinTeam = '/team/joinTeam';
static const String teamManage = '/team/teamManage';
static const String teamInfo = '/team/teamInfo';
static const String deviceManage = '/device/deviceManage';
static const String searchDevice = '/device/searchDevice';
static const String confirmPairDevice = '/device/confirmPairDevice';
}

View File

@ -0,0 +1,9 @@
import 'package:get/get.dart';
import 'package:starwork_flutter/views/device/deviceManage/device_manage_controller.dart';
class DeviceManageBinding extends Bindings {
@override
void dependencies() {
Get.lazyPut(() => DeviceManageController());
}
}

View File

@ -0,0 +1,12 @@
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:get/get_rx/get_rx.dart';
import 'package:starwork_flutter/common/constant/app_support_device_type.dart';
class DeviceManageController extends GetxController with GetSingleTickerProviderStateMixin {
// 0: 1线 2线
final RxInt selectedStatusIndex = 0.obs;
//
final selectedDeviceType = AppSupportDeviceType.all.obs;
}

View File

@ -0,0 +1,340 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:starwork_flutter/common/constant/app_colors.dart';
import 'package:starwork_flutter/common/constant/app_support_device_type.dart';
import 'package:starwork_flutter/common/widgets/custome_app_bar_wdiget.dart';
import 'package:starwork_flutter/extension/function_extension.dart';
import 'package:starwork_flutter/views/device/deviceManage/device_manage_controller.dart';
class DeviceManageView extends GetView<DeviceManageController> {
const DeviceManageView({super.key});
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: () {
FocusScope.of(context).requestFocus(FocusNode());
},
child: Scaffold(
backgroundColor: AppColors.scaffoldBackgroundColor,
appBar: CustomAppBarWidget(
title: '设备管理'.tr,
),
body: SafeArea(
child: Padding(
padding: EdgeInsets.symmetric(
vertical: 10.h,
),
child: Column(
children: [
Container(
padding: EdgeInsets.symmetric(
horizontal: 10.w,
vertical: 10.h,
),
decoration: BoxDecoration(
color: Colors.white,
),
child: Column(
children: [
_buildSearchBar(),
SizedBox(
height: 10.h,
),
_buildLabelRow(),
],
),
),
// +
Expanded(
//
child: _buildMainArea(),
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
TextButton(
onPressed: () {},
child: Text(
'添加设备',
style: TextStyle(
color: Colors.blue,
fontWeight: FontWeight.w500,
fontSize: 16.sp,
),
),
),
TextButton(
onPressed: () {},
child: Text(
'删除设备',
style: TextStyle(
color: Colors.blue,
fontWeight: FontWeight.w500,
fontSize: 16.sp,
),
),
),
TextButton(
onPressed: () {},
child: Text(
'更多管理',
style: TextStyle(
color: Colors.blue,
fontWeight: FontWeight.w500,
fontSize: 16.sp,
),
),
)
],
),
],
),
),
),
),
);
}
_buildSearchBar() {
return TextField(
decoration: InputDecoration(
hintText: '请输入设备名称或编号'.tr,
hintStyle: TextStyle(
fontSize: 14.sp,
color: const Color(0xFF999999),
),
prefixIcon: const Icon(
Icons.search,
color: Color(0xFF999999),
),
filled: true,
//
fillColor: const Color(0xFFf0f0f0),
//
border: InputBorder.none,
//
contentPadding: EdgeInsets.symmetric(horizontal: 10.w, vertical: 10.h),
focusedBorder: OutlineInputBorder(
borderSide: const BorderSide(
color: Colors.blue,
width: 1.5,
),
borderRadius: BorderRadius.circular(8.0.r),
),
enabledBorder: OutlineInputBorder(
borderSide: const BorderSide(color: Colors.transparent),
borderRadius: BorderRadius.circular(8.0.r),
),
),
);
}
_buildLabelRow() {
return Obx(
() => Row(
children: [
GestureDetector(
onTap: () {
controller.selectedStatusIndex.value = 0;
},
child: Container(
padding: EdgeInsets.symmetric(horizontal: 10.w, vertical: 4.h),
decoration: BoxDecoration(
color: controller.selectedStatusIndex == 0 ? Colors.black : Colors.grey[300],
borderRadius: BorderRadius.circular(4.r),
),
child: Text(
'全部状态'.tr,
style: TextStyle(
fontSize: 12.sp,
color: controller.selectedStatusIndex == 0 ? Colors.white : Colors.grey[500],
fontWeight: FontWeight.w500,
),
),
),
),
SizedBox(
width: 10.w,
),
GestureDetector(
onTap: () {
controller.selectedStatusIndex.value = 1;
},
child: Container(
padding: EdgeInsets.symmetric(horizontal: 10.w, vertical: 4.h),
decoration: BoxDecoration(
color: controller.selectedStatusIndex == 1 ? Colors.black : Colors.grey[300],
borderRadius: BorderRadius.circular(4.r),
),
child: Text(
'在线(${1})'.tr,
style: TextStyle(
fontSize: 12.sp,
color: controller.selectedStatusIndex == 1 ? Colors.white : Colors.grey[500],
fontWeight: FontWeight.w500,
),
),
),
),
SizedBox(
width: 10.w,
),
GestureDetector(
onTap: () {
controller.selectedStatusIndex.value = 2;
},
child: Container(
padding: EdgeInsets.symmetric(horizontal: 10.w, vertical: 4.h),
decoration: BoxDecoration(
color: controller.selectedStatusIndex == 2 ? Colors.black : Colors.grey[300],
borderRadius: BorderRadius.circular(4.r),
),
child: Text(
'离线(${1})'.tr,
style: TextStyle(
fontSize: 12.sp,
color: controller.selectedStatusIndex == 2 ? Colors.white : Colors.grey[500],
fontWeight: FontWeight.w500,
),
),
),
),
],
),
);
}
_buildMainArea() {
return Row(
children: [
Expanded(
flex: 1,
child: _buildLeftOptionsList(), //
),
Expanded(
flex: 4,
child: _buildRightDeviceList(), //
),
],
);
}
_buildLeftOptionsList() {
return Container(
decoration: const BoxDecoration(
color: Colors.white,
),
child: ListView.builder(
itemCount: AppSupportDeviceType.allTypes.length,
itemBuilder: (context, index) {
var deviceType = AppSupportDeviceType.allTypes[index];
return Obx(
() => GestureDetector(
onTap: () {
controller.selectedDeviceType.value = deviceType;
},
child: Container(
padding: EdgeInsets.symmetric(vertical: 10.h),
decoration: BoxDecoration(
color: controller.selectedDeviceType.value == deviceType
? AppColors.scaffoldBackgroundColor
: Colors.white,
),
alignment: Alignment.center,
child: Text(
'${deviceType.label}(${0})',
style: TextStyle(
fontSize: 10.sp,
color: Colors.black,
fontWeight: FontWeight.w500,
),
),
),
),
);
},
),
);
}
_buildRightDeviceList() {
return Container(
padding: EdgeInsets.symmetric(horizontal: 10.w, vertical: 10.h),
child: GridView.builder(
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 2, //
crossAxisSpacing: 6.w, //
mainAxisSpacing: 6.h, //
childAspectRatio: 1.6, //
),
itemCount: 100,
itemBuilder: (context, index) {
return Container(
width: double.infinity,
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.all(Radius.circular(8.r)),
),
padding: EdgeInsets.symmetric(
horizontal: 10.w,
),
alignment: Alignment.centerLeft,
child: Obx(
() => Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
if (controller.selectedDeviceType.value.iconImagePath != null)
Image(
image: AssetImage(controller.selectedDeviceType.value.iconImagePath!),
width: 26.w,
height: 26.w,
fit: BoxFit.contain,
gaplessPlayback: true,
//
filterQuality: FilterQuality.medium,
//
errorBuilder: (context, error, stackTrace) {
return Icon(
Icons.image_not_supported,
size: 26.sp,
color: Colors.grey,
);
},
),
SizedBox(
height: 6.h,
),
Text(
'TMH_5sdds5465a4sd5665$index',
style: TextStyle(
fontSize: 10.sp,
fontWeight: FontWeight.w400,
),
maxLines: 1,
overflow: TextOverflow.ellipsis,
),
SizedBox(
height: 4.h,
),
Text(
'在线',
style: TextStyle(
color: Colors.green,
fontSize: 10.sp,
fontWeight: FontWeight.w500,
),
)
],
),
),
);
},
),
);
}
}

View File

@ -1,11 +1,14 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/src/widgets/framework.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:starwork_flutter/api/model/team/response/team_info_response.dart';
import 'package:starwork_flutter/base/app_logger.dart';
import 'package:starwork_flutter/common/constant/app_colors.dart';
import 'package:starwork_flutter/common/widgets/custom_cell_list_widget.dart';
import 'package:starwork_flutter/common/widgets/custom_cell_widget.dart';
import 'package:starwork_flutter/common/widgets/custome_app_bar_wdiget.dart';
import 'package:starwork_flutter/extension/function_extension.dart';
import 'package:starwork_flutter/routes/app_routes.dart';
@ -50,7 +53,6 @@ class TeamManageView extends GetView<TeamManageController> {
SizedBox(
height: 10.h,
),
SizedBox(
width: double.infinity,
child: Row(
@ -59,7 +61,7 @@ class TeamManageView extends GetView<TeamManageController> {
child: ElevatedButton(
onPressed: () {}.debounce(),
style: ElevatedButton.styleFrom(
backgroundColor: Colors.grey[100],
backgroundColor: Colors.white,
padding: EdgeInsets.symmetric(vertical: 12.h),
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8.r)),
),
@ -205,122 +207,49 @@ class TeamManageView extends GetView<TeamManageController> {
SizedBox(
height: 10.h,
),
Container(
width: double.infinity,
padding: EdgeInsets.symmetric(horizontal: 10.w, vertical: 10.h),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(8.r),
color: Colors.white,
),
child: Column(
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Row(
children: [
Icon(
Icons.perm_contact_calendar_rounded,
color: Colors.blue.withOpacity(0.8),
),
SizedBox(
width: 8.w,
),
Text(
'人员配置',
style: TextStyle(
fontSize: 14.sp,
fontWeight: FontWeight.w500,
color: Colors.black87,
),
),
],
),
Icon(
Icons.arrow_forward_ios_rounded,
color: Colors.grey,
size: 14.sp,
)
],
CustomCellListWidget(
children: [
CustomCellWidget(
onTap: () {},
leftText: '人员配置'.tr,
leftIcon: Icon(
Icons.perm_contact_calendar_rounded,
color: Colors.blue.withOpacity(0.8),
),
SizedBox(height: 10.h),
// 线
Divider(
height: 1.h,
color: Colors.grey.withOpacity(0.2),
rightWidget: Icon(
Icons.arrow_forward_ios_rounded,
size: 16.sp,
color: Colors.grey[300],
),
SizedBox(height: 10.h),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Row(
children: [
Icon(
Icons.person,
color: Colors.blue.withOpacity(0.8),
),
SizedBox(
width: 8.w,
),
Text(
'权限分配',
style: TextStyle(
fontSize: 14.sp,
fontWeight: FontWeight.w500,
color: Colors.black87,
),
),
],
),
Icon(
Icons.arrow_forward_ios_rounded,
color: Colors.grey,
size: 14.sp,
)
],
),
CustomCellWidget(
onTap: () {},
leftText: '权限分配'.tr,
leftIcon: Icon(
Icons.person,
color: Colors.blue.withOpacity(0.8),
),
SizedBox(height: 10.h),
Divider(
height: 1.h,
color: Colors.grey.withOpacity(0.2),
rightWidget: Icon(
Icons.arrow_forward_ios_rounded,
size: 16.sp,
color: Colors.grey[300],
),
SizedBox(height: 10.h),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Row(
children: [
Icon(
Icons.switch_account_rounded,
color: Colors.blue,
),
SizedBox(
width: 8.w,
),
Text(
'新用户审核',
style: TextStyle(
fontSize: 14.sp,
fontWeight: FontWeight.w500,
color: Colors.black87,
),
),
],
),
Icon(
Icons.arrow_forward_ios_rounded,
color: Colors.grey,
size: 14.sp,
)
],
)
],
),
)
),
CustomCellWidget(
onTap: () {},
leftText: '新用户审核'.tr,
leftIcon: Icon(
Icons.switch_account_rounded,
color: Colors.blue.withOpacity(0.8),
),
rightWidget: Icon(
Icons.arrow_forward_ios_rounded,
size: 16.sp,
color: Colors.grey[300],
),
),
],
),
],
);
}
@ -340,160 +269,64 @@ class TeamManageView extends GetView<TeamManageController> {
SizedBox(
height: 10.h,
),
Container(
width: double.infinity,
padding: EdgeInsets.symmetric(horizontal: 10.w, vertical: 10.h),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(8.r),
color: Colors.white,
),
child: Column(
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Row(
children: [
Icon(
Icons.assessment_rounded,
color: Colors.blue.withOpacity(0.8),
),
SizedBox(
width: 8.w,
),
Text(
'设备管理',
style: TextStyle(
fontSize: 14.sp,
fontWeight: FontWeight.w500,
color: Colors.black87,
),
),
],
),
Icon(
Icons.arrow_forward_ios_rounded,
color: Colors.grey,
size: 14.sp,
)
],
CustomCellListWidget(
children: [
CustomCellWidget(
onTap: () {
Get.toNamed(AppRoutes.deviceManage);
},
leftText: '设备管理'.tr,
leftIcon: Icon(
Icons.storage_rounded,
color: Colors.blue.withOpacity(0.8),
),
SizedBox(height: 10.h),
// 线
Divider(
height: 1.h,
color: Colors.grey.withOpacity(0.2),
rightWidget: Icon(
Icons.arrow_forward_ios_rounded,
size: 16.sp,
color: Colors.grey[300],
),
SizedBox(height: 10.h),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Row(
children: [
Icon(
Icons.assessment_rounded,
color: Colors.blue.withOpacity(0.8),
),
SizedBox(
width: 8.w,
),
Text(
'运维服务',
style: TextStyle(
fontSize: 14.sp,
fontWeight: FontWeight.w500,
color: Colors.black87,
),
),
],
),
Icon(
Icons.arrow_forward_ios_rounded,
color: Colors.grey,
size: 14.sp,
)
],
),
CustomCellWidget(
onTap: () {},
leftText: '运维服务'.tr,
leftIcon: Icon(
Icons.assessment_rounded,
color: Colors.blue.withOpacity(0.8),
),
SizedBox(height: 10.h),
// 线
Divider(
height: 1.h,
color: Colors.grey.withOpacity(0.2),
rightWidget: Icon(
Icons.arrow_forward_ios_rounded,
size: 16.sp,
color: Colors.grey[300],
),
SizedBox(height: 10.h),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Row(
children: [
Icon(
Icons.assignment,
color: Colors.blue.withOpacity(0.8),
),
SizedBox(
width: 8.w,
),
Text(
'操作日志',
style: TextStyle(
fontSize: 14.sp,
fontWeight: FontWeight.w500,
color: Colors.black87,
),
),
],
),
Icon(
Icons.arrow_forward_ios_rounded,
color: Colors.grey,
size: 14.sp,
)
],
),
CustomCellWidget(
onTap: () {},
leftText: '操作日志'.tr,
leftIcon: Icon(
Icons.assignment,
color: Colors.blue.withOpacity(0.8),
),
SizedBox(height: 10.h),
Divider(
height: 1.h,
color: Colors.grey.withOpacity(0.2),
rightWidget: Icon(
Icons.arrow_forward_ios_rounded,
size: 16.sp,
color: Colors.grey[300],
),
SizedBox(height: 10.h),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Row(
children: [
Icon(
Icons.qr_code_2_outlined,
color: Colors.blue,
),
SizedBox(
width: 8.w,
),
Text(
'团队二维码',
style: TextStyle(
fontSize: 14.sp,
fontWeight: FontWeight.w500,
color: Colors.black87,
),
),
],
),
Icon(
Icons.arrow_forward_ios_rounded,
color: Colors.grey,
size: 14.sp,
)
],
)
],
),
)
),
CustomCellWidget(
onTap: () {},
leftText: '团队二维码'.tr,
leftIcon: Icon(
Icons.qr_code_2_outlined,
color: Colors.blue.withOpacity(0.8),
),
rightWidget: Icon(
Icons.arrow_forward_ios_rounded,
size: 16.sp,
color: Colors.grey[300],
),
),
],
),
],
);
}

View File

@ -3,6 +3,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:starwork_flutter/common/constant/app_colors.dart';
import 'package:starwork_flutter/common/widgets/custome_app_bar_wdiget.dart';
import 'package:starwork_flutter/views/team/teamNotice/team_notice_controller.dart';
class TeamNoticeView extends GetView<TeamNoticeController> {
@ -11,32 +12,7 @@ class TeamNoticeView extends GetView<TeamNoticeController> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Colors.white,
elevation: 0,
surfaceTintColor: Colors.transparent,
shadowColor: Colors.transparent,
scrolledUnderElevation: 0,
leading: IconButton(
icon: const Icon(Icons.arrow_back_ios_new_rounded), //
onPressed: () {
// 退
Navigator.of(context).pop();
},
),
title: Row(
children: [
Text(
'公告'.tr,
style: TextStyle(
fontSize: 18.sp,
fontWeight: FontWeight.w500,
color: Colors.black87,
),
),
],
),
),
appBar: CustomAppBarWidget(title: '公告'.tr),
body: Column(
children: [
TabBar(