|
@@ -8,7 +8,6 @@ import 'package:plugin_basic/base/base_stateful_page.dart';
|
|
import 'package:plugin_basic/base/base_state.dart';
|
|
import 'package:plugin_basic/base/base_state.dart';
|
|
import 'package:plugin_basic/base/mixin_state_lifecycle.dart';
|
|
import 'package:plugin_basic/base/mixin_state_lifecycle.dart';
|
|
import 'package:plugin_basic/utils/ext_get_nav.dart';
|
|
import 'package:plugin_basic/utils/ext_get_nav.dart';
|
|
-import 'package:plugin_platform/engine/toast/toast_engine.dart';
|
|
|
|
import 'package:router/path/router_path.dart';
|
|
import 'package:router/path/router_path.dart';
|
|
import 'package:shared/utils/date_time_utils.dart';
|
|
import 'package:shared/utils/date_time_utils.dart';
|
|
import 'package:shared/utils/log_utils.dart';
|
|
import 'package:shared/utils/log_utils.dart';
|
|
@@ -19,7 +18,6 @@ import 'package:widgets/load_state_layout.dart';
|
|
import 'package:widgets/my_appbar.dart';
|
|
import 'package:widgets/my_appbar.dart';
|
|
import 'package:widgets/my_button.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_field.dart';
|
|
|
|
import 'package:widgets/my_text_view.dart';
|
|
import 'package:widgets/my_text_view.dart';
|
|
import 'package:widgets/widget_export.dart';
|
|
import 'package:widgets/widget_export.dart';
|
|
import 'sign_in_sign_out_controller.dart';
|
|
import 'sign_in_sign_out_controller.dart';
|
|
@@ -90,79 +88,73 @@ class _SignInSignOutPageState extends BaseState<SignInSignOutPage, SignInSignOut
|
|
|
|
|
|
return autoCtlGetBuilder(
|
|
return autoCtlGetBuilder(
|
|
builder: (controller) {
|
|
builder: (controller) {
|
|
- return Scaffold(
|
|
|
|
- extendBodyBehindAppBar: true,
|
|
|
|
- appBar: MyAppBar.appSearchBar(
|
|
|
|
- context,
|
|
|
|
- value: controller.keyword,
|
|
|
|
- hintText: 'Name/Mobile'.tr,
|
|
|
|
- controller: state.searchController,
|
|
|
|
- onSearch: (keyword) {
|
|
|
|
- controller.doSearch(keyword);
|
|
|
|
- },
|
|
|
|
- actions: [
|
|
|
|
- MyButton(
|
|
|
|
- onPressed: () {
|
|
|
|
- controller.resetFiltering();
|
|
|
|
- },
|
|
|
|
- text: "Reset".tr,
|
|
|
|
- textColor: ColorConstants.white,
|
|
|
|
- backgroundColor: hexToColor("#2BA9F9", opacity: 0.5),
|
|
|
|
- radius: 17.25,
|
|
|
|
- minWidth: 60,
|
|
|
|
- minHeight: 35,
|
|
|
|
- ).marginOnly(right: 15)
|
|
|
|
- ],
|
|
|
|
- ),
|
|
|
|
- body: SafeArea(
|
|
|
|
- bottom: true,
|
|
|
|
- top: false,
|
|
|
|
- child: Container(
|
|
|
|
- width: double.infinity,
|
|
|
|
- height: double.infinity,
|
|
|
|
- padding: EdgeInsets.only(top: kToolbarHeight + ScreenUtil.getStatusBarH(context) + 1),
|
|
|
|
- decoration: const BoxDecoration(
|
|
|
|
- gradient: LinearGradient(
|
|
|
|
- colors: [
|
|
|
|
- Color(0xFF091D44),
|
|
|
|
- Color(0xFF245A8A),
|
|
|
|
- Color(0xFF7F7CEC),
|
|
|
|
|
|
+ return SafeArea(
|
|
|
|
+ bottom: true,
|
|
|
|
+ top: false,
|
|
|
|
+ child: Container(
|
|
|
|
+ width: double.infinity,
|
|
|
|
+ height: double.infinity,
|
|
|
|
+ padding: EdgeInsets.only(top: ScreenUtil.getStatusBarH(context)),
|
|
|
|
+ decoration: const BoxDecoration(
|
|
|
|
+ gradient: LinearGradient(
|
|
|
|
+ colors: [
|
|
|
|
+ Color(0xFF091D44),
|
|
|
|
+ Color(0xFF245A8A),
|
|
|
|
+ Color(0xFF7F7CEC),
|
|
|
|
+ ],
|
|
|
|
+ begin: Alignment.topCenter,
|
|
|
|
+ end: Alignment.bottomCenter,
|
|
|
|
+ ),
|
|
|
|
+ ),
|
|
|
|
+ child: Column(
|
|
|
|
+ children: [
|
|
|
|
+ //顶部的搜索标题布局
|
|
|
|
+ MyAppBar.searchTitleBar(
|
|
|
|
+ context,
|
|
|
|
+ value: controller.keyword,
|
|
|
|
+ hintText: 'Name/Mobile'.tr,
|
|
|
|
+ controller: state.searchController,
|
|
|
|
+ onSearch: (keyword) {
|
|
|
|
+ controller.doSearch(keyword);
|
|
|
|
+ },
|
|
|
|
+ actions: [
|
|
|
|
+ MyButton(
|
|
|
|
+ onPressed: () {
|
|
|
|
+ controller.resetFiltering();
|
|
|
|
+ },
|
|
|
|
+ text: "Reset".tr,
|
|
|
|
+ textColor: ColorConstants.white,
|
|
|
|
+ backgroundColor: hexToColor("#2BA9F9", opacity: 0.5),
|
|
|
|
+ radius: 17.25,
|
|
|
|
+ minWidth: 60,
|
|
|
|
+ minHeight: 35,
|
|
|
|
+ ).marginOnly(right: 15)
|
|
],
|
|
],
|
|
- begin: Alignment.topCenter,
|
|
|
|
- end: Alignment.bottomCenter,
|
|
|
|
),
|
|
),
|
|
- ),
|
|
|
|
- child: Column(
|
|
|
|
- children: [
|
|
|
|
- //顶部的搜索标题布局
|
|
|
|
- // _buildSearchTitleBar(),
|
|
|
|
-
|
|
|
|
- // Container(color: Color(0XFF415B7C), height: 0.5, margin: EdgeInsets.only(top: 12)),
|
|
|
|
|
|
|
|
- _buildFilterDateWidget(),
|
|
|
|
|
|
+ _buildFilterDateWidget(),
|
|
|
|
|
|
- EasyRefresh(
|
|
|
|
- controller: controller.refreshController,
|
|
|
|
- onRefresh: controller.onRefresh,
|
|
|
|
- child: LoadStateLayout(
|
|
|
|
- state: controller.loadingState,
|
|
|
|
- errorMessage: controller.errorMessage,
|
|
|
|
- errorRetry: () {
|
|
|
|
- controller.retryRequest();
|
|
|
|
- },
|
|
|
|
- successSliverWidget: [
|
|
|
|
- SliverList(
|
|
|
|
- delegate: SliverChildBuilderDelegate(
|
|
|
|
- (context, index) {
|
|
|
|
- return _buildAttendanceItem(controller, index, () {});
|
|
|
|
- },
|
|
|
|
- childCount: controller.datas.length,
|
|
|
|
- ))
|
|
|
|
- ],
|
|
|
|
- ),
|
|
|
|
- ).expanded(),
|
|
|
|
- ],
|
|
|
|
- ),
|
|
|
|
|
|
+ EasyRefresh(
|
|
|
|
+ controller: controller.refreshController,
|
|
|
|
+ onRefresh: controller.onRefresh,
|
|
|
|
+ child: LoadStateLayout(
|
|
|
|
+ state: controller.loadingState,
|
|
|
|
+ errorMessage: controller.errorMessage,
|
|
|
|
+ errorRetry: () {
|
|
|
|
+ controller.retryRequest();
|
|
|
|
+ },
|
|
|
|
+ successSliverWidget: [
|
|
|
|
+ SliverList(
|
|
|
|
+ delegate: SliverChildBuilderDelegate(
|
|
|
|
+ (context, index) {
|
|
|
|
+ return _buildAttendanceItem(controller, index, () {});
|
|
|
|
+ },
|
|
|
|
+ childCount: controller.datas.length,
|
|
|
|
+ ))
|
|
|
|
+ ],
|
|
|
|
+ ),
|
|
|
|
+ ).expanded(),
|
|
|
|
+ ],
|
|
),
|
|
),
|
|
),
|
|
),
|
|
);
|
|
);
|