diff --git a/lib/modules/common/webview_page.dart b/lib/modules/common/webview_page.dart index 7056077f2..32f9a5549 100644 --- a/lib/modules/common/webview_page.dart +++ b/lib/modules/common/webview_page.dart @@ -41,8 +41,11 @@ class WebViewPage extends StatelessWidget { ), centerTitle: true, ), - body: WebViewWidget( - controller: controller, + body: SafeArea( + top: false, + child: WebViewWidget( + controller: controller, + ), ), ); } diff --git a/lib/modules/goods/views/goodsai_view.dart b/lib/modules/goods/views/goodsai_view.dart index 74dac96bc..928401bbf 100644 --- a/lib/modules/goods/views/goodsai_view.dart +++ b/lib/modules/goods/views/goodsai_view.dart @@ -30,60 +30,63 @@ class GoodsaiView extends GetView { ), centerTitle: true, ), - body: Obx(() { - // 访问刷新信号以建立依赖关系:用户信息变化时触发重建 - final _ = User.refreshTick.value; - Widget content; - if (controller.loading.value) { - content = const Center(child: CircularProgressIndicator()); - } else if (controller.error.isNotEmpty) { - content = Center(child: Text(controller.error.value)); - } else { - content = ListView( - padding: EdgeInsets.all(16.w), - children: [ - _buildHeader(isDarkMode), - SizedBox(height: 12.h), - _buildUsageCard(isDarkMode), - SizedBox(height: 16.h), - Text( - 'availablePackages'.tr, - style: TextStyle( - fontSize: 16.sp, - fontWeight: FontWeight.w600, - color: isDarkMode ? Colors.white : Colors.black, + body: SafeArea( + top: false, + child: Obx(() { + // 访问刷新信号以建立依赖关系:用户信息变化时触发重建 + final _ = User.refreshTick.value; + Widget content; + if (controller.loading.value) { + content = const Center(child: CircularProgressIndicator()); + } else if (controller.error.isNotEmpty) { + content = Center(child: Text(controller.error.value)); + } else { + content = ListView( + padding: EdgeInsets.all(16.w), + children: [ + _buildHeader(isDarkMode), + SizedBox(height: 12.h), + _buildUsageCard(isDarkMode), + SizedBox(height: 16.h), + Text( + 'availablePackages'.tr, + style: TextStyle( + fontSize: 16.sp, + fontWeight: FontWeight.w600, + color: isDarkMode ? Colors.white : Colors.black, + ), ), - ), - SizedBox(height: 8.h), - ...controller.items.map((item) => Padding( - padding: EdgeInsets.only(bottom: 12.h), - child: _buildCard(item, isDarkMode), - )), - SizedBox(height: 16.h), - _buildFeaturesSection(isDarkMode), - SizedBox(height: 16.h), - GoodsFooterSection(isDarkMode: isDarkMode), - ], - ); - } - return Stack( - children: [ - content, - if (controller.isPaying.value) - Positioned.fill( - child: AbsorbPointer( - absorbing: true, - child: Container( - color: Colors.black.withOpacity(0.35), - child: const Center( - child: CircularProgressIndicator(), + SizedBox(height: 8.h), + ...controller.items.map((item) => Padding( + padding: EdgeInsets.only(bottom: 12.h), + child: _buildCard(item, isDarkMode), + )), + SizedBox(height: 16.h), + _buildFeaturesSection(isDarkMode), + SizedBox(height: 16.h), + GoodsFooterSection(isDarkMode: isDarkMode), + ], + ); + } + return Stack( + children: [ + content, + if (controller.isPaying.value) + Positioned.fill( + child: AbsorbPointer( + absorbing: true, + child: Container( + color: Colors.black.withOpacity(0.35), + child: const Center( + child: CircularProgressIndicator(), + ), ), ), ), - ), - ], - ); - }), + ], + ); + }), + ), ); } diff --git a/lib/modules/goods/views/goodsmeet_view.dart b/lib/modules/goods/views/goodsmeet_view.dart index a32c306c5..b1f0e405d 100644 --- a/lib/modules/goods/views/goodsmeet_view.dart +++ b/lib/modules/goods/views/goodsmeet_view.dart @@ -37,38 +37,41 @@ class GoodsmeetView extends GetView { ), centerTitle: true, ), - body: Obx(() { - // 访问刷新信号以建立依赖关系:用户信息变化时触发重建 - final _ = User.refreshTick.value; - if (controller.loading.value) { - return const Center(child: CircularProgressIndicator()); - } - if (controller.error.isNotEmpty) { - return Center(child: Text(controller.error.value)); - } - return ListView.separated( - padding: EdgeInsets.all(16.w), - itemCount: controller.items.length + 4, - separatorBuilder: (_, __) => SizedBox(height: 12.h), - itemBuilder: (_, index) { - if (index == 0) { - return _buildHeader(isDarkMode); - } - if (index == 1) { - return _buildUsageCard(isDarkMode); - } - final itemIndex = index - 2; - if (itemIndex < controller.items.length) { - final item = controller.items[itemIndex]; - return _buildCard(item, isDarkMode); - } - if (index == controller.items.length + 2) { - return _buildFeaturesSection(isDarkMode); - } - return GoodsFooterSection(isDarkMode: isDarkMode); - }, - ); - }), + body: SafeArea( + top: false, + child: Obx(() { + // 访问刷新信号以建立依赖关系:用户信息变化时触发重建 + final _ = User.refreshTick.value; + if (controller.loading.value) { + return const Center(child: CircularProgressIndicator()); + } + if (controller.error.isNotEmpty) { + return Center(child: Text(controller.error.value)); + } + return ListView.separated( + padding: EdgeInsets.all(16.w), + itemCount: controller.items.length + 4, + separatorBuilder: (_, __) => SizedBox(height: 12.h), + itemBuilder: (_, index) { + if (index == 0) { + return _buildHeader(isDarkMode); + } + if (index == 1) { + return _buildUsageCard(isDarkMode); + } + final itemIndex = index - 2; + if (itemIndex < controller.items.length) { + final item = controller.items[itemIndex]; + return _buildCard(item, isDarkMode); + } + if (index == controller.items.length + 2) { + return _buildFeaturesSection(isDarkMode); + } + return GoodsFooterSection(isDarkMode: isDarkMode); + }, + ); + }), + ), ); } diff --git a/lib/modules/goods/views/goodstrans_view.dart b/lib/modules/goods/views/goodstrans_view.dart index 9ac127551..03af73e17 100644 --- a/lib/modules/goods/views/goodstrans_view.dart +++ b/lib/modules/goods/views/goodstrans_view.dart @@ -37,37 +37,40 @@ class GoodstransView extends GetView { ), centerTitle: true, ), - body: Obx(() { - final _ = User.refreshTick.value; - if (controller.loading.value) { - return const Center(child: CircularProgressIndicator()); - } - if (controller.error.isNotEmpty) { - return Center(child: Text(controller.error.value)); - } - return ListView.separated( - padding: EdgeInsets.all(16.w), - itemCount: controller.items.length + 4, - separatorBuilder: (_, __) => SizedBox(height: 12.h), - itemBuilder: (_, index) { - if (index == 0) { - return _buildHeader(isDarkMode); - } - if (index == 1) { - return _buildUsageCard(isDarkMode); - } - final itemIndex = index - 2; - if (itemIndex < controller.items.length) { - final item = controller.items[itemIndex]; - return _buildCard(item, isDarkMode); - } - if (index == controller.items.length + 2) { - return _buildFeaturesSection(isDarkMode); - } - return GoodsFooterSection(isDarkMode: isDarkMode); - }, - ); - }), + body: SafeArea( + top: false, + child: Obx(() { + final _ = User.refreshTick.value; + if (controller.loading.value) { + return const Center(child: CircularProgressIndicator()); + } + if (controller.error.isNotEmpty) { + return Center(child: Text(controller.error.value)); + } + return ListView.separated( + padding: EdgeInsets.all(16.w), + itemCount: controller.items.length + 4, + separatorBuilder: (_, __) => SizedBox(height: 12.h), + itemBuilder: (_, index) { + if (index == 0) { + return _buildHeader(isDarkMode); + } + if (index == 1) { + return _buildUsageCard(isDarkMode); + } + final itemIndex = index - 2; + if (itemIndex < controller.items.length) { + final item = controller.items[itemIndex]; + return _buildCard(item, isDarkMode); + } + if (index == controller.items.length + 2) { + return _buildFeaturesSection(isDarkMode); + } + return GoodsFooterSection(isDarkMode: isDarkMode); + }, + ); + }), + ), ); } diff --git a/lib/modules/goods/views/goodsvip_view.dart b/lib/modules/goods/views/goodsvip_view.dart index 4cc881e3b..3edacde0a 100644 --- a/lib/modules/goods/views/goodsvip_view.dart +++ b/lib/modules/goods/views/goodsvip_view.dart @@ -38,62 +38,65 @@ class GoodsvipView extends GetView { ), centerTitle: true, ), - body: Obx(() { - final userTick = User.refreshTick.value; - Widget content; - if (controller.loading.value) { - content = const Center(child: CircularProgressIndicator()); - } else if (controller.error.isNotEmpty) { - content = Center(child: Text(controller.error.value)); - } else { - final Map> grouped = {}; - for (final g in controller.items) { - grouped.putIfAbsent(g.usagetype, () => []).add(g); - } - final order = [UsageType.Vip]; - final children = []; - children.add(_buildFeaturesSection(isDarkMode)); - children.add(SizedBox(height: 16.h)); - // children.add(_buildScenesSection(isDarkMode)); - // children.add(SizedBox(height: 16.h)); - for (int i = 0; i < order.length; i++) { - final t = order[i]; - final list = grouped[t]; - if (list == null || list.isEmpty) continue; - children.add(_buildTypeSection(t, list, isDarkMode)); - if (i != order.length - 1) { - children.add(SizedBox(height: 16.h)); - children.add( - Divider(color: isDarkMode ? Colors.white24 : Colors.black12)); - children.add(SizedBox(height: 16.h)); + body: SafeArea( + top: false, + child: Obx(() { + final userTick = User.refreshTick.value; + Widget content; + if (controller.loading.value) { + content = const Center(child: CircularProgressIndicator()); + } else if (controller.error.isNotEmpty) { + content = Center(child: Text(controller.error.value)); + } else { + final Map> grouped = {}; + for (final g in controller.items) { + grouped.putIfAbsent(g.usagetype, () => []).add(g); + } + final order = [UsageType.Vip]; + final children = []; + children.add(_buildFeaturesSection(isDarkMode)); + children.add(SizedBox(height: 16.h)); + // children.add(_buildScenesSection(isDarkMode)); + // children.add(SizedBox(height: 16.h)); + for (int i = 0; i < order.length; i++) { + final t = order[i]; + final list = grouped[t]; + if (list == null || list.isEmpty) continue; + children.add(_buildTypeSection(t, list, isDarkMode)); + if (i != order.length - 1) { + children.add(SizedBox(height: 16.h)); + children.add(Divider( + color: isDarkMode ? Colors.white24 : Colors.black12)); + children.add(SizedBox(height: 16.h)); + } } - } - children.add(GoodsFooterSection(isDarkMode: isDarkMode)); - content = ListView( - key: ValueKey(userTick), - padding: EdgeInsets.all(16.w), - children: children, - ); - } - return Stack( - children: [ - content, - if (controller.isPaying.value) - Positioned.fill( - child: AbsorbPointer( - absorbing: true, - child: Container( - color: Colors.black.withOpacity(0.35), - child: const Center( - child: CircularProgressIndicator(), + children.add(GoodsFooterSection(isDarkMode: isDarkMode)); + content = ListView( + key: ValueKey(userTick), + padding: EdgeInsets.all(16.w), + children: children, + ); + } + return Stack( + children: [ + content, + if (controller.isPaying.value) + Positioned.fill( + child: AbsorbPointer( + absorbing: true, + child: Container( + color: Colors.black.withOpacity(0.35), + child: const Center( + child: CircularProgressIndicator(), + ), ), ), ), - ), - ], - ); - }), + ], + ); + }), + ), ); } diff --git a/lib/modules/meeting/views/bottomSheet/ai_bottom_sheet.dart b/lib/modules/meeting/views/bottomSheet/ai_bottom_sheet.dart index b5003f21f..9a63492cb 100644 --- a/lib/modules/meeting/views/bottomSheet/ai_bottom_sheet.dart +++ b/lib/modules/meeting/views/bottomSheet/ai_bottom_sheet.dart @@ -74,65 +74,68 @@ class _AIBottomSheetState extends State { @override Widget build(BuildContext context) { - return Container( - padding: EdgeInsets.symmetric(horizontal: 12.w), - constraints: BoxConstraints( - maxHeight: 1.sh - 50.h - MediaQuery.of(context).viewInsets.bottom, - ), - child: Column( - children: [ - Container( - padding: EdgeInsets.symmetric(vertical: 10.w), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - 26.horizontalSpace, - Text( - 'Ask AI', - style: TextStyle( - fontSize: 16.sp, - color: Colors.black87, - fontWeight: FontWeight.bold, - ), - ), - GestureDetector( - onTap: () => Get.back(), - child: Container( - width: 26.w, - height: 26.w, - decoration: BoxDecoration( - color: Colors.grey[100], - borderRadius: BorderRadius.circular(26.r), + return SafeArea( + top: false, + child: Container( + padding: EdgeInsets.symmetric(horizontal: 12.w), + constraints: BoxConstraints( + maxHeight: 1.sh - 50.h - MediaQuery.of(context).viewInsets.bottom, + ), + child: Column( + children: [ + Container( + padding: EdgeInsets.symmetric(vertical: 10.w), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + 26.horizontalSpace, + Text( + 'Ask AI', + style: TextStyle( + fontSize: 16.sp, + color: Colors.black87, + fontWeight: FontWeight.bold, ), - child: Icon( - Icons.close, - size: 18.w, - color: Colors.grey[400], + ), + GestureDetector( + onTap: () => Get.back(), + child: Container( + width: 26.w, + height: 26.w, + decoration: BoxDecoration( + color: Colors.grey[100], + borderRadius: BorderRadius.circular(26.r), + ), + child: Icon( + Icons.close, + size: 18.w, + color: Colors.grey[400], + ), ), ), - ), - ], + ], + ), ), - ), - Expanded( - child: _dataList.isNotEmpty - ? Align( - alignment: Alignment.topCenter, - child: ListView.builder( - controller: _scrollController, - itemCount: _dataList.length, - shrinkWrap: true, - reverse: true, - itemBuilder: (BuildContext context, int index) { - Map data = _dataList[index]; - return _item(index, data); - }, - ), - ) - : _empty(), - ), - _inputBox(), - ], + Expanded( + child: _dataList.isNotEmpty + ? Align( + alignment: Alignment.topCenter, + child: ListView.builder( + controller: _scrollController, + itemCount: _dataList.length, + shrinkWrap: true, + reverse: true, + itemBuilder: (BuildContext context, int index) { + Map data = _dataList[index]; + return _item(index, data); + }, + ), + ) + : _empty(), + ), + _inputBox(), + ], + ), ), ); } diff --git a/lib/modules/meeting/views/bottomSheet/edit_title_bottom_sheet.dart b/lib/modules/meeting/views/bottomSheet/edit_title_bottom_sheet.dart index eab7f98a3..b7e5dad9d 100644 --- a/lib/modules/meeting/views/bottomSheet/edit_title_bottom_sheet.dart +++ b/lib/modules/meeting/views/bottomSheet/edit_title_bottom_sheet.dart @@ -11,11 +11,13 @@ class EditTitleBottomSheet extends GetView { @override Widget build(BuildContext context) { - return Padding( - padding: EdgeInsets.symmetric(horizontal: 12.w), - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ + return SafeArea( + top: false, + child: Padding( + padding: EdgeInsets.symmetric(horizontal: 12.w), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ Container( padding: EdgeInsets.symmetric(vertical: 10.w), child: Row( @@ -135,7 +137,8 @@ class EditTitleBottomSheet extends GetView { ], ), ), - ], + ], + ), ), ); } diff --git a/lib/modules/meeting/views/bottomSheet/generate_bottom_sheet.dart b/lib/modules/meeting/views/bottomSheet/generate_bottom_sheet.dart index ae64f372a..62a127112 100644 --- a/lib/modules/meeting/views/bottomSheet/generate_bottom_sheet.dart +++ b/lib/modules/meeting/views/bottomSheet/generate_bottom_sheet.dart @@ -88,9 +88,11 @@ class _GenerateBottomSheetState extends State { @override Widget build(BuildContext context) { - return Column( - mainAxisSize: MainAxisSize.min, - children: [ + return SafeArea( + top: false, + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ Container( padding: EdgeInsets.symmetric(horizontal: 12.w, vertical: 10.w), child: Row( @@ -370,7 +372,8 @@ class _GenerateBottomSheetState extends State { ), ), ), - ], + ], + ), ); } diff --git a/lib/modules/meeting/views/bottomSheet/member_bottom_sheet.dart b/lib/modules/meeting/views/bottomSheet/member_bottom_sheet.dart index 321c28606..807d3385f 100644 --- a/lib/modules/meeting/views/bottomSheet/member_bottom_sheet.dart +++ b/lib/modules/meeting/views/bottomSheet/member_bottom_sheet.dart @@ -9,22 +9,24 @@ class MemberBottomSheet extends StatelessWidget { @override Widget build(BuildContext context) { - return Container( - padding: EdgeInsets.symmetric(horizontal: 12.w), - decoration: BoxDecoration( - borderRadius: BorderRadius.vertical( - top: Radius.circular(12.r), - ), - image: const DecorationImage( - alignment: Alignment.topCenter, - image: AssetImage('assets/images/mine-background.png'), - fit: BoxFit.fitWidth, + return SafeArea( + top: false, + child: Container( + padding: EdgeInsets.symmetric(horizontal: 12.w), + decoration: BoxDecoration( + borderRadius: BorderRadius.vertical( + top: Radius.circular(12.r), + ), + image: const DecorationImage( + alignment: Alignment.topCenter, + image: AssetImage('assets/images/mine-background.png'), + fit: BoxFit.fitWidth, + ), ), - ), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisSize: MainAxisSize.min, - children: [ + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ Container( margin: EdgeInsets.only(top: 12.w), alignment: Alignment.centerRight, @@ -130,7 +132,8 @@ class MemberBottomSheet extends StatelessWidget { ], ), ), - ], + ], + ), ), ); } diff --git a/lib/modules/meeting/views/bottomSheet/more_bottom_sheet.dart b/lib/modules/meeting/views/bottomSheet/more_bottom_sheet.dart index 1701f6c76..e72b4de89 100644 --- a/lib/modules/meeting/views/bottomSheet/more_bottom_sheet.dart +++ b/lib/modules/meeting/views/bottomSheet/more_bottom_sheet.dart @@ -19,11 +19,13 @@ class _MoreBottomSheetState extends State { @override Widget build(BuildContext context) { - return Padding( - padding: EdgeInsets.symmetric(horizontal: 12.w, vertical: 10.w), - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ + return SafeArea( + top: false, + child: Padding( + padding: EdgeInsets.symmetric(horizontal: 12.w, vertical: 10.w), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ SizedBox(height: 10.w), _shareItem(Icons.refresh, 'reSummarize'.tr, //重新总结 onTap: _detailsController.meetingDetails.value.tasktype >= 5 && @@ -52,7 +54,8 @@ class _MoreBottomSheetState extends State { Get.back(); Get.back(); }), - ], + ], + ), ), ); } diff --git a/lib/modules/meeting/views/bottomSheet/record_language_bottom_sheet.dart b/lib/modules/meeting/views/bottomSheet/record_language_bottom_sheet.dart index bfab9698d..6d8fcf4c8 100644 --- a/lib/modules/meeting/views/bottomSheet/record_language_bottom_sheet.dart +++ b/lib/modules/meeting/views/bottomSheet/record_language_bottom_sheet.dart @@ -29,11 +29,13 @@ class _RecordLanguageBottomSheetState extends State { @override Widget build(BuildContext context) { - return Padding( - padding: EdgeInsets.symmetric(horizontal: 12.w), - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ + return SafeArea( + top: false, + child: Padding( + padding: EdgeInsets.symmetric(horizontal: 12.w), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ Container( padding: EdgeInsets.symmetric(vertical: 10.w), child: Row( @@ -88,7 +90,8 @@ class _RecordLanguageBottomSheetState extends State { }, ), ), - ], + ], + ), ), ); } diff --git a/lib/modules/meeting/views/bottomSheet/second_level_bottom_sheet.dart b/lib/modules/meeting/views/bottomSheet/second_level_bottom_sheet.dart index 8bcfc410a..7b1fe93cf 100644 --- a/lib/modules/meeting/views/bottomSheet/second_level_bottom_sheet.dart +++ b/lib/modules/meeting/views/bottomSheet/second_level_bottom_sheet.dart @@ -21,12 +21,14 @@ class _SecondLevelBottomSheetState extends State { @override Widget build(BuildContext context) { - return Padding( - padding: EdgeInsets.symmetric(horizontal: 12.w), - child: Column( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ + return SafeArea( + top: false, + child: Padding( + padding: EdgeInsets.symmetric(horizontal: 12.w), + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ Container( padding: EdgeInsets.symmetric(vertical: 10.w), child: Row( @@ -157,7 +159,8 @@ class _SecondLevelBottomSheetState extends State { ), ), ), - ], + ], + ), ), ); } diff --git a/lib/modules/meeting/views/bottomSheet/share_bottom_sheet.dart b/lib/modules/meeting/views/bottomSheet/share_bottom_sheet.dart index f4d507a34..4e7642a04 100644 --- a/lib/modules/meeting/views/bottomSheet/share_bottom_sheet.dart +++ b/lib/modules/meeting/views/bottomSheet/share_bottom_sheet.dart @@ -31,11 +31,13 @@ class _ShareBottomSheetState extends State { @override Widget build(BuildContext context) { - return Padding( - padding: EdgeInsets.symmetric(horizontal: 12.w), - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ + return SafeArea( + top: false, + child: Padding( + padding: EdgeInsets.symmetric(horizontal: 12.w), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ Container( padding: EdgeInsets.symmetric(vertical: 10.w), child: Row( @@ -267,7 +269,8 @@ class _ShareBottomSheetState extends State { ], ), ), - ], + ], + ), ), ); } diff --git a/lib/modules/meeting/views/bottomSheet/speaker_all_bottom_sheet.dart b/lib/modules/meeting/views/bottomSheet/speaker_all_bottom_sheet.dart index 057b42ae2..d637fc125 100644 --- a/lib/modules/meeting/views/bottomSheet/speaker_all_bottom_sheet.dart +++ b/lib/modules/meeting/views/bottomSheet/speaker_all_bottom_sheet.dart @@ -89,11 +89,13 @@ class _SpeakerAllBottomSheetState extends State { @override Widget build(BuildContext context) { - return Padding( - padding: EdgeInsets.symmetric(horizontal: 12.w), - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ + return SafeArea( + top: false, + child: Padding( + padding: EdgeInsets.symmetric(horizontal: 12.w), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ Container( padding: EdgeInsets.symmetric(vertical: 10.w), child: Row( @@ -487,7 +489,8 @@ class _SpeakerAllBottomSheetState extends State { ], ), ), - ], + ], + ), ), ); } diff --git a/lib/modules/meeting/views/bottomSheet/speaker_bottom_sheet.dart b/lib/modules/meeting/views/bottomSheet/speaker_bottom_sheet.dart index a9483f856..2b53a2e6f 100644 --- a/lib/modules/meeting/views/bottomSheet/speaker_bottom_sheet.dart +++ b/lib/modules/meeting/views/bottomSheet/speaker_bottom_sheet.dart @@ -60,11 +60,13 @@ class _SpeakerBottomSheetState extends State { @override Widget build(BuildContext context) { - return Padding( - padding: EdgeInsets.symmetric(horizontal: 12.w), - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ + return SafeArea( + top: false, + child: Padding( + padding: EdgeInsets.symmetric(horizontal: 12.w), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ Container( padding: EdgeInsets.symmetric(vertical: 10.w), child: Row( @@ -228,7 +230,8 @@ class _SpeakerBottomSheetState extends State { ), ), ), - ], + ], + ), ), ); } diff --git a/lib/modules/meeting/views/tabs/mind_map_tab.dart b/lib/modules/meeting/views/tabs/mind_map_tab.dart index fde1a2e7b..c4e92fc08 100644 --- a/lib/modules/meeting/views/tabs/mind_map_tab.dart +++ b/lib/modules/meeting/views/tabs/mind_map_tab.dart @@ -21,8 +21,11 @@ class _MindMapTabState extends State @override Widget build(BuildContext context) { super.build(context); - return WebViewWidget( - controller: _controller.webViewController, + return SafeArea( + top: false, + child: WebViewWidget( + controller: _controller.webViewController, + ), ); } } diff --git a/lib/modules/meeting/views/tabs/overview_tab.dart b/lib/modules/meeting/views/tabs/overview_tab.dart index 69057d32d..858a83b82 100644 --- a/lib/modules/meeting/views/tabs/overview_tab.dart +++ b/lib/modules/meeting/views/tabs/overview_tab.dart @@ -93,7 +93,7 @@ class _OverviewTabState extends State { : _empty(), Obx( () => Positioned( - bottom: 20.w, + bottom: MediaQuery.of(context).padding.bottom + 20.w, left: 0, right: 0, child: Row( diff --git a/lib/modules/meeting/views/tabs/speech_tab.dart b/lib/modules/meeting/views/tabs/speech_tab.dart index 43acf27cc..62d867c1c 100644 --- a/lib/modules/meeting/views/tabs/speech_tab.dart +++ b/lib/modules/meeting/views/tabs/speech_tab.dart @@ -276,7 +276,7 @@ class SpeechTab extends GetView { ), Obx( () => Positioned( - bottom: 20.w, + bottom: MediaQuery.of(context).padding.bottom + 20.w, left: 0, right: 0, child: Row( @@ -344,8 +344,9 @@ class SpeechTab extends GetView { Get.bottomSheet( const GenerateBottomSheet(), isScrollControlled: true, - backgroundColor: - isDarkMode ? Colors.grey[800] : Colors.grey[100], + backgroundColor: isDarkMode + ? Colors.grey[800] + : Colors.grey[100], shape: RoundedRectangleBorder( borderRadius: BorderRadius.vertical( top: Radius.circular(12.r), @@ -365,8 +366,9 @@ class SpeechTab extends GetView { Get.bottomSheet( const GenerateBottomSheet(), isScrollControlled: true, - backgroundColor: - isDarkMode ? Colors.grey[800] : Colors.grey[100], + backgroundColor: isDarkMode + ? Colors.grey[800] + : Colors.grey[100], shape: RoundedRectangleBorder( borderRadius: BorderRadius.vertical( top: Radius.circular(12.r), diff --git a/lib/modules/meeting/views/tabs/summary_tab.dart b/lib/modules/meeting/views/tabs/summary_tab.dart index a64103edc..860edc5c7 100644 --- a/lib/modules/meeting/views/tabs/summary_tab.dart +++ b/lib/modules/meeting/views/tabs/summary_tab.dart @@ -360,7 +360,7 @@ class _SummaryTabState extends State { if (!_hasFocus) Obx( () => Positioned( - bottom: 20.w, + bottom: MediaQuery.of(context).padding.bottom + 20.w, left: 0, right: 0, child: Row( @@ -481,13 +481,16 @@ class _SummaryTabState extends State { bottom: 0, left: -12.w, right: -12.w, - child: Container( - height: 40, - color: isDarkMode ? Colors.grey[800] : Colors.white, - alignment: Alignment.center, - child: FleatherToolbar.basic( - controller: _fleatherController!, - editorKey: _editorKey, + child: SafeArea( + top: false, + child: Container( + height: 40, + color: isDarkMode ? Colors.grey[800] : Colors.white, + alignment: Alignment.center, + child: FleatherToolbar.basic( + controller: _fleatherController!, + editorKey: _editorKey, + ), ), ), ), diff --git a/lib/modules/payment/views/payment_view.dart b/lib/modules/payment/views/payment_view.dart index 9f1bac599..c7014ebf7 100644 --- a/lib/modules/payment/views/payment_view.dart +++ b/lib/modules/payment/views/payment_view.dart @@ -32,23 +32,26 @@ class PaymentView extends GetView { onPressed: () => Get.back(), ), ), - body: SingleChildScrollView( - padding: EdgeInsets.all(16.w), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - _buildTestInfoCard(isDarkMode), - SizedBox(height: 20.h), - _buildPaymentMethodSelector(isDarkMode), - SizedBox(height: 20.h), - _buildAmountSelector(isDarkMode), - SizedBox(height: 20.h), - _buildPaymentButton(isDarkMode), - SizedBox(height: 20.h), - _buildStatusCard(isDarkMode), - SizedBox(height: 20.h), - _buildInstructions(isDarkMode), - ], + body: SafeArea( + top: false, + child: SingleChildScrollView( + padding: EdgeInsets.all(16.w), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + _buildTestInfoCard(isDarkMode), + SizedBox(height: 20.h), + _buildPaymentMethodSelector(isDarkMode), + SizedBox(height: 20.h), + _buildAmountSelector(isDarkMode), + SizedBox(height: 20.h), + _buildPaymentButton(isDarkMode), + SizedBox(height: 20.h), + _buildStatusCard(isDarkMode), + SizedBox(height: 20.h), + _buildInstructions(isDarkMode), + ], + ), ), ), ); diff --git a/lib/modules/permissions/views/permissions_view.dart b/lib/modules/permissions/views/permissions_view.dart index eca8a7d65..4556cd73a 100644 --- a/lib/modules/permissions/views/permissions_view.dart +++ b/lib/modules/permissions/views/permissions_view.dart @@ -38,19 +38,22 @@ class PermissionsView extends GetView { ), centerTitle: true, ), - body: Obx(() { - if (controller.permissionStatuses.isEmpty) { - return const Center(child: CircularProgressIndicator()); - } + body: SafeArea( + top: false, + child: Obx(() { + if (controller.permissionStatuses.isEmpty) { + return const Center(child: CircularProgressIndicator()); + } - return RefreshIndicator( - onRefresh: controller.checkAllPermissions, - child: SingleChildScrollView( - padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 16.h), - child: _buildPermissionGroups(isDarkMode), - ), - ); - }), + return RefreshIndicator( + onRefresh: controller.checkAllPermissions, + child: SingleChildScrollView( + padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 16.h), + child: _buildPermissionGroups(isDarkMode), + ), + ); + }), + ), ); }