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(
backgroundColor: isDarkMode ? Colors.black : Colors.grey[50],
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(
backgroundColor: isDarkMode ? Colors.black : Colors.grey[50],
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(
children: [
// 简化为单一音频界面,移除不必要的TabBar
Expanded(
child: _buildAudioTab(context, isDarkMode),
),
],
body: SafeArea(
top: false,
child: Column(
children: [
// 简化为单一音频界面,移除不必要的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,
right: 0,
child: Obx(
() => BottomNavigationBar(
items: [
BottomNavigationBarItem(
icon: Icon(Icons.folder_outlined),
activeIcon: Icon(Icons.folder),
label: 'files'.tr, // 对应中文:文件
),
BottomNavigationBarItem(
icon: SizedBox(),
label: '',
),
BottomNavigationBarItem(
icon: Icon(Icons.person_outline),
activeIcon: Icon(Icons.person),
label: 'mine'.tr, // 对应中文:我的
),
],
backgroundColor:
isDarkMode ? const Color(0xFF1A1A1A) : Colors.white,
currentIndex: controller.pageIndex.value,
unselectedItemColor: Colors.grey,
selectedItemColor: isDarkMode ? Colors.white : Colors.blue,
unselectedFontSize: 10.sp,
selectedFontSize: 10.sp,
onTap: (int index) {
if (index == 1 || 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);
}
},
() => SafeArea(
top: false,
child: BottomNavigationBar(
items: [
BottomNavigationBarItem(
icon: Icon(Icons.folder_outlined),
activeIcon: Icon(Icons.folder),
label: 'files'.tr, // 对应中文:文件
),
BottomNavigationBarItem(
icon: SizedBox(),
label: '',
),
BottomNavigationBarItem(
icon: Icon(Icons.person_outline),
activeIcon: Icon(Icons.person),
label: 'mine'.tr, // 对应中文:我的
),
],
backgroundColor:
isDarkMode ? const Color(0xFF1A1A1A) : Colors.white,
currentIndex: controller.pageIndex.value,
unselectedItemColor: Colors.grey,
selectedItemColor: isDarkMode ? Colors.white : Colors.blue,
unselectedFontSize: 10.sp,
selectedFontSize: 10.sp,
onTap: (int index) {
if (index == 1 || 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);
}
},
),
),
),
),

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

@ -24,7 +24,10 @@ class _MeetingMemberViewState extends State<MeetingMemberView> {
return Scaffold(
backgroundColor: Colors.black,
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(
backgroundColor: MeetingUIUtils.getBackgroundColor(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(
backgroundColor: isDarkMode ? Colors.black : Colors.grey[50],
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:
isDarkMode ? AppColors.darkBackground : Color(0xFFF5F5F8),
appBar: _buildAppBar(isDarkMode),
body: Obx(() {
// 显示加载状态
if (controller.isLoading.value) {
return Center(
child: CircularProgressIndicator(
color: isDarkMode ? AppColors.primary : Colors.blue,
),
);
}
body: SafeArea(
top: false,
child: Obx(() {
// 显示加载状态
if (controller.isLoading.value) {
return Center(
child: CircularProgressIndicator(
color: isDarkMode ? AppColors.primary : Colors.blue,
),
);
}
return Column(
children: [
_buildTabButtons(isDarkMode),
_buildContentArea(isDarkMode),
],
);
}),
return Column(
children: [
_buildTabButtons(isDarkMode),
_buildContentArea(isDarkMode),
],
);
}),
),
);
}

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

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

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

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

Loading…
Cancel
Save