diff --git a/lib/modules/meeting/bindings/meeting_connect_binding.dart b/lib/modules/meeting/bindings/meeting_connect_binding.dart new file mode 100644 index 000000000..0120ae056 --- /dev/null +++ b/lib/modules/meeting/bindings/meeting_connect_binding.dart @@ -0,0 +1,10 @@ +import 'package:get/get.dart'; +import '../controllers/meeting_connect_controller.dart'; + +class MeetingConnectBinding extends Bindings { + @override + void dependencies() { + // 注册控制器 + Get.lazyPut(() => MeetingConnectController()); + } +} diff --git a/lib/modules/meeting/controllers/meeting_connect_controller.dart b/lib/modules/meeting/controllers/meeting_connect_controller.dart new file mode 100644 index 000000000..ff2d95a6b --- /dev/null +++ b/lib/modules/meeting/controllers/meeting_connect_controller.dart @@ -0,0 +1,3 @@ +import 'package:get/get.dart'; + +class MeetingConnectController extends GetxController {} diff --git a/lib/modules/meeting/views/meeting_connect_view.dart b/lib/modules/meeting/views/meeting_connect_view.dart new file mode 100644 index 000000000..a864a097a --- /dev/null +++ b/lib/modules/meeting/views/meeting_connect_view.dart @@ -0,0 +1,13 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; + +import '../controllers/meeting_connect_controller.dart'; + +class MeetingConnectView extends GetView { + const MeetingConnectView({super.key}); + + @override + Widget build(BuildContext context) { + return const Placeholder(); + } +} diff --git a/lib/modules/meeting/views/meeting_view.dart b/lib/modules/meeting/views/meeting_view.dart index 7107f8de5..db4fe3ba8 100644 --- a/lib/modules/meeting/views/meeting_view.dart +++ b/lib/modules/meeting/views/meeting_view.dart @@ -23,7 +23,15 @@ class MeetingView extends GetView { appBar: _buildAppBar(context, isDarkMode), body: Stack( children: [ - _buildBody(context, isDarkMode), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + _buildConnect(isDarkMode), + Expanded( + child: _buildBody(context, isDarkMode), + ), + ], + ), _buildMicButton(context, isDarkMode), ], ), @@ -32,6 +40,62 @@ class MeetingView extends GetView { ); } + Widget _buildConnect(bool isDarkMode) { + return GestureDetector( + onTap: () { + Get.toNamed(Routes.meetingConnect); + }, + child: Container( + padding: EdgeInsets.all(5.w), + margin: EdgeInsets.symmetric( + horizontal: 12.w, + vertical: 10.w, + ), + decoration: BoxDecoration( + color: isDarkMode ? Colors.white.withOpacity(0.05) : Colors.white, + borderRadius: BorderRadius.circular(50.w), + boxShadow: [ + BoxShadow( + color: isDarkMode + ? Colors.black.withOpacity(0.2) + : Colors.black.withOpacity(0.05), + blurRadius: 10, + offset: const Offset(0, 2), + ), + ], + ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Container( + width: 32.w, + height: 32.w, + decoration: BoxDecoration( + color: Colors.black, + borderRadius: BorderRadius.circular(50.w), + ), + child: Icon( + Icons.add, + color: Colors.white, + size: 20.sp, + ), + ), + Padding( + padding: EdgeInsets.symmetric(horizontal: 5.w), + child: Text( + '连接', + style: TextStyle( + color: isDarkMode ? Colors.white : Colors.black87, + fontSize: 14.sp, + ), + ), + ) + ], + ), + ), + ); + } + /// 构建底部中间的录音按钮 Widget _buildMicButton(BuildContext context, bool isDarkMode) { return Positioned( diff --git a/lib/routes/app_pages.dart b/lib/routes/app_pages.dart index 1d544a9e7..dd4cff768 100644 --- a/lib/routes/app_pages.dart +++ b/lib/routes/app_pages.dart @@ -6,7 +6,9 @@ import '../modules/home/bindings/home_binding.dart'; import '../modules/explore/views/explore_view.dart'; import '../modules/explore/bindings/explore_binding.dart'; import '../modules/meeting/bindings/meeting_binding.dart'; +import '../modules/meeting/bindings/meeting_connect_binding.dart'; import '../modules/meeting/bindings/meeting_details_binding.dart'; +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'; @@ -157,6 +159,13 @@ abstract class AppPages { transition: Transition.rightToLeft, transitionDuration: Duration(milliseconds: 250), ), + GetPage( + name: Routes.meetingConnect, + page: () => const MeetingConnectView(), + binding: MeetingConnectBinding(), + transition: Transition.rightToLeft, + transitionDuration: Duration(milliseconds: 250), + ), GetPage( name: Routes.meetingRecord, page: () => const MeetingRecordView(), diff --git a/lib/routes/app_routes.dart b/lib/routes/app_routes.dart index 550ab16cc..ddf525e1f 100644 --- a/lib/routes/app_routes.dart +++ b/lib/routes/app_routes.dart @@ -22,6 +22,7 @@ abstract class Routes { // 会议相关 static const meeting = '/meeting'; static const meetingDetails = '/meeting/details'; + static const meetingConnect = '/meeting/connect'; static const meetingRecord = '/meeting/record'; // 语言功能 static const translation = '/translation'; // 实时翻译