Browse Source

fate : 问题上传页面 problem_upload_page

dev
徐振升 2 weeks ago
parent
commit
17a1791d92
  1. 13
      lib/app/routes/app_pages.dart
  2. 1
      lib/app/routes/app_routes.dart
  3. 1
      lib/modules/home/bindings/home_binding.dart
  4. 2
      lib/modules/problem/bindings/problem_binding.dart
  5. 2
      lib/modules/problem/controllers/problem_controller.dart
  6. 2
      lib/modules/problem/controllers/problem_upload_controller.dart
  7. 224
      lib/modules/problem/views/problem_page.dart
  8. 7
      lib/modules/problem/views/problem_upload_page.dart

13
lib/app/routes/app_pages.dart

@ -5,6 +5,8 @@ import 'package:problem_check_system/modules/auth/bindings/auth_binding.dart';
import 'package:problem_check_system/modules/auth/views/login_page.dart'; import 'package:problem_check_system/modules/auth/views/login_page.dart';
import 'package:problem_check_system/modules/my/bingdings/change_password_binding.dart'; import 'package:problem_check_system/modules/my/bingdings/change_password_binding.dart';
import 'package:problem_check_system/modules/my/views/change_password.dart'; import 'package:problem_check_system/modules/my/views/change_password.dart';
import 'package:problem_check_system/modules/problem/bindings/problem_binding.dart';
import 'package:problem_check_system/modules/problem/views/problem_upload_page.dart';
import 'app_routes.dart'; import 'app_routes.dart';
@ -27,11 +29,10 @@ abstract class AppPages {
page: () => const ChangePasswordPage(), page: () => const ChangePasswordPage(),
binding: ChangePasswordBinding(), binding: ChangePasswordBinding(),
), ),
// // Problem GetPage(
// GetPage( name: AppRoutes.problemUpload,
// name: AppRoutes.problem, // app_routes.dart page: () => const ProblemUploadPage(),
// page: () => const ProblemPage(), binding: ProblemBinding(),
// binding: null, ),
// ),
]; ];
} }

1
lib/app/routes/app_routes.dart

@ -5,4 +5,5 @@ abstract class AppRoutes {
static const problem = '/problem'; static const problem = '/problem';
static const my = '/my'; static const my = '/my';
static const changePassword = '/changePassword'; static const changePassword = '/changePassword';
static const problemUpload = '/problemUpload';
} }

1
lib/modules/home/bindings/home_binding.dart

@ -24,6 +24,7 @@ class HomeBinding implements Bindings {
dio: dio, dio: dio,
connectivityProvider: connectivityProvider, connectivityProvider: connectivityProvider,
), ),
fenix: true,
); );
Get.lazyPut<MyController>(() => MyController()); Get.lazyPut<MyController>(() => MyController());
Get.lazyPut<AuthProvider>(() => AuthProvider(dio: dio)); Get.lazyPut<AuthProvider>(() => AuthProvider(dio: dio));

2
lib/modules/problem/bindings/problem_binding.dart

@ -3,6 +3,7 @@ import 'package:dio/dio.dart';
import 'package:problem_check_system/data/providers/connectivity_provider.dart'; import 'package:problem_check_system/data/providers/connectivity_provider.dart';
import 'package:problem_check_system/modules/problem/controllers/problem_controller.dart'; import 'package:problem_check_system/modules/problem/controllers/problem_controller.dart';
import 'package:problem_check_system/data/providers/local_database.dart'; import 'package:problem_check_system/data/providers/local_database.dart';
import 'package:problem_check_system/modules/problem/controllers/problem_upload_controller.dart';
class ProblemBinding implements Bindings { class ProblemBinding implements Bindings {
@override @override
@ -17,5 +18,6 @@ class ProblemBinding implements Bindings {
connectivityProvider: Get.find<ConnectivityProvider>(), connectivityProvider: Get.find<ConnectivityProvider>(),
), ),
); );
Get.lazyPut<ProblemUploadController>(() => ProblemUploadController());
} }
} }

2
lib/modules/problem/controllers/problem_controller.dart

@ -49,7 +49,7 @@ class ProblemController extends GetxController
final double _edgePaddingX = 27.0.w; // final double _edgePaddingX = 27.0.w; //
final double _edgePaddingY = 111.0.h; // final double _edgePaddingY = 111.0.h; //
// 使 Rx<Offset> // 使 Rx<Offset>
final fabUploadPosition = Offset(301.w, 660.h).obs; final fabUploadPosition = Offset(337.0, 703.7).obs;
void updateFabUploadPosition(Offset delta) { void updateFabUploadPosition(Offset delta) {
final screenWidth = ScreenUtil().screenWidth; final screenWidth = ScreenUtil().screenWidth;

2
lib/modules/problem/controllers/problem_upload_controller.dart

@ -4,6 +4,8 @@ import 'package:problem_check_system/data/models/problem_model.dart';
// import 'package:problem_check_system/services/problem_service.dart'; // import 'package:problem_check_system/services/problem_service.dart';
class ProblemUploadController extends GetxController { class ProblemUploadController extends GetxController {
ProblemUploadController();
// //
final RxList<Problem> problems = <Problem>[].obs; final RxList<Problem> problems = <Problem>[].obs;

224
lib/modules/problem/views/problem_page.dart

@ -1,6 +1,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:problem_check_system/app/routes/app_routes.dart';
import 'package:problem_check_system/modules/problem/controllers/problem_controller.dart'; import 'package:problem_check_system/modules/problem/controllers/problem_controller.dart';
import 'package:problem_check_system/modules/problem/views/problem_list_page.dart'; // ProblemListPage import 'package:problem_check_system/modules/problem/views/problem_list_page.dart'; // ProblemListPage
import 'package:problem_check_system/modules/problem/views/problem_form_page.dart'; import 'package:problem_check_system/modules/problem/views/problem_form_page.dart';
@ -35,7 +36,7 @@ class ProblemPage extends GetView<ProblemController> {
controller: controller.tabController, controller: controller.tabController,
indicatorSize: TabBarIndicatorSize.tab, indicatorSize: TabBarIndicatorSize.tab,
indicator: const BoxDecoration( indicator: const BoxDecoration(
color: Color(0xfffff7f7), color: Color(0xfff7f7f7),
borderRadius: BorderRadius.only( borderRadius: BorderRadius.only(
topLeft: Radius.circular(8), topLeft: Radius.circular(8),
topRight: Radius.circular(60), topRight: Radius.circular(60),
@ -56,7 +57,7 @@ class ProblemPage extends GetView<ProblemController> {
fontSize: 14.sp, fontSize: 14.sp,
), ),
labelColor: Colors.black, labelColor: Colors.black,
unselectedLabelColor: Colors.white, unselectedLabelColor: Color(0xfff7f7f7),
), ),
), ),
Expanded( Expanded(
@ -64,152 +65,113 @@ class ProblemPage extends GetView<ProblemController> {
controller: controller.tabController, controller: controller.tabController,
children: [ children: [
// Tab // Tab
Column( DecoratedBox(
children: [ decoration: BoxDecoration(color: Color(0xfff7f7f7)),
Container( child: Column(
padding: EdgeInsets.symmetric(horizontal: 17.w), children: [
child: Row( Container(
children: [ padding: EdgeInsets.symmetric(horizontal: 17.w),
CustomDateRangeDropdown( child: Row(
selectedRange: controller.selectedDateRange, children: [
onChanged: (rangeValue) { CustomDateRangeDropdown(
controller.updateFiltersAndLoadProblems( selectedRange: controller.selectedDateRange,
newDateRange: rangeValue, onChanged: (rangeValue) {
); controller.updateFiltersAndLoadProblems(
}, newDateRange: rangeValue,
), );
},
),
CustomStringDropdown( CustomStringDropdown(
selectedValue: controller.selectedUploadStatus, selectedValue: controller.selectedUploadStatus,
items: const ['全部', '未上传', '已上传'], items: const ['全部', '未上传', '已上传'],
onChanged: (uploadValue) { onChanged: (uploadValue) {
controller.updateFiltersAndLoadProblems( controller.updateFiltersAndLoadProblems(
newUploadStatus: uploadValue, newUploadStatus: uploadValue,
); );
}, },
), ),
CustomStringDropdown( CustomStringDropdown(
selectedValue: controller.selectedBindingStatus, selectedValue: controller.selectedBindingStatus,
items: const ['全部', '未绑定', '已绑定'], items: const ['全部', '未绑定', '已绑定'],
onChanged: (bindingValue) { onChanged: (bindingValue) {
controller.updateFiltersAndLoadProblems( controller.updateFiltersAndLoadProblems(
newBindingStatus: bindingValue, newBindingStatus: bindingValue,
); );
}, },
), ),
], ],
),
), ),
),
Expanded( Expanded(
child: // 使 child: // 使
ProblemListPage( ProblemListPage(
problemsToShow: controller.problems, problemsToShow: controller.problems,
viewType: ProblemCardViewType.buttons, viewType: ProblemCardViewType.buttons,
),
), ),
), ],
], ),
), ),
// Tab // Tab
Column( DecoratedBox(
children: [ decoration: BoxDecoration(color: Color(0xfff7f7f7)),
Container( child: Column(
padding: EdgeInsets.symmetric(horizontal: 17.w), children: [
child: Row( Container(
children: [ padding: EdgeInsets.symmetric(horizontal: 17.w),
CustomDateRangeDropdown( child: Row(
selectedRange: controller.selectedDateRange, children: [
onChanged: (rangeValue) { CustomDateRangeDropdown(
controller.updateFiltersAndLoadProblems( selectedRange: controller.selectedDateRange,
newDateRange: rangeValue, onChanged: (rangeValue) {
); controller.updateFiltersAndLoadProblems(
}, newDateRange: rangeValue,
), );
},
),
CustomStringDropdown( CustomStringDropdown(
selectedValue: controller.selectedUploadStatus, selectedValue: controller.selectedUploadStatus,
items: const ['全部', '未上传', '已上传'], items: const ['全部', '未上传', '已上传'],
onChanged: (uploadValue) { onChanged: (uploadValue) {
controller.updateFiltersAndLoadProblems( controller.updateFiltersAndLoadProblems(
newUploadStatus: uploadValue, newUploadStatus: uploadValue,
); );
}, },
), ),
CustomStringDropdown( CustomStringDropdown(
selectedValue: controller.selectedBindingStatus, selectedValue: controller.selectedBindingStatus,
items: const ['全部', '未绑定', '已绑定'], items: const ['全部', '未绑定', '已绑定'],
onChanged: (bindingValue) { onChanged: (bindingValue) {
controller.updateFiltersAndLoadProblems( controller.updateFiltersAndLoadProblems(
newBindingStatus: bindingValue, newBindingStatus: bindingValue,
); );
}, },
), ),
], ],
),
), ),
),
Expanded( Expanded(
child: // 使 child: // 使
ProblemListPage( ProblemListPage(
problemsToShow: controller.problems, problemsToShow: controller.problems,
viewType: ProblemCardViewType.buttons, viewType: ProblemCardViewType.buttons,
),
), ),
), ],
], ),
), ),
], ],
), ),
), ),
], ],
), ),
// floatingActionButtonLocation: FloatingActionButtonLocation.centerFloat,
// floatingActionButton: Stack(
// children: [
// Align(
// alignment: Alignment.bottomCenter,
// child: FloatingActionButton(
// heroTag: "btn_add",
// onPressed: () {
// Get.to(() => ProblemFormPage());
// },
// shape: const CircleBorder(),
// backgroundColor: Colors.blue[300],
// foregroundColor: Colors.white,
// child: const Icon(Icons.add),
// ),
// ),
// Positioned(
// right: controller.fabPosition.value.dx, //27.w,
// bottom: controller.fabPosition.value.dy, //56.h,
// child: Obx(() {
// final bool isOnline = controller.isOnline.value;
// return GestureDetector(
// onPanUpdate: (details) {
// //
// controller.updatePosition(details.delta);
// },
// child: FloatingActionButton(
// heroTag: "btn_upload",
// onPressed: isOnline
// ? () => controller.uploadAllUnuploaded()
// : null,
// foregroundColor: Colors.white,
// backgroundColor: isOnline
// ? Colors.red[300]
// : Colors.grey[400],
// child: Icon(
// isOnline
// ? Icons.file_upload_outlined
// : Icons.cloud_off_outlined,
// ),
// ),
// );
// }),
// ),
// ],
// ),
floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked, floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked,
// 使 Stack // 使 Stack
floatingActionButton: Stack( floatingActionButton: Stack(
@ -252,7 +214,7 @@ class ProblemPage extends GetView<ProblemController> {
child: FloatingActionButton( child: FloatingActionButton(
heroTag: "btn_upload", heroTag: "btn_upload",
onPressed: isOnline onPressed: isOnline
? () => controller.uploadAllUnuploaded() ? () => Get.toNamed(AppRoutes.problemUpload)
: null, : null,
foregroundColor: Colors.white, foregroundColor: Colors.white,
backgroundColor: isOnline backgroundColor: isOnline

7
lib/modules/problem/views/problem_upload_page.dart

@ -4,10 +4,9 @@ import 'package:get/get.dart';
import 'package:problem_check_system/modules/problem/controllers/problem_upload_controller.dart'; import 'package:problem_check_system/modules/problem/controllers/problem_upload_controller.dart';
import 'package:problem_check_system/modules/problem/views/widgets/problem_card.dart'; import 'package:problem_check_system/modules/problem/views/widgets/problem_card.dart';
class ProblemUploadPage extends StatelessWidget { // todo 使problem_list_page,problem_controller
ProblemUploadPage({super.key}); class ProblemUploadPage extends GetView<ProblemUploadController> {
const ProblemUploadPage({super.key});
final ProblemUploadController controller = Get.put(ProblemUploadController());
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {

Loading…
Cancel
Save