|
@@ -8,9 +8,11 @@ import 'package:flutter/material.dart';
|
|
import 'package:flutter/widgets.dart';
|
|
import 'package:flutter/widgets.dart';
|
|
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
|
|
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
|
|
import 'package:get/get.dart';
|
|
import 'package:get/get.dart';
|
|
|
|
+import 'package:shared/utils/util.dart';
|
|
import 'package:widgets/ext/ex_widget.dart';
|
|
import 'package:widgets/ext/ex_widget.dart';
|
|
import 'package:cs_resources/constants/color_constants.dart';
|
|
import 'package:cs_resources/constants/color_constants.dart';
|
|
import 'package:widgets/load_state_layout.dart';
|
|
import 'package:widgets/load_state_layout.dart';
|
|
|
|
+import 'package:widgets/my_button.dart';
|
|
import 'package:widgets/my_load_image.dart';
|
|
import 'package:widgets/my_load_image.dart';
|
|
import 'package:widgets/my_text_view.dart';
|
|
import 'package:widgets/my_text_view.dart';
|
|
import 'package:widgets/search_app_bar.dart';
|
|
import 'package:widgets/search_app_bar.dart';
|
|
@@ -73,88 +75,80 @@ class _PreselectedAddStaffState extends State<PreselectedAddStaff> {
|
|
),
|
|
),
|
|
),
|
|
),
|
|
|
|
|
|
- SearchAppBar(
|
|
|
|
- value: controller.keyword,
|
|
|
|
- searchBarHeight: 38,
|
|
|
|
- searchBarBgColor: Colors.white,
|
|
|
|
- searchBarBorderRadius: 15,
|
|
|
|
- searchBarBorder: Border.all(
|
|
|
|
- color: Color(0XFFC3C3C3), // 设置边框颜色为灰色
|
|
|
|
- width: 0.5, // 设置边框宽度
|
|
|
|
- ),
|
|
|
|
- textHintColor: Color(0XFFAFB3B7),
|
|
|
|
- textColor: ColorConstants.black33,
|
|
|
|
- onSearch: (keyword) {
|
|
|
|
- controller.doSearch(keyword);
|
|
|
|
- },
|
|
|
|
- hintText: "Staff Name/ID/Phone".tr,
|
|
|
|
- controller: controller.searchController,
|
|
|
|
- ).marginOnly(left: 16.5, right: 1.5, bottom: 15.5),
|
|
|
|
-
|
|
|
|
|
|
+ // 搜索栏
|
|
Container(
|
|
Container(
|
|
- color: Colors.white,
|
|
|
|
- child: EasyRefresh(
|
|
|
|
- header: ClassicHeader(
|
|
|
|
- dragText: 'Pull to refresh'.tr,
|
|
|
|
- armedText: 'Release ready'.tr,
|
|
|
|
- readyText: 'Refreshing...'.tr,
|
|
|
|
- processingText: 'Refreshing...'.tr,
|
|
|
|
- processedText: 'Succeeded'.tr,
|
|
|
|
- noMoreText: 'No more'.tr,
|
|
|
|
- failedText: 'Failed'.tr,
|
|
|
|
- messageText: 'Last updated at %T'.tr,
|
|
|
|
- textStyle: const TextStyle(color: ColorConstants.black66, fontSize: 14),
|
|
|
|
- messageStyle: const TextStyle(color: ColorConstants.black66, fontSize: 12),
|
|
|
|
- iconTheme: const IconThemeData(color: ColorConstants.black66),
|
|
|
|
- backgroundColor: Colors.transparent,
|
|
|
|
- ),
|
|
|
|
- footer: ClassicFooter(
|
|
|
|
- dragText: 'Pull to load'.tr,
|
|
|
|
- armedText: 'Release ready'.tr,
|
|
|
|
- readyText: 'Loading...'.tr,
|
|
|
|
- processingText: 'Loading...'.tr,
|
|
|
|
- processedText: 'Succeeded'.tr,
|
|
|
|
- noMoreText: 'No more'.tr,
|
|
|
|
- failedText: 'Failed'.tr,
|
|
|
|
- showMessage: false,
|
|
|
|
- triggerOffset: 50,
|
|
|
|
- iconDimension: 22,
|
|
|
|
- textStyle: const TextStyle(color: ColorConstants.black66, fontSize: 14),
|
|
|
|
- messageStyle: const TextStyle(color: ColorConstants.black66, fontSize: 12),
|
|
|
|
- iconTheme: const IconThemeData(color: ColorConstants.black66),
|
|
|
|
- backgroundColor: Colors.transparent,
|
|
|
|
- ),
|
|
|
|
- controller: controller.refreshController,
|
|
|
|
- onRefresh: controller.onRefresh,
|
|
|
|
- onLoad: controller.loadMore,
|
|
|
|
- child: LoadStateLayout(
|
|
|
|
- themeColor: ColorConstants.black66,
|
|
|
|
- state: controller.loadingState,
|
|
|
|
- errorMessage: controller.errorMessage,
|
|
|
|
- errorRetry: () {
|
|
|
|
- controller.retryRequest();
|
|
|
|
- },
|
|
|
|
- successSliverWidget: [
|
|
|
|
- SliverList(
|
|
|
|
- delegate: SliverChildBuilderDelegate(
|
|
|
|
- (context, index) {
|
|
|
|
- return _buildStaffItem(controller.datas[index], () {
|
|
|
|
- /// Item选中与未选中设置
|
|
|
|
- controller.datas[index].isSelected = !controller.datas[index].isSelected;
|
|
|
|
- controller.update();
|
|
|
|
|
|
+ height: 100,
|
|
|
|
+ // color: Colors.red,
|
|
|
|
+ padding: const EdgeInsets.only(left: 10, right: 10),
|
|
|
|
+ child: _buildSearchSection(controller),
|
|
|
|
+ ),
|
|
|
|
+
|
|
|
|
+ Expanded(
|
|
|
|
+ child: Container(
|
|
|
|
+ color: Colors.white,
|
|
|
|
+ child: EasyRefresh(
|
|
|
|
+ header: ClassicHeader(
|
|
|
|
+ dragText: 'Pull to refresh'.tr,
|
|
|
|
+ armedText: 'Release ready'.tr,
|
|
|
|
+ readyText: 'Refreshing...'.tr,
|
|
|
|
+ processingText: 'Refreshing...'.tr,
|
|
|
|
+ processedText: 'Succeeded'.tr,
|
|
|
|
+ noMoreText: 'No more'.tr,
|
|
|
|
+ failedText: 'Failed'.tr,
|
|
|
|
+ messageText: 'Last updated at %T'.tr,
|
|
|
|
+ textStyle: const TextStyle(color: ColorConstants.black66, fontSize: 14),
|
|
|
|
+ messageStyle: const TextStyle(color: ColorConstants.black66, fontSize: 12),
|
|
|
|
+ iconTheme: const IconThemeData(color: ColorConstants.black66),
|
|
|
|
+ backgroundColor: Colors.transparent,
|
|
|
|
+ ),
|
|
|
|
+ footer: ClassicFooter(
|
|
|
|
+ dragText: 'Pull to load'.tr,
|
|
|
|
+ armedText: 'Release ready'.tr,
|
|
|
|
+ readyText: 'Loading...'.tr,
|
|
|
|
+ processingText: 'Loading...'.tr,
|
|
|
|
+ processedText: 'Succeeded'.tr,
|
|
|
|
+ noMoreText: 'No more'.tr,
|
|
|
|
+ failedText: 'Failed'.tr,
|
|
|
|
+ showMessage: false,
|
|
|
|
+ triggerOffset: 50,
|
|
|
|
+ iconDimension: 22,
|
|
|
|
+ textStyle: const TextStyle(color: ColorConstants.black66, fontSize: 14),
|
|
|
|
+ messageStyle: const TextStyle(color: ColorConstants.black66, fontSize: 12),
|
|
|
|
+ iconTheme: const IconThemeData(color: ColorConstants.black66),
|
|
|
|
+ backgroundColor: Colors.transparent,
|
|
|
|
+ ),
|
|
|
|
+ controller: controller.refreshController,
|
|
|
|
+ onRefresh: controller.onRefresh,
|
|
|
|
+ onLoad: controller.loadMore,
|
|
|
|
+ child: LoadStateLayout(
|
|
|
|
+ themeColor: ColorConstants.black66,
|
|
|
|
+ state: controller.loadingState,
|
|
|
|
+ errorMessage: controller.errorMessage,
|
|
|
|
+ errorRetry: () {
|
|
|
|
+ controller.retryRequest();
|
|
|
|
+ },
|
|
|
|
+ successSliverWidget: [
|
|
|
|
+ SliverList(
|
|
|
|
+ delegate: SliverChildBuilderDelegate(
|
|
|
|
+ (context, index) {
|
|
|
|
+ return _buildStaffItem(controller, controller.datas[index], () {
|
|
|
|
+ /// Item选中与未选中设置
|
|
|
|
+ controller.datas[index].isSelected = !controller.datas[index].isSelected;
|
|
|
|
+ controller.update();
|
|
|
|
+ },
|
|
|
|
+ clickFavoriteCallback: () {
|
|
|
|
+ // 调用 打标的 接口
|
|
|
|
+ controller.handlerSetFavourite(controller.datas[index]);
|
|
|
|
+ }
|
|
|
|
+ );
|
|
},
|
|
},
|
|
- clickFavoriteCallback: () {
|
|
|
|
- // 调用 打标的 接口
|
|
|
|
- controller.handlerSetFavourite(controller.datas[index]);
|
|
|
|
- }
|
|
|
|
- );
|
|
|
|
- },
|
|
|
|
- childCount: controller.datas.length,
|
|
|
|
- ))
|
|
|
|
- ],
|
|
|
|
|
|
+ childCount: controller.datas.length,
|
|
|
|
+ ))
|
|
|
|
+ ],
|
|
|
|
+ ),
|
|
),
|
|
),
|
|
),
|
|
),
|
|
- ).expanded(),
|
|
|
|
|
|
+ ),
|
|
|
|
|
|
//按钮组
|
|
//按钮组
|
|
Row(
|
|
Row(
|
|
@@ -229,7 +223,171 @@ class _PreselectedAddStaffState extends State<PreselectedAddStaff> {
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
- Widget _buildStaffItem(UkLabourRequestPreselectAddstaffListRows item, VoidCallback callback, { VoidCallback? clickFavoriteCallback }) {
|
|
|
|
|
|
+ Widget _buildSearchSection(PreselectedAddStaffController controller,){
|
|
|
|
+ return Column(
|
|
|
|
+ mainAxisSize: MainAxisSize.min,
|
|
|
|
+ crossAxisAlignment: CrossAxisAlignment.start,
|
|
|
|
+ mainAxisAlignment: MainAxisAlignment.start,
|
|
|
|
+ children: [
|
|
|
|
+ Row(
|
|
|
|
+ children: [
|
|
|
|
+ // 行业
|
|
|
|
+ Expanded(child: _buildIndustrySelectWidget(controller)),
|
|
|
|
+ SizedBox(width: 10),
|
|
|
|
+ // 工作标题
|
|
|
|
+ Expanded(child: _buildJobTitleSelectWidget(controller)),
|
|
|
|
+ ],
|
|
|
|
+ ),
|
|
|
|
+ Row(
|
|
|
|
+ children: [
|
|
|
|
+ Expanded(
|
|
|
|
+ child: SearchAppBar(
|
|
|
|
+ value: controller.keyword,
|
|
|
|
+ searchBarHeight: 38,
|
|
|
|
+ searchBarBgColor: Colors.white,
|
|
|
|
+ searchBarBorderRadius: 15,
|
|
|
|
+ searchBarBorder: Border.all(
|
|
|
|
+ color: Color(0XFFC3C3C3), // 设置边框颜色为灰色
|
|
|
|
+ width: 0.5, // 设置边框宽度
|
|
|
|
+ ),
|
|
|
|
+ textHintColor: Color(0XFFAFB3B7),
|
|
|
|
+ textColor: ColorConstants.black33,
|
|
|
|
+ onSearch: (keyword) {
|
|
|
|
+ controller.searchInputSearch(keyword);
|
|
|
|
+ },
|
|
|
|
+ hintText: "Staff Name/ID/Phone".tr,
|
|
|
|
+ controller: controller.searchController,
|
|
|
|
+ ),
|
|
|
|
+ ),
|
|
|
|
+ Row(
|
|
|
|
+ mainAxisAlignment: MainAxisAlignment.end,
|
|
|
|
+ crossAxisAlignment: CrossAxisAlignment.center,
|
|
|
|
+ children: [
|
|
|
|
+ // MyButton(
|
|
|
|
+ // onPressed: () {
|
|
|
|
+ // FocusScope.of(context).unfocus();
|
|
|
|
+ // controller.doSearch();
|
|
|
|
+ // },
|
|
|
|
+ // text: "Filter".tr,
|
|
|
|
+ // textColor: ColorConstants.white,
|
|
|
|
+ // backgroundColor: hexToColor("#2BA9F9", opacity: 0.5),
|
|
|
|
+ // radius: 20,
|
|
|
|
+ // minWidth: 60,
|
|
|
|
+ // minHeight: 35,
|
|
|
|
+ // ),
|
|
|
|
+ MyButton(
|
|
|
|
+ onPressed: () {
|
|
|
|
+ FocusScope.of(context).unfocus();
|
|
|
|
+ controller.resetSearch();
|
|
|
|
+ },
|
|
|
|
+ text: "Reset".tr,
|
|
|
|
+ textColor: ColorConstants.white,
|
|
|
|
+ backgroundColor: hexToColor("#2BA9F9", opacity: 0.5),
|
|
|
|
+ radius: 20,
|
|
|
|
+ minWidth: 60,
|
|
|
|
+ minHeight: 35,
|
|
|
|
+ ),
|
|
|
|
+ ],
|
|
|
|
+ ),
|
|
|
|
+ ],
|
|
|
|
+ ),
|
|
|
|
+ ],
|
|
|
|
+ );
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 行业选择
|
|
|
|
+ Widget _buildIndustrySelectWidget(PreselectedAddStaffController controller) {
|
|
|
|
+ return Container(
|
|
|
|
+ child: Row(
|
|
|
|
+ mainAxisSize: MainAxisSize.max,
|
|
|
|
+ mainAxisAlignment: MainAxisAlignment.start,
|
|
|
|
+ crossAxisAlignment: CrossAxisAlignment.center,
|
|
|
|
+ children: [
|
|
|
|
+ // 行业
|
|
|
|
+ // FormRequireText(text: "Industry".tr, isRequired: false,).marginOnly(right: 38),
|
|
|
|
+ //选择行业
|
|
|
|
+ Expanded(
|
|
|
|
+ child: Container(
|
|
|
|
+ padding: const EdgeInsets.only(left: 5, right: 5),
|
|
|
|
+ margin: const EdgeInsets.only(top: 5),
|
|
|
|
+ height: 40,
|
|
|
|
+ decoration: BoxDecoration(
|
|
|
|
+ color: Color(0xFF4DCFF6).withOpacity(0.2),
|
|
|
|
+ // border: Border.all(color: Colors.black12.withOpacity(0.05)),
|
|
|
|
+ borderRadius: const BorderRadius.all(Radius.circular(5)),
|
|
|
|
+ ),
|
|
|
|
+ child: Row(
|
|
|
|
+ mainAxisSize: MainAxisSize.max,
|
|
|
|
+ crossAxisAlignment: CrossAxisAlignment.center,
|
|
|
|
+ mainAxisAlignment: MainAxisAlignment.start,
|
|
|
|
+ children: [
|
|
|
|
+ MyTextView(
|
|
|
|
+ controller.selectedJobIndustryStr ==null || Utils.isEmpty(controller.selectedJobIndustryStr)? '': controller.selectedJobIndustryStr! ,
|
|
|
|
+ hint: "Choose Industry".tr,
|
|
|
|
+ textHintColor: ColorConstants.textGrayAECAE5,
|
|
|
|
+ fontSize: 12,
|
|
|
|
+ isFontMedium: true,
|
|
|
|
+ textColor: ColorConstants.black33,
|
|
|
|
+ ).expanded(),
|
|
|
|
+ const MyAssetImage(Assets.baseServiceTriangleDropDownIcon, width: 11.5, height: 6.28),
|
|
|
|
+ ],
|
|
|
|
+ ),
|
|
|
|
+ ).onTap(() {
|
|
|
|
+ controller.showChooseIndustryPicker();
|
|
|
|
+ }),
|
|
|
|
+ )
|
|
|
|
+ ],
|
|
|
|
+ ),
|
|
|
|
+ );
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 工作标题选择
|
|
|
|
+ Widget _buildJobTitleSelectWidget(PreselectedAddStaffController controller) {
|
|
|
|
+ return Container(
|
|
|
|
+ child: Row(
|
|
|
|
+ mainAxisAlignment: MainAxisAlignment.start,
|
|
|
|
+ crossAxisAlignment: CrossAxisAlignment.center,
|
|
|
|
+ children: [
|
|
|
|
+ // 工作标题
|
|
|
|
+ // FormRequireText(text: "Job Title".tr, isRequired:false).marginOnly(top: 15),
|
|
|
|
+ //选择template
|
|
|
|
+ Expanded(
|
|
|
|
+ child: Container(
|
|
|
|
+ padding: const EdgeInsets.only(left: 5, right: 5),
|
|
|
|
+ margin: const EdgeInsets.only(top: 5),
|
|
|
|
+ height: 40,
|
|
|
|
+ decoration: BoxDecoration(
|
|
|
|
+ color: Color(0xFF4DCFF6).withOpacity(0.2),
|
|
|
|
+ // border: Border.all(color: Colors.black12.withOpacity(0.05)),
|
|
|
|
+ borderRadius: const BorderRadius.all(Radius.circular(5)),
|
|
|
|
+ ),
|
|
|
|
+ child: Row(
|
|
|
|
+ mainAxisSize: MainAxisSize.max,
|
|
|
|
+ crossAxisAlignment: CrossAxisAlignment.center,
|
|
|
|
+ mainAxisAlignment: MainAxisAlignment.start,
|
|
|
|
+ children: [
|
|
|
|
+ MyTextView(
|
|
|
|
+ controller.selectedJobTitleStr ==null || Utils.isEmpty(controller.selectedJobTitleStr)? '': controller.selectedJobTitleStr! ,
|
|
|
|
+ hint: "Choose JobTitle".tr,
|
|
|
|
+ textHintColor: ColorConstants.textGrayAECAE5,
|
|
|
|
+ fontSize: 12,
|
|
|
|
+ isFontMedium: true,
|
|
|
|
+ textColor: ColorConstants.black33,
|
|
|
|
+ ).expanded(),
|
|
|
|
+ const MyAssetImage(Assets.baseServiceTriangleDropDownIcon, width: 11.5, height: 6.28),
|
|
|
|
+ ],
|
|
|
|
+ ),
|
|
|
|
+ ).onTap(() {
|
|
|
|
+ controller.showChooseJobTitlePicker();
|
|
|
|
+ }),
|
|
|
|
+ )
|
|
|
|
+ ],
|
|
|
|
+ ),
|
|
|
|
+ );
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ Widget _buildStaffItem(PreselectedAddStaffController controller, UkLabourRequestPreselectAddstaffListRows item, VoidCallback callback, { VoidCallback? clickFavoriteCallback }) {
|
|
return Stack(
|
|
return Stack(
|
|
children: [
|
|
children: [
|
|
Column(
|
|
Column(
|
|
@@ -271,66 +429,143 @@ class _PreselectedAddStaffState extends State<PreselectedAddStaff> {
|
|
],
|
|
],
|
|
).marginOnly(top: 5),
|
|
).marginOnly(top: 5),
|
|
|
|
|
|
- //性别
|
|
|
|
|
|
+ // //性别
|
|
|
|
+ // Row(
|
|
|
|
+ // children: [
|
|
|
|
+ // MyTextView(
|
|
|
|
+ // "Gender:".tr,
|
|
|
|
+ // marginRight: 3,
|
|
|
|
+ // textColor: ColorConstants.black66,
|
|
|
|
+ // fontSize: 13,
|
|
|
|
+ // isFontRegular: true,
|
|
|
|
+ // ),
|
|
|
|
+ // MyTextView(
|
|
|
|
+ // item.gender ?? "-",
|
|
|
|
+ // textColor: ColorConstants.black66,
|
|
|
|
+ // fontSize: 13,
|
|
|
|
+ // isFontRegular: true,
|
|
|
|
+ // ),
|
|
|
|
+ // ],
|
|
|
|
+ // ).marginOnly(top: 5),
|
|
|
|
+ //
|
|
|
|
+ // //身份证
|
|
|
|
+ // Row(
|
|
|
|
+ // children: [
|
|
|
|
+ // MyTextView(
|
|
|
|
+ // "ID Card No.:".tr,
|
|
|
|
+ // marginRight: 3,
|
|
|
|
+ // textColor: ColorConstants.black66,
|
|
|
|
+ // fontSize: 13,
|
|
|
|
+ // isFontRegular: true,
|
|
|
|
+ // ),
|
|
|
|
+ // MyTextView(
|
|
|
|
+ // item.nric ?? "-",
|
|
|
|
+ // textColor: ColorConstants.black66,
|
|
|
|
+ // fontSize: 13,
|
|
|
|
+ // isFontRegular: true,
|
|
|
|
+ // ),
|
|
|
|
+ // ],
|
|
|
|
+ // ).marginOnly(top: 5),
|
|
|
|
+ //
|
|
|
|
+ // //status
|
|
|
|
+ // Row(
|
|
|
|
+ // mainAxisAlignment: MainAxisAlignment.start,
|
|
|
|
+ // crossAxisAlignment: CrossAxisAlignment.center,
|
|
|
|
+ // children: [
|
|
|
|
+ // MyTextView(
|
|
|
|
+ // "Status:".tr,
|
|
|
|
+ // isFontRegular: true,
|
|
|
|
+ // textColor: ColorConstants.black66,
|
|
|
|
+ // fontSize: 14,
|
|
|
|
+ // ),
|
|
|
|
+ //
|
|
|
|
+ // MyTextView(
|
|
|
|
+ // _getStatusText(item.status),
|
|
|
|
+ // marginLeft: 5,
|
|
|
|
+ // isFontRegular: true,
|
|
|
|
+ // textColor: ColorConstants.black66,
|
|
|
|
+ // fontSize: 14,
|
|
|
|
+ // ),
|
|
|
|
+ // ]
|
|
|
|
+ // ).marginOnly(top: 5),
|
|
|
|
+
|
|
Row(
|
|
Row(
|
|
children: [
|
|
children: [
|
|
MyTextView(
|
|
MyTextView(
|
|
- "Gender:".tr,
|
|
|
|
|
|
+ "Turn-Up Rate".tr + ":",
|
|
marginRight: 3,
|
|
marginRight: 3,
|
|
textColor: ColorConstants.black66,
|
|
textColor: ColorConstants.black66,
|
|
fontSize: 13,
|
|
fontSize: 13,
|
|
isFontRegular: true,
|
|
isFontRegular: true,
|
|
),
|
|
),
|
|
MyTextView(
|
|
MyTextView(
|
|
- item.gender ?? "-",
|
|
|
|
|
|
+ item.turnUpRate ?? "-",
|
|
textColor: ColorConstants.black66,
|
|
textColor: ColorConstants.black66,
|
|
fontSize: 13,
|
|
fontSize: 13,
|
|
isFontRegular: true,
|
|
isFontRegular: true,
|
|
),
|
|
),
|
|
],
|
|
],
|
|
).marginOnly(top: 5),
|
|
).marginOnly(top: 5),
|
|
-
|
|
|
|
- //身份证
|
|
|
|
Row(
|
|
Row(
|
|
children: [
|
|
children: [
|
|
MyTextView(
|
|
MyTextView(
|
|
- "ID Card No.:".tr,
|
|
|
|
|
|
+ "Reviews".tr + ":",
|
|
marginRight: 3,
|
|
marginRight: 3,
|
|
textColor: ColorConstants.black66,
|
|
textColor: ColorConstants.black66,
|
|
fontSize: 13,
|
|
fontSize: 13,
|
|
isFontRegular: true,
|
|
isFontRegular: true,
|
|
),
|
|
),
|
|
MyTextView(
|
|
MyTextView(
|
|
- item.nric ?? "-",
|
|
|
|
|
|
+ item.reviewsAvg ?? "-",
|
|
textColor: ColorConstants.black66,
|
|
textColor: ColorConstants.black66,
|
|
fontSize: 13,
|
|
fontSize: 13,
|
|
isFontRegular: true,
|
|
isFontRegular: true,
|
|
),
|
|
),
|
|
],
|
|
],
|
|
).marginOnly(top: 5),
|
|
).marginOnly(top: 5),
|
|
-
|
|
|
|
- //status
|
|
|
|
Row(
|
|
Row(
|
|
- mainAxisAlignment: MainAxisAlignment.start,
|
|
|
|
- crossAxisAlignment: CrossAxisAlignment.center,
|
|
|
|
- children: [
|
|
|
|
- MyTextView(
|
|
|
|
- "Status:".tr,
|
|
|
|
- isFontRegular: true,
|
|
|
|
- textColor: ColorConstants.black66,
|
|
|
|
- fontSize: 14,
|
|
|
|
- ),
|
|
|
|
|
|
+ children: [
|
|
|
|
+ MyTextView(
|
|
|
|
+ "Skills".tr + ":",
|
|
|
|
+ marginRight: 3,
|
|
|
|
+ textColor: ColorConstants.black66,
|
|
|
|
+ fontSize: 13,
|
|
|
|
+ isFontRegular: true,
|
|
|
|
+ ),
|
|
|
|
+ MyTextView(
|
|
|
|
+ item.skills ?? "-",
|
|
|
|
+ textColor: ColorConstants.black66,
|
|
|
|
+ fontSize: 13,
|
|
|
|
+ isFontRegular: true,
|
|
|
|
+ ).expanded(),
|
|
|
|
+ ],
|
|
|
|
+ ).marginOnly(top: 5),
|
|
|
|
|
|
- MyTextView(
|
|
|
|
- _getStatusText(item.status),
|
|
|
|
- marginLeft: 5,
|
|
|
|
- isFontRegular: true,
|
|
|
|
- textColor: ColorConstants.black66,
|
|
|
|
- fontSize: 14,
|
|
|
|
- ),
|
|
|
|
- ]
|
|
|
|
|
|
+ Row(
|
|
|
|
+ children: [
|
|
|
|
+ MyTextView(
|
|
|
|
+ "CV".tr + ":",
|
|
|
|
+ marginRight: 3,
|
|
|
|
+ textColor: ColorConstants.black66,
|
|
|
|
+ fontSize: 13,
|
|
|
|
+ isFontRegular: true,
|
|
|
|
+ ),
|
|
|
|
+ MyTextView(
|
|
|
|
+ item.resume ?? "-",
|
|
|
|
+ textColor: ColorConstants.black66,
|
|
|
|
+ fontSize: 13,
|
|
|
|
+ isFontRegular: true,
|
|
|
|
+ onClick: (){
|
|
|
|
+ // 点击查看 打开webview 页面
|
|
|
|
+ if(item.resume?.isNotEmpty == true && Utils.isNetworkUrl(item.resume!)){
|
|
|
|
+ controller.handlerScanFile(item.resume!);
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ ).expanded(),
|
|
|
|
+ ],
|
|
).marginOnly(top: 5),
|
|
).marginOnly(top: 5),
|
|
|
|
|
|
|
|
+
|
|
Container(
|
|
Container(
|
|
margin: EdgeInsets.only(top: 19),
|
|
margin: EdgeInsets.only(top: 19),
|
|
width: double.infinity,
|
|
width: double.infinity,
|