Browse Source

fix: 在多个视图的Scaffold body中包裹SafeArea防止内容被状态栏遮挡

为多个视图的Scaffold body添加SafeArea包装,设置top: false以避免内容被系统状态栏遮挡,确保UI在不同设备上正确显示
newdev_shunjiawei
lxm 8 months ago
parent
commit
cd94daef52
  1. 1477
      lib/modules/agent/views/agent_view.dart
  2. 5
      lib/modules/eq_settings/views/eq_settings_view.dart
  3. 5
      lib/modules/eq_settings/views/widgets/select_equalizer_widget.dart
  4. 17
      lib/modules/meeting/views/meeting_record_view.dart
  5. 75
      lib/modules/meeting/views/meeting_view.dart
  6. 5
      lib/modules/meeting/views/mine/meeting_member_view.dart
  7. 5
      lib/modules/meeting/views/mine/meeting_transcription_view.dart
  8. 5
      lib/modules/meeting/views/template/template_view.dart
  9. 35
      lib/modules/translation/views/translation_detail_view.dart
  10. 90
      lib/modules/translation/views/translation_history_view.dart
  11. 9
      lib/modules/translation/views/translation_list_view.dart
  12. 120
      lib/modules/translation/views/translation_view.dart

1477
lib/modules/agent/views/agent_view.dart

File diff suppressed because it is too large

5
lib/modules/eq_settings/views/eq_settings_view.dart

@ -14,7 +14,10 @@ class EqSettingsView extends GetView<EqSettingsController> {
return Scaffold( return Scaffold(
backgroundColor: isDarkMode ? Colors.black : Colors.grey[50], backgroundColor: isDarkMode ? Colors.black : Colors.grey[50],
appBar: _buildAppBar(isDarkMode), appBar: _buildAppBar(isDarkMode),
body: _buildBody(isDarkMode), body: SafeArea(
top: false,
child: _buildBody(isDarkMode),
),
); );
} }

5
lib/modules/eq_settings/views/widgets/select_equalizer_widget.dart

@ -41,7 +41,10 @@ class _SelectEqualizerWidgetState extends State<SelectEqualizerWidget> {
return Scaffold( return Scaffold(
backgroundColor: isDarkMode ? Colors.black : Colors.grey[50], backgroundColor: isDarkMode ? Colors.black : Colors.grey[50],
appBar: _buildAppBar(isDarkMode), appBar: _buildAppBar(isDarkMode),
body: _buildBody(isDarkMode), body: SafeArea(
top: false,
child: _buildBody(isDarkMode),
),
); );
} }

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

@ -307,13 +307,16 @@ class MeetingRecordView extends GetView<MeetingRecordController> {
}), }),
], ],
), ),
body: Column( body: SafeArea(
children: [ top: false,
// 简化为单一音频界面,移除不必要的TabBar child: Column(
Expanded( children: [
child: _buildAudioTab(context, isDarkMode), // 简化为单一音频界面,移除不必要的TabBar
), Expanded(
], child: _buildAudioTab(context, isDarkMode),
),
],
),
), ),
), ),
); );

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

@ -35,42 +35,45 @@ class MeetingView extends GetView<MeetingController> {
left: 0, left: 0,
right: 0, right: 0,
child: Obx( child: Obx(
() => BottomNavigationBar( () => SafeArea(
items: [ top: false,
BottomNavigationBarItem( child: BottomNavigationBar(
icon: Icon(Icons.folder_outlined), items: [
activeIcon: Icon(Icons.folder), BottomNavigationBarItem(
label: 'files'.tr, // 对应中文:文件 icon: Icon(Icons.folder_outlined),
), activeIcon: Icon(Icons.folder),
BottomNavigationBarItem( label: 'files'.tr, // 对应中文:文件
icon: SizedBox(), ),
label: '', BottomNavigationBarItem(
), icon: SizedBox(),
BottomNavigationBarItem( label: '',
icon: Icon(Icons.person_outline), ),
activeIcon: Icon(Icons.person), BottomNavigationBarItem(
label: 'mine'.tr, // 对应中文:我的 icon: Icon(Icons.person_outline),
), activeIcon: Icon(Icons.person),
], label: 'mine'.tr, // 对应中文:我的
backgroundColor: ),
isDarkMode ? const Color(0xFF1A1A1A) : Colors.white, ],
currentIndex: controller.pageIndex.value, backgroundColor:
unselectedItemColor: Colors.grey, isDarkMode ? const Color(0xFF1A1A1A) : Colors.white,
selectedItemColor: isDarkMode ? Colors.white : Colors.blue, currentIndex: controller.pageIndex.value,
unselectedFontSize: 10.sp, unselectedItemColor: Colors.grey,
selectedFontSize: 10.sp, selectedItemColor: isDarkMode ? Colors.white : Colors.blue,
onTap: (int index) { unselectedFontSize: 10.sp,
if (index == 1 || index == controller.pageIndex.value) { selectedFontSize: 10.sp,
return; onTap: (int index) {
} if (index == 1 || index == controller.pageIndex.value) {
if (index == 0) { return;
controller.pageIndex.value = 0; }
controller.pageController.jumpToPage(0); if (index == 0) {
} else { controller.pageIndex.value = 0;
controller.pageIndex.value = 2; controller.pageController.jumpToPage(0);
controller.pageController.jumpToPage(1); } else {
} controller.pageIndex.value = 2;
}, controller.pageController.jumpToPage(1);
}
},
),
), ),
), ),
), ),

5
lib/modules/meeting/views/mine/meeting_member_view.dart

@ -24,7 +24,10 @@ class _MeetingMemberViewState extends State<MeetingMemberView> {
return Scaffold( return Scaffold(
backgroundColor: Colors.black, backgroundColor: Colors.black,
appBar: _buildAppBar(), appBar: _buildAppBar(),
body: _buildBody(), body: SafeArea(
top: false,
child: _buildBody(),
),
); );
} }

5
lib/modules/meeting/views/mine/meeting_transcription_view.dart

@ -18,7 +18,10 @@ class MeetingTranscriptionView extends GetView<MeetingHomeController> {
return Scaffold( return Scaffold(
backgroundColor: MeetingUIUtils.getBackgroundColor(isDarkMode), backgroundColor: MeetingUIUtils.getBackgroundColor(isDarkMode),
appBar: _buildAppBar(isDarkMode), appBar: _buildAppBar(isDarkMode),
body: _buildBody(isDarkMode), body: SafeArea(
top: false,
child: _buildBody(isDarkMode),
),
); );
} }

5
lib/modules/meeting/views/template/template_view.dart

@ -104,7 +104,10 @@ class _TemplateViewState extends State<TemplateView> {
return Scaffold( return Scaffold(
backgroundColor: isDarkMode ? Colors.black : Colors.grey[50], backgroundColor: isDarkMode ? Colors.black : Colors.grey[50],
appBar: _buildAppBar(isDarkMode), appBar: _buildAppBar(isDarkMode),
body: _buildBody(isDarkMode), body: SafeArea(
top: false,
child: _buildBody(isDarkMode),
),
); );
} }

35
lib/modules/translation/views/translation_detail_view.dart

@ -41,23 +41,26 @@ class TranslationDetailView extends GetView<TranslationDetailController> {
backgroundColor: backgroundColor:
isDarkMode ? AppColors.darkBackground : Color(0xFFF5F5F8), isDarkMode ? AppColors.darkBackground : Color(0xFFF5F5F8),
appBar: _buildAppBar(isDarkMode), appBar: _buildAppBar(isDarkMode),
body: Obx(() { body: SafeArea(
// 显示加载状态 top: false,
if (controller.isLoading.value) { child: Obx(() {
return Center( // 显示加载状态
child: CircularProgressIndicator( if (controller.isLoading.value) {
color: isDarkMode ? AppColors.primary : Colors.blue, return Center(
), child: CircularProgressIndicator(
); color: isDarkMode ? AppColors.primary : Colors.blue,
} ),
);
}
return Column( return Column(
children: [ children: [
_buildTabButtons(isDarkMode), _buildTabButtons(isDarkMode),
_buildContentArea(isDarkMode), _buildContentArea(isDarkMode),
], ],
); );
}), }),
),
); );
} }

90
lib/modules/translation/views/translation_history_view.dart

@ -23,55 +23,59 @@ class TranslationHistoryView
backgroundColor: backgroundColor:
isDarkMode ? AppColors.darkBackground : Color(0xFFF5F5F8), isDarkMode ? AppColors.darkBackground : Color(0xFFF5F5F8),
appBar: _buildAppBar(isDarkMode), appBar: _buildAppBar(isDarkMode),
body: Obx(() { body: SafeArea(
if (!controller.hasHistory) { top: false,
return Center( child: Obx(() {
child: Text( if (!controller.hasHistory) {
'noTranslationHistory'.tr, return Center(
style: TextStyle( child: Text(
fontSize: 16.sp, 'noTranslationHistory'.tr,
color: isDarkMode ? Colors.grey[400] : Colors.grey, style: TextStyle(
fontSize: 16.sp,
color: isDarkMode ? Colors.grey[400] : Colors.grey,
),
), ),
), );
); }
}
if (controller.isLoading.value) { if (controller.isLoading.value) {
return Center( return Center(
child: CircularProgressIndicator( child: CircularProgressIndicator(
color: isDarkMode ? AppColors.primary : Colors.blue, color: isDarkMode ? AppColors.primary : Colors.blue,
), ),
); );
} }
return ListView.builder( return ListView.builder(
padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 8.h), padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 8.h),
itemCount: controller.sortedDates.length, itemCount: controller.sortedDates.length,
itemBuilder: (context, index) { itemBuilder: (context, index) {
final date = controller.sortedDates[index]; final date = controller.sortedDates[index];
final items = controller.groupedHistory.value[date]!; final items = controller.groupedHistory.value[date]!;
return Column( return Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Padding( Padding(
padding: EdgeInsets.only(top: 24.h, bottom: 12.h, left: 12.w), padding:
child: Text( EdgeInsets.only(top: 24.h, bottom: 12.h, left: 12.w),
date, child: Text(
style: TextStyle( date,
fontSize: 14.sp, style: TextStyle(
fontWeight: FontWeight.w600, fontSize: 14.sp,
color: isDarkMode ? Colors.grey[400] : Colors.grey[600], fontWeight: FontWeight.w600,
letterSpacing: 1.0, color: isDarkMode ? Colors.grey[400] : Colors.grey[600],
letterSpacing: 1.0,
),
), ),
), ),
), _buildDateGroupContainer(items, isDarkMode),
_buildDateGroupContainer(items, isDarkMode), ],
], );
); },
}, );
); }),
}), ),
); );
} }

9
lib/modules/translation/views/translation_list_view.dart

@ -19,7 +19,10 @@ class TranslationListView extends GetView<TranslationListController> {
return Scaffold( return Scaffold(
backgroundColor: isDarkMode ? Colors.black : Colors.grey[50], backgroundColor: isDarkMode ? Colors.black : Colors.grey[50],
appBar: _buildAppBar(context, isDarkMode), appBar: _buildAppBar(context, isDarkMode),
body: _buildAudioList(context, isDarkMode), body: SafeArea(
top: false,
child: _buildAudioList(context, isDarkMode),
),
); );
} }
@ -216,7 +219,9 @@ class TranslationListView extends GetView<TranslationListController> {
// 播放状态文本 // 播放状态文本
Text( Text(
isCurrentFile isCurrentFile
? (isPlaying ? 'playing'.tr : 'paused'.tr) // 播放中... : 已暂停 ? (isPlaying
? 'playing'.tr
: 'paused'.tr) // 播放中... : 已暂停
: 'clickToPlay'.tr, // 点击播放 : 'clickToPlay'.tr, // 点击播放
style: TextStyle( style: TextStyle(
color: Colors.blue, color: Colors.blue,

120
lib/modules/translation/views/translation_view.dart

@ -54,15 +54,18 @@ class TranslationView extends GetView<TranslationController> {
backgroundColor: backgroundColor:
isDarkMode ? AppColors.darkBackground : Colors.grey[50], isDarkMode ? AppColors.darkBackground : Colors.grey[50],
appBar: _buildAppBar(isDarkMode), appBar: _buildAppBar(isDarkMode),
body: Stack( body: SafeArea(
children: [ top: false,
_buildBody(isDarkMode), child: Stack(
// 可拖拽的悬浮按钮 children: [
// DraggableFloatingButton( _buildBody(isDarkMode),
// isDarkMode: isDarkMode, // 可拖拽的悬浮按钮
// controller: controller, // DraggableFloatingButton(
// ), // isDarkMode: isDarkMode,
], // controller: controller,
// ),
],
),
), ),
); );
}); });
@ -72,64 +75,67 @@ class TranslationView extends GetView<TranslationController> {
Widget _buildFaceToFaceScaffold(bool isDarkMode) { Widget _buildFaceToFaceScaffold(bool isDarkMode) {
return Scaffold( return Scaffold(
backgroundColor: isDarkMode ? AppColors.darkBackground : Colors.grey[50], backgroundColor: isDarkMode ? AppColors.darkBackground : Colors.grey[50],
body: Stack( body: SafeArea(
children: [ top: false,
// 主要内容区域 child: Stack(
FaceToFaceLayout( children: [
isDarkMode: isDarkMode, // 主要内容区域
controller: controller, FaceToFaceLayout(
), isDarkMode: isDarkMode,
controller: controller,
),
Positioned( Positioned(
top: 2, top: 2,
left: 0, left: 0,
right: 0, right: 0,
child: SafeArea( child: SafeArea(
top: true, top: true,
child: Container( child: Container(
height: 56.h, height: 56.h,
padding: EdgeInsets.symmetric(horizontal: 8.w), padding: EdgeInsets.symmetric(horizontal: 8.w),
color: Colors.transparent, color: Colors.transparent,
child: Align( child: Align(
alignment: Alignment.centerLeft, alignment: Alignment.centerLeft,
child: IconButton( child: IconButton(
icon: Icon( icon: Icon(
Icons.arrow_back_ios, Icons.arrow_back_ios,
color: isDarkMode ? Colors.white : Colors.black, color: isDarkMode ? Colors.white : Colors.black,
size: 20.sp, size: 20.sp,
),
onPressed: () => Get.back(),
), ),
onPressed: () => Get.back(),
), ),
), ),
), ),
), ),
),
// 顶部按钮(倒过来) // 顶部按钮(倒过来)
Positioned( Positioned(
top: 50.h, top: 50.h,
left: 0, left: 0,
right: 0, right: 0,
child: Transform.rotate( child: Transform.rotate(
angle: 3.14159, // 180度旋转 angle: 3.14159, // 180度旋转
child: _buildFaceToFaceTopButton(isDarkMode), child: _buildFaceToFaceTopButton(isDarkMode),
),
), ),
),
// 底部按钮 // 底部按钮
Positioned( Positioned(
bottom: 40.h, bottom: 40.h,
left: 0, left: 0,
right: 0, right: 0,
child: _buildFaceToFaceBottomButton(isDarkMode), child: _buildFaceToFaceBottomButton(isDarkMode),
), ),
// 可拖拽的悬浮按钮 - 在所有模式下都显示 // 可拖拽的悬浮按钮 - 在所有模式下都显示
// DraggableFloatingButton( // DraggableFloatingButton(
// isDarkMode: isDarkMode, // isDarkMode: isDarkMode,
// controller: controller, // controller: controller,
// ), // ),
], ],
),
), ),
); );
} }

Loading…
Cancel
Save