Browse Source

fix: 为WebView和底部弹窗添加SafeArea避免刘海屏遮挡

为所有WebView页面和底部弹窗添加SafeArea包装,设置top: false以避免系统状态栏区域遮挡内容。同时调整底部按钮位置,考虑底部安全区域边距,确保在刘海屏设备上UI显示正常。
weicu
lxm 8 months ago
parent
commit
7077820edf
  1. 5
      lib/modules/common/webview_page.dart
  2. 5
      lib/modules/goods/views/goodsai_view.dart
  3. 5
      lib/modules/goods/views/goodsmeet_view.dart
  4. 5
      lib/modules/goods/views/goodstrans_view.dart
  5. 9
      lib/modules/goods/views/goodsvip_view.dart
  6. 5
      lib/modules/meeting/views/bottomSheet/ai_bottom_sheet.dart
  7. 5
      lib/modules/meeting/views/bottomSheet/edit_title_bottom_sheet.dart
  8. 5
      lib/modules/meeting/views/bottomSheet/generate_bottom_sheet.dart
  9. 5
      lib/modules/meeting/views/bottomSheet/member_bottom_sheet.dart
  10. 5
      lib/modules/meeting/views/bottomSheet/more_bottom_sheet.dart
  11. 5
      lib/modules/meeting/views/bottomSheet/record_language_bottom_sheet.dart
  12. 5
      lib/modules/meeting/views/bottomSheet/second_level_bottom_sheet.dart
  13. 5
      lib/modules/meeting/views/bottomSheet/share_bottom_sheet.dart
  14. 5
      lib/modules/meeting/views/bottomSheet/speaker_all_bottom_sheet.dart
  15. 5
      lib/modules/meeting/views/bottomSheet/speaker_bottom_sheet.dart
  16. 5
      lib/modules/meeting/views/tabs/mind_map_tab.dart
  17. 2
      lib/modules/meeting/views/tabs/overview_tab.dart
  18. 12
      lib/modules/meeting/views/tabs/speech_tab.dart
  19. 5
      lib/modules/meeting/views/tabs/summary_tab.dart
  20. 5
      lib/modules/payment/views/payment_view.dart
  21. 5
      lib/modules/permissions/views/permissions_view.dart

5
lib/modules/common/webview_page.dart

@ -41,9 +41,12 @@ class WebViewPage extends StatelessWidget {
), ),
centerTitle: true, centerTitle: true,
), ),
body: WebViewWidget( body: SafeArea(
top: false,
child: WebViewWidget(
controller: controller, controller: controller,
), ),
),
); );
} }
} }

5
lib/modules/goods/views/goodsai_view.dart

@ -30,7 +30,9 @@ class GoodsaiView extends GetView<GoodsaiController> {
), ),
centerTitle: true, centerTitle: true,
), ),
body: Obx(() { body: SafeArea(
top: false,
child: Obx(() {
// 访问刷新信号以建立依赖关系:用户信息变化时触发重建 // 访问刷新信号以建立依赖关系:用户信息变化时触发重建
final _ = User.refreshTick.value; final _ = User.refreshTick.value;
Widget content; Widget content;
@ -84,6 +86,7 @@ class GoodsaiView extends GetView<GoodsaiController> {
], ],
); );
}), }),
),
); );
} }

5
lib/modules/goods/views/goodsmeet_view.dart

@ -37,7 +37,9 @@ class GoodsmeetView extends GetView<GoodsmeetController> {
), ),
centerTitle: true, centerTitle: true,
), ),
body: Obx(() { body: SafeArea(
top: false,
child: Obx(() {
// 访问刷新信号以建立依赖关系:用户信息变化时触发重建 // 访问刷新信号以建立依赖关系:用户信息变化时触发重建
final _ = User.refreshTick.value; final _ = User.refreshTick.value;
if (controller.loading.value) { if (controller.loading.value) {
@ -69,6 +71,7 @@ class GoodsmeetView extends GetView<GoodsmeetController> {
}, },
); );
}), }),
),
); );
} }

5
lib/modules/goods/views/goodstrans_view.dart

@ -37,7 +37,9 @@ class GoodstransView extends GetView<GoodstransController> {
), ),
centerTitle: true, centerTitle: true,
), ),
body: Obx(() { body: SafeArea(
top: false,
child: Obx(() {
final _ = User.refreshTick.value; final _ = User.refreshTick.value;
if (controller.loading.value) { if (controller.loading.value) {
return const Center(child: CircularProgressIndicator()); return const Center(child: CircularProgressIndicator());
@ -68,6 +70,7 @@ class GoodstransView extends GetView<GoodstransController> {
}, },
); );
}), }),
),
); );
} }

9
lib/modules/goods/views/goodsvip_view.dart

@ -38,7 +38,9 @@ class GoodsvipView extends GetView<GoodsvipController> {
), ),
centerTitle: true, centerTitle: true,
), ),
body: Obx(() { body: SafeArea(
top: false,
child: Obx(() {
final userTick = User.refreshTick.value; final userTick = User.refreshTick.value;
Widget content; Widget content;
if (controller.loading.value) { if (controller.loading.value) {
@ -63,8 +65,8 @@ class GoodsvipView extends GetView<GoodsvipController> {
children.add(_buildTypeSection(t, list, isDarkMode)); children.add(_buildTypeSection(t, list, isDarkMode));
if (i != order.length - 1) { if (i != order.length - 1) {
children.add(SizedBox(height: 16.h)); children.add(SizedBox(height: 16.h));
children.add( children.add(Divider(
Divider(color: isDarkMode ? Colors.white24 : Colors.black12)); color: isDarkMode ? Colors.white24 : Colors.black12));
children.add(SizedBox(height: 16.h)); children.add(SizedBox(height: 16.h));
} }
} }
@ -94,6 +96,7 @@ class GoodsvipView extends GetView<GoodsvipController> {
], ],
); );
}), }),
),
); );
} }

5
lib/modules/meeting/views/bottomSheet/ai_bottom_sheet.dart

@ -74,7 +74,9 @@ class _AIBottomSheetState extends State<AIBottomSheet> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Container( return SafeArea(
top: false,
child: Container(
padding: EdgeInsets.symmetric(horizontal: 12.w), padding: EdgeInsets.symmetric(horizontal: 12.w),
constraints: BoxConstraints( constraints: BoxConstraints(
maxHeight: 1.sh - 50.h - MediaQuery.of(context).viewInsets.bottom, maxHeight: 1.sh - 50.h - MediaQuery.of(context).viewInsets.bottom,
@ -134,6 +136,7 @@ class _AIBottomSheetState extends State<AIBottomSheet> {
_inputBox(), _inputBox(),
], ],
), ),
),
); );
} }

5
lib/modules/meeting/views/bottomSheet/edit_title_bottom_sheet.dart

@ -11,7 +11,9 @@ class EditTitleBottomSheet extends GetView<MeetingHomeController> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Padding( return SafeArea(
top: false,
child: Padding(
padding: EdgeInsets.symmetric(horizontal: 12.w), padding: EdgeInsets.symmetric(horizontal: 12.w),
child: Column( child: Column(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
@ -137,6 +139,7 @@ class EditTitleBottomSheet extends GetView<MeetingHomeController> {
), ),
], ],
), ),
),
); );
} }
} }

5
lib/modules/meeting/views/bottomSheet/generate_bottom_sheet.dart

@ -88,7 +88,9 @@ class _GenerateBottomSheetState extends State<GenerateBottomSheet> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Column( return SafeArea(
top: false,
child: Column(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: [
Container( Container(
@ -371,6 +373,7 @@ class _GenerateBottomSheetState extends State<GenerateBottomSheet> {
), ),
), ),
], ],
),
); );
} }

5
lib/modules/meeting/views/bottomSheet/member_bottom_sheet.dart

@ -9,7 +9,9 @@ class MemberBottomSheet extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Container( return SafeArea(
top: false,
child: Container(
padding: EdgeInsets.symmetric(horizontal: 12.w), padding: EdgeInsets.symmetric(horizontal: 12.w),
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.vertical( borderRadius: BorderRadius.vertical(
@ -132,6 +134,7 @@ class MemberBottomSheet extends StatelessWidget {
), ),
], ],
), ),
),
); );
} }

5
lib/modules/meeting/views/bottomSheet/more_bottom_sheet.dart

@ -19,7 +19,9 @@ class _MoreBottomSheetState extends State<MoreBottomSheet> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Padding( return SafeArea(
top: false,
child: Padding(
padding: EdgeInsets.symmetric(horizontal: 12.w, vertical: 10.w), padding: EdgeInsets.symmetric(horizontal: 12.w, vertical: 10.w),
child: Column( child: Column(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
@ -54,6 +56,7 @@ class _MoreBottomSheetState extends State<MoreBottomSheet> {
}), }),
], ],
), ),
),
); );
} }

5
lib/modules/meeting/views/bottomSheet/record_language_bottom_sheet.dart

@ -29,7 +29,9 @@ class _RecordLanguageBottomSheetState extends State<RecordLanguageBottomSheet> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Padding( return SafeArea(
top: false,
child: Padding(
padding: EdgeInsets.symmetric(horizontal: 12.w), padding: EdgeInsets.symmetric(horizontal: 12.w),
child: Column( child: Column(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
@ -90,6 +92,7 @@ class _RecordLanguageBottomSheetState extends State<RecordLanguageBottomSheet> {
), ),
], ],
), ),
),
); );
} }

5
lib/modules/meeting/views/bottomSheet/second_level_bottom_sheet.dart

@ -21,7 +21,9 @@ class _SecondLevelBottomSheetState extends State<SecondLevelBottomSheet> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Padding( return SafeArea(
top: false,
child: Padding(
padding: EdgeInsets.symmetric(horizontal: 12.w), padding: EdgeInsets.symmetric(horizontal: 12.w),
child: Column( child: Column(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
@ -159,6 +161,7 @@ class _SecondLevelBottomSheetState extends State<SecondLevelBottomSheet> {
), ),
], ],
), ),
),
); );
} }
} }

5
lib/modules/meeting/views/bottomSheet/share_bottom_sheet.dart

@ -31,7 +31,9 @@ class _ShareBottomSheetState extends State<ShareBottomSheet> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Padding( return SafeArea(
top: false,
child: Padding(
padding: EdgeInsets.symmetric(horizontal: 12.w), padding: EdgeInsets.symmetric(horizontal: 12.w),
child: Column( child: Column(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
@ -269,6 +271,7 @@ class _ShareBottomSheetState extends State<ShareBottomSheet> {
), ),
], ],
), ),
),
); );
} }

5
lib/modules/meeting/views/bottomSheet/speaker_all_bottom_sheet.dart

@ -89,7 +89,9 @@ class _SpeakerAllBottomSheetState extends State<SpeakerAllBottomSheet> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Padding( return SafeArea(
top: false,
child: Padding(
padding: EdgeInsets.symmetric(horizontal: 12.w), padding: EdgeInsets.symmetric(horizontal: 12.w),
child: Column( child: Column(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
@ -489,6 +491,7 @@ class _SpeakerAllBottomSheetState extends State<SpeakerAllBottomSheet> {
), ),
], ],
), ),
),
); );
} }

5
lib/modules/meeting/views/bottomSheet/speaker_bottom_sheet.dart

@ -60,7 +60,9 @@ class _SpeakerBottomSheetState extends State<SpeakerBottomSheet> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Padding( return SafeArea(
top: false,
child: Padding(
padding: EdgeInsets.symmetric(horizontal: 12.w), padding: EdgeInsets.symmetric(horizontal: 12.w),
child: Column( child: Column(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
@ -230,6 +232,7 @@ class _SpeakerBottomSheetState extends State<SpeakerBottomSheet> {
), ),
], ],
), ),
),
); );
} }

5
lib/modules/meeting/views/tabs/mind_map_tab.dart

@ -21,8 +21,11 @@ class _MindMapTabState extends State<MindMapTab>
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
super.build(context); super.build(context);
return WebViewWidget( return SafeArea(
top: false,
child: WebViewWidget(
controller: _controller.webViewController, controller: _controller.webViewController,
),
); );
} }
} }

2
lib/modules/meeting/views/tabs/overview_tab.dart

@ -93,7 +93,7 @@ class _OverviewTabState extends State<OverviewTab> {
: _empty(), : _empty(),
Obx( Obx(
() => Positioned( () => Positioned(
bottom: 20.w, bottom: MediaQuery.of(context).padding.bottom + 20.w,
left: 0, left: 0,
right: 0, right: 0,
child: Row( child: Row(

12
lib/modules/meeting/views/tabs/speech_tab.dart

@ -276,7 +276,7 @@ class SpeechTab extends GetView<MeetingDetailsController> {
), ),
Obx( Obx(
() => Positioned( () => Positioned(
bottom: 20.w, bottom: MediaQuery.of(context).padding.bottom + 20.w,
left: 0, left: 0,
right: 0, right: 0,
child: Row( child: Row(
@ -344,8 +344,9 @@ class SpeechTab extends GetView<MeetingDetailsController> {
Get.bottomSheet( Get.bottomSheet(
const GenerateBottomSheet(), const GenerateBottomSheet(),
isScrollControlled: true, isScrollControlled: true,
backgroundColor: backgroundColor: isDarkMode
isDarkMode ? Colors.grey[800] : Colors.grey[100], ? Colors.grey[800]
: Colors.grey[100],
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
borderRadius: BorderRadius.vertical( borderRadius: BorderRadius.vertical(
top: Radius.circular(12.r), top: Radius.circular(12.r),
@ -365,8 +366,9 @@ class SpeechTab extends GetView<MeetingDetailsController> {
Get.bottomSheet( Get.bottomSheet(
const GenerateBottomSheet(), const GenerateBottomSheet(),
isScrollControlled: true, isScrollControlled: true,
backgroundColor: backgroundColor: isDarkMode
isDarkMode ? Colors.grey[800] : Colors.grey[100], ? Colors.grey[800]
: Colors.grey[100],
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
borderRadius: BorderRadius.vertical( borderRadius: BorderRadius.vertical(
top: Radius.circular(12.r), top: Radius.circular(12.r),

5
lib/modules/meeting/views/tabs/summary_tab.dart

@ -360,7 +360,7 @@ class _SummaryTabState extends State<SummaryTab> {
if (!_hasFocus) if (!_hasFocus)
Obx( Obx(
() => Positioned( () => Positioned(
bottom: 20.w, bottom: MediaQuery.of(context).padding.bottom + 20.w,
left: 0, left: 0,
right: 0, right: 0,
child: Row( child: Row(
@ -481,6 +481,8 @@ class _SummaryTabState extends State<SummaryTab> {
bottom: 0, bottom: 0,
left: -12.w, left: -12.w,
right: -12.w, right: -12.w,
child: SafeArea(
top: false,
child: Container( child: Container(
height: 40, height: 40,
color: isDarkMode ? Colors.grey[800] : Colors.white, color: isDarkMode ? Colors.grey[800] : Colors.white,
@ -491,6 +493,7 @@ class _SummaryTabState extends State<SummaryTab> {
), ),
), ),
), ),
),
], ],
); );
} }

5
lib/modules/payment/views/payment_view.dart

@ -32,7 +32,9 @@ class PaymentView extends GetView<PaymentController> {
onPressed: () => Get.back(), onPressed: () => Get.back(),
), ),
), ),
body: SingleChildScrollView( body: SafeArea(
top: false,
child: SingleChildScrollView(
padding: EdgeInsets.all(16.w), padding: EdgeInsets.all(16.w),
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
@ -51,6 +53,7 @@ class PaymentView extends GetView<PaymentController> {
], ],
), ),
), ),
),
); );
} }

5
lib/modules/permissions/views/permissions_view.dart

@ -38,7 +38,9 @@ class PermissionsView extends GetView<PermissionsController> {
), ),
centerTitle: true, centerTitle: true,
), ),
body: Obx(() { body: SafeArea(
top: false,
child: Obx(() {
if (controller.permissionStatuses.isEmpty) { if (controller.permissionStatuses.isEmpty) {
return const Center(child: CircularProgressIndicator()); return const Center(child: CircularProgressIndicator());
} }
@ -51,6 +53,7 @@ class PermissionsView extends GetView<PermissionsController> {
), ),
); );
}), }),
),
); );
} }

Loading…
Cancel
Save