Browse Source

Merge branch 'new_dev' of https://github.com/deepcloud2048/deep_voice into new_dev

newdev_shunjiawei
lxm 1 year ago
parent
commit
cbb09aa96a
  1. 2
      lib/modules/meeting/bindings/meeting_binding.dart
  2. 24
      lib/modules/meeting/controllers/meeting_controller.dart
  3. 2
      lib/modules/meeting/controllers/meeting_home_controller.dart
  4. 61
      lib/modules/meeting/views/bottomSheet/filtrate_drawer.dart
  5. 17
      lib/modules/meeting/views/meeting_home_view.dart
  6. 96
      lib/modules/meeting/views/meeting_view.dart
  7. 4
      lib/routes/app_pages.dart

2
lib/modules/meeting/bindings/meeting_binding.dart

@ -1,4 +1,5 @@
import 'package:get/get.dart';
import '../controllers/meeting_controller.dart';
import '../controllers/meeting_home_controller.dart';
import '../controllers/meeting_mine_controller.dart';
@ -6,6 +7,7 @@ class MeetingBinding extends Bindings {
@override
void dependencies() {
// 注册控制器
Get.lazyPut<MeetingController>(() => MeetingController());
Get.lazyPut<MeetingHomeController>(() => MeetingHomeController());
Get.lazyPut<MeetingMineController>(() => MeetingMineController());
}

24
lib/modules/meeting/controllers/meeting_controller.dart

@ -0,0 +1,24 @@
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import '../views/meeting_home_view.dart';
import '../views/meeting_mine_view.dart';
class MeetingController extends GetxController {
final GlobalKey<ScaffoldState> scaffoldKey = GlobalKey<ScaffoldState>();
late PageController pageController;
final List<Widget> pageList = [
const MeetingHomeView(),
const MeetingMineView(),
];
RxInt pageIndex = 0.obs;
@override
void onInit() {
super.onInit();
pageController = PageController(initialPage: 0);
}
}

2
lib/modules/meeting/controllers/meeting_home_controller.dart

@ -20,8 +20,10 @@ import 'package:share_plus/share_plus.dart';
import '../../../data/services/meeting/meeting_task_service.dart';
import '../../../data/services/meeting/meeting_upload_service.dart';
import '../../../routes/app_routes.dart';
import 'meeting_controller.dart';
class MeetingHomeController extends GetxController {
final meetingController = Get.find<MeetingController>();
final meetingUploadService = Get.find<MeetingUploadService>();
final meetingTaskService = Get.find<MeetingTaskService>();

61
lib/modules/meeting/views/bottomSheet/filtrate_drawer.dart

@ -2,19 +2,19 @@ import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import '../../controllers/meeting_controller.dart';
import '../../controllers/meeting_home_controller.dart';
class FiltrateDrawer extends StatefulWidget {
final GlobalKey<ScaffoldState> scaffoldKey;
const FiltrateDrawer(this.scaffoldKey, {super.key});
const FiltrateDrawer({super.key});
@override
State<FiltrateDrawer> createState() => _FiltrateDrawerState();
}
class _FiltrateDrawerState extends State<FiltrateDrawer> {
final _controller = Get.find<MeetingHomeController>();
final _controller = Get.find<MeetingController>();
final _homeController = Get.find<MeetingHomeController>();
@override
Widget build(BuildContext context) {
@ -41,7 +41,7 @@ class _FiltrateDrawerState extends State<FiltrateDrawer> {
),
Expanded(
child: TextField(
controller: _controller.filtrateController,
controller: _homeController.filtrateController,
style: TextStyle(
color: Colors.black87,
fontSize: 14.sp,
@ -58,21 +58,21 @@ class _FiltrateDrawerState extends State<FiltrateDrawer> {
contentPadding: EdgeInsets.symmetric(vertical: 10.w),
),
onSubmitted: (String value) {
widget.scaffoldKey.currentState?.closeDrawer();
_controller.dataList.value =
_controller.originalDataList.where((i) {
_controller.scaffoldKey.currentState?.closeDrawer();
_homeController.dataList.value =
_homeController.originalDataList.where((i) {
final titleLower = i['title'].trim().toLowerCase();
final queryLower = value.trim().toLowerCase();
bool isType = true;
if (_controller.filtrateType.value.isNotEmpty) {
if (_homeController.filtrateType.value.isNotEmpty) {
isType =
_controller.filtrateType.value == i['type'];
_homeController.filtrateType.value == i['type'];
}
return isType && titleLower.contains(queryLower);
}).toList();
if (_controller.isAsc) {
_controller.dataList.value =
_controller.dataList.reversed.toList();
if (_homeController.isAsc) {
_homeController.dataList.value =
_homeController.dataList.reversed.toList();
}
},
),
@ -87,7 +87,7 @@ class _FiltrateDrawerState extends State<FiltrateDrawer> {
behavior: HitTestBehavior.translucent,
child: Container(
padding: EdgeInsets.symmetric(horizontal: 10.w, vertical: 10.w),
decoration: _controller.filtrateType.value == ''
decoration: _homeController.filtrateType.value == ''
? BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(12.w),
@ -109,7 +109,7 @@ class _FiltrateDrawerState extends State<FiltrateDrawer> {
),
6.horizontalSpace,
Text(
'全部文件(${_controller.originalDataList.length})',
'全部文件(${_homeController.originalDataList.length})',
style: TextStyle(
color: Colors.black87,
fontSize: 14.sp,
@ -148,7 +148,7 @@ class _FiltrateDrawerState extends State<FiltrateDrawer> {
padding:
EdgeInsets.symmetric(horizontal: 10.w, vertical: 10.w),
margin: EdgeInsets.symmetric(vertical: 2.w),
decoration: _controller.filtrateType.value == name
decoration: _homeController.filtrateType.value == name
? BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(12.w),
@ -184,10 +184,10 @@ class _FiltrateDrawerState extends State<FiltrateDrawer> {
),
GestureDetector(
onTap: () {
widget.scaffoldKey.currentState?.closeDrawer();
_controller.isAsc = !_controller.isAsc;
_controller.dataList.value =
_controller.dataList.reversed.toList();
_controller.scaffoldKey.currentState?.closeDrawer();
_homeController.isAsc = !_homeController.isAsc;
_homeController.dataList.value =
_homeController.dataList.reversed.toList();
},
behavior: HitTestBehavior.translucent,
child: Container(
@ -204,7 +204,7 @@ class _FiltrateDrawerState extends State<FiltrateDrawer> {
),
),
Icon(
_controller.isAsc
_homeController.isAsc
? Icons.keyboard_double_arrow_up
: Icons.keyboard_double_arrow_down,
color: Colors.grey,
@ -221,17 +221,20 @@ class _FiltrateDrawerState extends State<FiltrateDrawer> {
}
void _filtrateDataList(String type) {
widget.scaffoldKey.currentState?.closeDrawer();
_controller.filtrateType.value = type;
_controller.filtrateController.text = '';
_controller.scaffoldKey.currentState?.closeDrawer();
_homeController.filtrateType.value = type;
_homeController.filtrateController.text = '';
if (type.isNotEmpty) {
_controller.dataList.value =
_controller.originalDataList.where((i) => i['type'] == type).toList();
_homeController.dataList.value = _homeController.originalDataList
.where((i) => i['type'] == type)
.toList();
} else {
_controller.dataList.value = List.from(_controller.originalDataList);
_homeController.dataList.value =
List.from(_homeController.originalDataList);
}
if (_controller.isAsc) {
_controller.dataList.value = _controller.dataList.reversed.toList();
if (_homeController.isAsc) {
_homeController.dataList.value =
_homeController.dataList.reversed.toList();
}
}
}

17
lib/modules/meeting/views/meeting_home_view.dart

@ -9,7 +9,6 @@ import '../../../routes/app_routes.dart';
import '../controllers/meeting_home_controller.dart';
import '../model/meeting_model.dart';
import 'bottomSheet/edit_title_bottom_sheet.dart';
import 'bottomSheet/filtrate_drawer.dart';
import 'bottomSheet/import_audio_bottom_sheet.dart';
class MeetingHomeView extends GetView<MeetingHomeController> {
@ -17,28 +16,20 @@ class MeetingHomeView extends GetView<MeetingHomeController> {
@override
Widget build(BuildContext context) {
final GlobalKey<ScaffoldState> scaffoldKey = GlobalKey<ScaffoldState>();
final isDarkMode = Theme.of(context).brightness == Brightness.dark;
return PopScope(
onPopInvokedWithResult: controller.onPopInvokedWithResult,
child: Scaffold(
key: scaffoldKey,
backgroundColor: isDarkMode ? Colors.black : Colors.grey[50],
backgroundColor: isDarkMode ? Colors.black : Colors.grey[100],
appBar: _buildAppBar(isDarkMode),
drawer: Drawer(
width: 260.w,
backgroundColor: Colors.grey[50],
child: FiltrateDrawer(scaffoldKey),
),
drawerEnableOpenDragGesture: false,
body: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
_buildFiltrate(scaffoldKey, isDarkMode),
_buildFiltrate(isDarkMode),
_buildConnect(isDarkMode),
],
),
@ -67,10 +58,10 @@ class MeetingHomeView extends GetView<MeetingHomeController> {
);
}
Widget _buildFiltrate(GlobalKey<ScaffoldState> scaffoldKey, bool isDarkMode) {
Widget _buildFiltrate(bool isDarkMode) {
return GestureDetector(
onTap: () {
scaffoldKey.currentState?.openDrawer();
controller.meetingController.scaffoldKey.currentState?.openDrawer();
},
behavior: HitTestBehavior.translucent,
child: Row(

96
lib/modules/meeting/views/meeting_view.dart

@ -0,0 +1,96 @@
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import '../controllers/meeting_controller.dart';
import 'bottomSheet/filtrate_drawer.dart';
class MeetingView extends GetView<MeetingController> {
const MeetingView({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
key: controller.scaffoldKey,
body: PageView(
physics: const NeverScrollableScrollPhysics(),
controller: controller.pageController,
children: controller.pageList,
),
drawer: Drawer(
width: 260.w,
backgroundColor: Colors.grey[50],
child: const FiltrateDrawer(),
),
drawerEnableOpenDragGesture: false,
bottomNavigationBar: Stack(
alignment: Alignment.center,
clipBehavior: Clip.none,
children: [
Obx(
() => BottomNavigationBar(
items: const [
BottomNavigationBarItem(
icon: Icon(Icons.folder_outlined),
activeIcon: Icon(Icons.folder),
label: '文件',
),
BottomNavigationBarItem(
icon: SizedBox(),
activeIcon: SizedBox(),
label: '',
),
BottomNavigationBarItem(
icon: Icon(Icons.person_outline),
activeIcon: Icon(Icons.person),
label: '我的',
),
],
backgroundColor: Colors.white,
currentIndex: controller.pageIndex.value,
unselectedItemColor: Colors.grey,
selectedItemColor: Colors.red,
unselectedFontSize: 10.sp,
selectedFontSize: 10.sp,
onTap: (int index) {
if (index == controller.pageIndex.value) return;
if (index == 0) {
controller.pageIndex.value = 0;
controller.pageController.jumpToPage(0);
} else {
controller.pageIndex.value = 2;
controller.pageController.jumpToPage(1);
}
},
),
),
Positioned(
top: -18.w,
child: Container(
width: 60.w,
height: 60.w,
padding: EdgeInsets.all(5.w),
alignment: Alignment.center,
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(60.w),
),
child: Container(
alignment: Alignment.center,
decoration: BoxDecoration(
color: Colors.red,
borderRadius: BorderRadius.circular(60.w),
),
child: Icon(
Icons.add,
color: Colors.white,
size: 30.w,
),
),
),
),
],
),
);
}
}

4
lib/routes/app_pages.dart

@ -14,7 +14,7 @@ import '../modules/meeting/views/meeting_connect_view.dart';
import '../modules/meeting/views/meeting_details_view.dart';
import '../modules/meeting/bindings/meeting_record_binding.dart';
import '../modules/meeting/views/meeting_record_view.dart';
import '../modules/meeting/views/meeting_home_view.dart';
import '../modules/meeting/views/meeting_view.dart';
import '../modules/opus_test/bindings/opus_test_binding.dart';
import '../modules/opus_test/views/opus_test_view.dart';
import '../modules/profile/views/profile_view.dart';
@ -149,7 +149,7 @@ abstract class AppPages {
),
GetPage(
name: Routes.meeting,
page: () => const MeetingHomeView(),
page: () => const MeetingView(),
binding: MeetingBinding(),
transition: Transition.rightToLeft,
transitionDuration: Duration(milliseconds: 250),

Loading…
Cancel
Save