diff --git a/lib/common/widgets/image/image_view.dart b/lib/common/widgets/image/image_view.dart index 15ff34363..f4128a9e4 100644 --- a/lib/common/widgets/image/image_view.dart +++ b/lib/common/widgets/image/image_view.dart @@ -7,6 +7,7 @@ import 'package:PiliPlus/common/widgets/image/nine_grid_view.dart'; import 'package:PiliPlus/models/common/badge_type.dart'; import 'package:PiliPlus/models/common/image_preview_type.dart'; import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/storage_pref.dart'; import 'package:flutter/material.dart'; @@ -98,12 +99,12 @@ Widget imageView( }; } - void onTap(BuildContext context, int index) { + void onTap(int index) { if (callback != null) { callback(picArr.map((item) => item.url).toList(), index); } else { onViewImage?.call(); - context.imageView( + PageUtils.imageView( initialPage: index, imgList: picArr.map( (item) { @@ -138,7 +139,7 @@ Widget imageView( return Hero( tag: item.url, child: GestureDetector( - onTap: () => onTap(context, index), + onTap: () => onTap(index), child: Stack( clipBehavior: Clip.none, alignment: Alignment.center, diff --git a/lib/pages/article/view.dart b/lib/pages/article/view.dart index 3d650a935..b5af1ab86 100644 --- a/lib/pages/article/view.dart +++ b/lib/pages/article/view.dart @@ -20,8 +20,8 @@ import 'package:PiliPlus/pages/article/widgets/opus_content.dart'; import 'package:PiliPlus/pages/common/dyn/common_dyn_page.dart'; import 'package:PiliPlus/pages/dynamics_repost/view.dart'; import 'package:PiliPlus/pages/video/reply/widgets/reply_item_grpc.dart'; +import 'package:PiliPlus/utils/context_ext.dart'; import 'package:PiliPlus/utils/date_util.dart'; -import 'package:PiliPlus/utils/extension.dart'; import 'package:PiliPlus/utils/feed_back.dart'; import 'package:PiliPlus/utils/grid.dart'; import 'package:PiliPlus/utils/image_util.dart'; @@ -35,7 +35,7 @@ import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; -import 'package:get/get.dart'; +import 'package:get/get.dart' hide ContextExtensionss; import 'package:html/parser.dart' as parser; class ArticlePage extends CommonDynPage { @@ -302,7 +302,7 @@ class _ArticlePageState extends CommonDynPageState { final pic = pics[index]; return GestureDetector( behavior: HitTestBehavior.opaque, - onTap: () => context.imageView( + onTap: () => PageUtils.imageView( quality: 60, imgList: pics .map((e) => SourceModel(url: e.url!)) diff --git a/lib/pages/article/widgets/html_render.dart b/lib/pages/article/widgets/html_render.dart index 006554791..89274cea6 100644 --- a/lib/pages/article/widgets/html_render.dart +++ b/lib/pages/article/widgets/html_render.dart @@ -1,6 +1,6 @@ import 'package:PiliPlus/models/common/image_preview_type.dart'; -import 'package:PiliPlus/utils/extension.dart'; import 'package:PiliPlus/utils/image_util.dart'; +import 'package:PiliPlus/utils/page_utils.dart'; import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/material.dart'; @@ -54,7 +54,7 @@ Widget htmlRender({ if (callback != null) { callback([imgUrl], 0); } else { - context.imageView( + PageUtils.imageView( imgList: [SourceModel(url: imgUrl)], quality: 60, ); diff --git a/lib/pages/article/widgets/opus_content.dart b/lib/pages/article/widgets/opus_content.dart index 40e1379fe..72716f4aa 100644 --- a/lib/pages/article/widgets/opus_content.dart +++ b/lib/pages/article/widgets/opus_content.dart @@ -12,6 +12,7 @@ import 'package:PiliPlus/pages/dynamics/widgets/vote.dart'; import 'package:PiliPlus/utils/app_scheme.dart'; import 'package:PiliPlus/utils/extension.dart'; import 'package:PiliPlus/utils/image_util.dart'; +import 'package:PiliPlus/utils/page_utils.dart'; import 'package:cached_network_image/cached_network_image.dart'; import 'package:cached_network_svg_image/cached_network_svg_image.dart'; import 'package:flutter/foundation.dart' show kDebugMode; @@ -181,7 +182,7 @@ class OpusContent extends StatelessWidget { if (callback != null) { callback!([pic.url!], 0); } else { - context.imageView( + PageUtils.imageView( imgList: [SourceModel(url: pic.url!)], quality: 60, ); diff --git a/lib/pages/common/dyn/common_dyn_page.dart b/lib/pages/common/dyn/common_dyn_page.dart index 461086266..a5149f5fd 100644 --- a/lib/pages/common/dyn/common_dyn_page.dart +++ b/lib/pages/common/dyn/common_dyn_page.dart @@ -7,11 +7,12 @@ import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/pages/common/dyn/common_dyn_controller.dart'; import 'package:PiliPlus/pages/video/reply/widgets/reply_item_grpc.dart'; import 'package:PiliPlus/pages/video/reply_reply/view.dart'; +import 'package:PiliPlus/utils/context_ext.dart'; import 'package:PiliPlus/utils/num_util.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:easy_debounce/easy_throttle.dart'; import 'package:flutter/material.dart'; -import 'package:get/get.dart'; +import 'package:get/get.dart' hide ContextExtensionss; abstract class CommonDynPage extends StatefulWidget { const CommonDynPage({super.key}); diff --git a/lib/pages/common/publish/common_publish_page.dart b/lib/pages/common/publish/common_publish_page.dart index c7b8721fd..cfe0d00dc 100644 --- a/lib/pages/common/publish/common_publish_page.dart +++ b/lib/pages/common/publish/common_publish_page.dart @@ -5,12 +5,13 @@ import 'dart:math' show max; import 'package:PiliPlus/http/msg.dart'; import 'package:PiliPlus/models/common/publish_panel_type.dart'; import 'package:PiliPlus/models_new/upload_bfs/data.dart'; +import 'package:PiliPlus/utils/context_ext.dart'; import 'package:PiliPlus/utils/feed_back.dart'; import 'package:chat_bottom_container/chat_bottom_container.dart'; import 'package:dio/dio.dart'; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; -import 'package:get/get.dart'; +import 'package:get/get.dart' hide ContextExtensionss; import 'package:image_picker/image_picker.dart'; abstract class CommonPublishPage extends StatefulWidget { diff --git a/lib/pages/common/publish/common_rich_text_pub_page.dart b/lib/pages/common/publish/common_rich_text_pub_page.dart index a7201f227..d7ec4ffc2 100644 --- a/lib/pages/common/publish/common_rich_text_pub_page.dart +++ b/lib/pages/common/publish/common_rich_text_pub_page.dart @@ -11,7 +11,7 @@ import 'package:PiliPlus/models_new/emote/emote.dart' as e; import 'package:PiliPlus/models_new/live/live_emote/emoticon.dart'; import 'package:PiliPlus/pages/common/publish/common_publish_page.dart'; import 'package:PiliPlus/pages/dynamics_mention/view.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/page_utils.dart'; import 'package:easy_debounce/easy_throttle.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; @@ -75,7 +75,7 @@ abstract class CommonRichTextPubPageState GestureDetector( onTap: () async { controller.keepChatPanel(); - await context.imageView( + await PageUtils.imageView( imgList: pathList .map( (path) => SourceModel( diff --git a/lib/pages/dynamics/widgets/author_panel.dart b/lib/pages/dynamics/widgets/author_panel.dart index 07097688c..51869a152 100644 --- a/lib/pages/dynamics/widgets/author_panel.dart +++ b/lib/pages/dynamics/widgets/author_panel.dart @@ -10,6 +10,7 @@ import 'package:PiliPlus/models/dynamics/result.dart'; import 'package:PiliPlus/pages/dynamics/controller.dart'; import 'package:PiliPlus/pages/save_panel/view.dart'; import 'package:PiliPlus/utils/accounts.dart'; +import 'package:PiliPlus/utils/context_ext.dart'; import 'package:PiliPlus/utils/date_util.dart'; import 'package:PiliPlus/utils/extension.dart'; import 'package:PiliPlus/utils/feed_back.dart'; @@ -19,7 +20,7 @@ import 'package:PiliPlus/utils/utils.dart'; import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; -import 'package:get/get.dart'; +import 'package:get/get.dart' hide ContextExtensionss; class AuthorPanel extends StatelessWidget { final DynamicItemModel item; @@ -98,7 +99,7 @@ class AuthorPanel extends StatelessWidget { item.modules.moduleAuthor!.vip != null && item.modules.moduleAuthor!.vip!.status > 0 && item.modules.moduleAuthor!.vip!.type == 2 - ? context.vipColor + ? theme.colorScheme.vipColor : theme.colorScheme.onSurface, fontSize: theme.textTheme.titleSmall!.fontSize, ), diff --git a/lib/pages/dynamics/widgets/dynamic_panel.dart b/lib/pages/dynamics/widgets/dynamic_panel.dart index c00493209..af67ccc65 100644 --- a/lib/pages/dynamics/widgets/dynamic_panel.dart +++ b/lib/pages/dynamics/widgets/dynamic_panel.dart @@ -6,9 +6,9 @@ import 'package:PiliPlus/pages/dynamics/widgets/author_panel.dart'; import 'package:PiliPlus/pages/dynamics/widgets/blocked_item.dart'; import 'package:PiliPlus/pages/dynamics/widgets/content_panel.dart'; import 'package:PiliPlus/pages/dynamics/widgets/module_panel.dart'; +import 'package:PiliPlus/utils/context_ext.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:flutter/material.dart'; -import 'package:get/get.dart'; class DynamicPanel extends StatelessWidget { final DynamicItemModel item; @@ -80,8 +80,7 @@ class DynamicPanel extends StatelessWidget { ), ), ); - if (isSave || - (isDetail && Get.context!.orientation == Orientation.landscape)) { + if (isSave || (isDetail && context.isLandscape)) { return child; } return DecoratedBox( diff --git a/lib/pages/dynamics/widgets/rich_node_panel.dart b/lib/pages/dynamics/widgets/rich_node_panel.dart index 2e7f42b46..bfad395b6 100644 --- a/lib/pages/dynamics/widgets/rich_node_panel.dart +++ b/lib/pages/dynamics/widgets/rich_node_panel.dart @@ -10,7 +10,6 @@ import 'package:PiliPlus/models/common/image_type.dart'; import 'package:PiliPlus/models/dynamics/result.dart'; import 'package:PiliPlus/pages/dynamics/widgets/vote.dart'; import 'package:PiliPlus/utils/app_scheme.dart'; -import 'package:PiliPlus/utils/extension.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/gestures.dart'; @@ -273,7 +272,7 @@ TextSpan? richNode( recognizer: TapGestureRecognizer() ..onTap = () { void onView(List list) { - Get.context!.imageView( + PageUtils.imageView( imgList: list .map((e) => SourceModel(url: e.src!)) .toList(), diff --git a/lib/pages/dynamics/widgets/vote.dart b/lib/pages/dynamics/widgets/vote.dart index 594ee428f..b9aa73f30 100644 --- a/lib/pages/dynamics/widgets/vote.dart +++ b/lib/pages/dynamics/widgets/vote.dart @@ -4,10 +4,11 @@ import 'package:PiliPlus/common/widgets/dialog/report.dart'; import 'package:PiliPlus/http/dynamics.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models/dynamics/vote_model.dart'; +import 'package:PiliPlus/utils/context_ext.dart'; import 'package:PiliPlus/utils/date_util.dart'; import 'package:PiliPlus/utils/num_util.dart'; import 'package:flutter/material.dart'; -import 'package:get/get.dart'; +import 'package:get/get.dart' hide ContextExtensionss; class VotePanel extends StatefulWidget { final VoteInfo voteInfo; diff --git a/lib/pages/dynamics_create/view.dart b/lib/pages/dynamics_create/view.dart index ac1d542e4..c950667a8 100644 --- a/lib/pages/dynamics_create/view.dart +++ b/lib/pages/dynamics_create/view.dart @@ -24,6 +24,7 @@ import 'package:PiliPlus/pages/dynamics_select_topic/view.dart'; import 'package:PiliPlus/pages/emote/controller.dart'; import 'package:PiliPlus/pages/emote/view.dart'; import 'package:PiliPlus/utils/accounts.dart'; +import 'package:PiliPlus/utils/context_ext.dart'; import 'package:PiliPlus/utils/date_util.dart'; import 'package:PiliPlus/utils/grid.dart'; import 'package:PiliPlus/utils/request_utils.dart'; @@ -31,7 +32,7 @@ import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/material.dart' hide DraggableScrollableSheet; import 'package:flutter/services.dart' show LengthLimitingTextInputFormatter; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; -import 'package:get/get.dart'; +import 'package:get/get.dart' hide ContextExtensionss; class CreateDynPanel extends CommonRichTextPubPage { const CreateDynPanel({ diff --git a/lib/pages/dynamics_detail/view.dart b/lib/pages/dynamics_detail/view.dart index 6cb8032e7..c29ea70e0 100644 --- a/lib/pages/dynamics_detail/view.dart +++ b/lib/pages/dynamics_detail/view.dart @@ -9,6 +9,7 @@ import 'package:PiliPlus/pages/dynamics/widgets/author_panel.dart'; import 'package:PiliPlus/pages/dynamics/widgets/dynamic_panel.dart'; import 'package:PiliPlus/pages/dynamics_detail/controller.dart'; import 'package:PiliPlus/pages/dynamics_repost/view.dart'; +import 'package:PiliPlus/utils/context_ext.dart'; import 'package:PiliPlus/utils/feed_back.dart'; import 'package:PiliPlus/utils/grid.dart'; import 'package:PiliPlus/utils/num_util.dart'; @@ -18,7 +19,7 @@ import 'package:PiliPlus/utils/storage_key.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:flutter/material.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; -import 'package:get/get.dart'; +import 'package:get/get.dart' hide ContextExtensionss; class DynamicDetailPage extends CommonDynPage { const DynamicDetailPage({super.key}); diff --git a/lib/pages/dynamics_mention/view.dart b/lib/pages/dynamics_mention/view.dart index 47101cffa..153fe0493 100644 --- a/lib/pages/dynamics_mention/view.dart +++ b/lib/pages/dynamics_mention/view.dart @@ -10,9 +10,10 @@ import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models_new/dynamic/dyn_mention/group.dart'; import 'package:PiliPlus/pages/dynamics_mention/controller.dart'; import 'package:PiliPlus/pages/dynamics_mention/widgets/item.dart'; +import 'package:PiliPlus/utils/context_ext.dart'; import 'package:PiliPlus/utils/extension.dart'; import 'package:flutter/material.dart'; -import 'package:get/get.dart'; +import 'package:get/get.dart' hide ContextExtensionss; import 'package:stream_transform/stream_transform.dart'; class DynMentionPanel extends StatefulWidget { diff --git a/lib/pages/dynamics_select_topic/view.dart b/lib/pages/dynamics_select_topic/view.dart index 98d48f150..d1b086ddc 100644 --- a/lib/pages/dynamics_select_topic/view.dart +++ b/lib/pages/dynamics_select_topic/view.dart @@ -8,9 +8,10 @@ import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models_new/dynamic/dyn_topic_top/topic_item.dart'; import 'package:PiliPlus/pages/dynamics_select_topic/controller.dart'; import 'package:PiliPlus/pages/dynamics_select_topic/widgets/item.dart'; +import 'package:PiliPlus/utils/context_ext.dart'; import 'package:PiliPlus/utils/extension.dart'; import 'package:flutter/material.dart'; -import 'package:get/get.dart'; +import 'package:get/get.dart' hide ContextExtensionss; import 'package:stream_transform/stream_transform.dart'; class SelectTopicPanel extends StatefulWidget { diff --git a/lib/pages/home/view.dart b/lib/pages/home/view.dart index 6cad430c4..8cc10445e 100644 --- a/lib/pages/home/view.dart +++ b/lib/pages/home/view.dart @@ -6,9 +6,10 @@ import 'package:PiliPlus/models/common/image_type.dart'; import 'package:PiliPlus/pages/home/controller.dart'; import 'package:PiliPlus/pages/main/controller.dart'; import 'package:PiliPlus/pages/mine/controller.dart'; +import 'package:PiliPlus/utils/context_ext.dart'; import 'package:PiliPlus/utils/feed_back.dart'; import 'package:flutter/material.dart'; -import 'package:get/get.dart'; +import 'package:get/get.dart' hide ContextExtensionss; import 'package:material_design_icons_flutter/material_design_icons_flutter.dart'; class HomePage extends StatefulWidget { diff --git a/lib/pages/live_dm_block/view.dart b/lib/pages/live_dm_block/view.dart index dc1ba66f8..01992c590 100644 --- a/lib/pages/live_dm_block/view.dart +++ b/lib/pages/live_dm_block/view.dart @@ -7,11 +7,12 @@ import 'package:PiliPlus/models/common/live_dm_silent_type.dart'; import 'package:PiliPlus/models_new/live/live_dm_block/shield_user_list.dart'; import 'package:PiliPlus/pages/live_dm_block/controller.dart'; import 'package:PiliPlus/pages/search/widgets/search_text.dart'; +import 'package:PiliPlus/utils/context_ext.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:extended_nested_scroll_view/extended_nested_scroll_view.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; -import 'package:get/get.dart'; +import 'package:get/get.dart' hide ContextExtensionss; class LiveDmBlockPage extends StatefulWidget { const LiveDmBlockPage({super.key}); diff --git a/lib/pages/live_room/view.dart b/lib/pages/live_room/view.dart index 5c0814c4b..72ffd1d1b 100644 --- a/lib/pages/live_room/view.dart +++ b/lib/pages/live_room/view.dart @@ -14,6 +14,7 @@ import 'package:PiliPlus/plugin/pl_player/models/play_status.dart'; import 'package:PiliPlus/plugin/pl_player/utils/fullscreen.dart'; import 'package:PiliPlus/plugin/pl_player/view.dart'; import 'package:PiliPlus/services/service_locator.dart'; +import 'package:PiliPlus/utils/context_ext.dart'; import 'package:PiliPlus/utils/extension.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/storage.dart'; @@ -25,7 +26,7 @@ import 'package:floating/floating.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart' show SystemUiOverlayStyle; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; -import 'package:get/get.dart'; +import 'package:get/get.dart' hide ContextExtensionss; import 'package:screen_brightness/screen_brightness.dart'; class LiveRoomPage extends StatefulWidget { diff --git a/lib/pages/login/view.dart b/lib/pages/login/view.dart index 0046b92d2..1fc2979d2 100644 --- a/lib/pages/login/view.dart +++ b/lib/pages/login/view.dart @@ -103,9 +103,8 @@ class _LoginPageState extends State { child: PrettyQrView.data( data: _loginPageCtr.codeInfo['data']!['url']!, decoration: const PrettyQrDecoration( - shape: PrettyQrRoundedSymbol( + shape: PrettyQrSquaresSymbol( color: Colors.black87, - borderRadius: BorderRadius.zero, ), ), ), diff --git a/lib/pages/main/view.dart b/lib/pages/main/view.dart index 5df66057c..0a6350702 100644 --- a/lib/pages/main/view.dart +++ b/lib/pages/main/view.dart @@ -9,12 +9,13 @@ import 'package:PiliPlus/pages/home/view.dart'; import 'package:PiliPlus/pages/main/controller.dart'; import 'package:PiliPlus/pages/mine/controller.dart'; import 'package:PiliPlus/utils/app_scheme.dart'; +import 'package:PiliPlus/utils/context_ext.dart'; import 'package:PiliPlus/utils/extension.dart'; import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; -import 'package:get/get.dart'; +import 'package:get/get.dart' hide ContextExtensionss; import 'package:material_design_icons_flutter/material_design_icons_flutter.dart'; class MainApp extends StatefulWidget { diff --git a/lib/pages/member/widget/user_info_card.dart b/lib/pages/member/widget/user_info_card.dart index d7469ac2b..3dbda32a7 100644 --- a/lib/pages/member/widget/user_info_card.dart +++ b/lib/pages/member/widget/user_info_card.dart @@ -83,7 +83,7 @@ class UserInfoCard extends StatelessWidget { return Hero( tag: imgUrl, child: GestureDetector( - onTap: () => context.imageView( + onTap: () => PageUtils.imageView( imgList: [SourceModel(url: imgUrl)], ), child: CachedNetworkImage( @@ -130,7 +130,7 @@ class UserInfoCard extends StatelessWidget { fontSize: 17, fontWeight: FontWeight.bold, color: (card.vip?.status ?? -1) > 0 && card.vip?.type == 2 - ? context.vipColor + ? theme.colorScheme.vipColor : null, ), ), @@ -145,7 +145,7 @@ class UserInfoCard extends StatelessWidget { padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 3), decoration: BoxDecoration( borderRadius: StyleString.mdRadius, - color: context.vipColor, + color: theme.colorScheme.vipColor, ), child: Text( card.vip?.label?.text ?? '大会员', @@ -413,7 +413,7 @@ class UserInfoCard extends StatelessWidget { ], ); - Hero _buildAvatar(BuildContext context) => Hero( + Widget get _buildAvatar => Hero( tag: card.face ?? '', child: PendantAvatar( avatar: card.face, @@ -423,8 +423,9 @@ class UserInfoCard extends StatelessWidget { isVip: (card.vip?.status ?? -1) > 0, garbPendantImage: card.pendant!.image!, roomId: live?.liveStatus == 1 ? live!.roomid : null, - onTap: () => - context.imageView(imgList: [SourceModel(url: card.face.http2https)]), + onTap: () => PageUtils.imageView( + imgList: [SourceModel(url: card.face.http2https)], + ), ), ); @@ -448,7 +449,7 @@ class UserInfoCard extends StatelessWidget { Positioned( top: 110, left: 20, - child: _buildAvatar(context), + child: _buildAvatar, ), Positioned( left: 160, @@ -554,7 +555,7 @@ class UserInfoCard extends StatelessWidget { top: 10, bottom: card.prInfo?.content?.isNotEmpty == true ? 0 : 10, ), - child: _buildAvatar(context), + child: _buildAvatar, ), const SizedBox(width: 10), Expanded( diff --git a/lib/pages/member_home/view.dart b/lib/pages/member_home/view.dart index 19b8251a1..312e4971f 100644 --- a/lib/pages/member_home/view.dart +++ b/lib/pages/member_home/view.dart @@ -15,11 +15,12 @@ import 'package:PiliPlus/pages/member_home/widgets/fav_item.dart'; import 'package:PiliPlus/pages/member_home/widgets/video_card_v_member_home.dart'; import 'package:PiliPlus/pages/member_like_arc/view.dart'; import 'package:PiliPlus/pages/member_pgc/widgets/pgc_card_v_member_pgc.dart'; +import 'package:PiliPlus/utils/context_ext.dart'; import 'package:PiliPlus/utils/grid.dart'; import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; -import 'package:get/get.dart'; +import 'package:get/get.dart' hide ContextExtensionss; class MemberHome extends StatefulWidget { const MemberHome({super.key, this.heroTag}); diff --git a/lib/pages/mine/view.dart b/lib/pages/mine/view.dart index 99e2a2268..d3af70199 100644 --- a/lib/pages/mine/view.dart +++ b/lib/pages/mine/view.dart @@ -274,7 +274,7 @@ class _MediaPageState extends CommonPageState style: theme.textTheme.titleMedium!.copyWith( height: 1, color: isVip && userInfo.vipType == 2 - ? context.vipColor + ? theme.colorScheme.vipColor : null, ), ), diff --git a/lib/pages/pgc_review/child/view.dart b/lib/pages/pgc_review/child/view.dart index 8141da46b..17ee539f0 100644 --- a/lib/pages/pgc_review/child/view.dart +++ b/lib/pages/pgc_review/child/view.dart @@ -232,7 +232,7 @@ class _PgcReviewChildPageState extends State item.author?.vip?.status != null && item.author!.vip!.status > 0 && item.author!.vip!.type == 2 - ? context.vipColor + ? theme.colorScheme.vipColor : theme.colorScheme.outline, fontSize: 13, ), diff --git a/lib/pages/save_panel/view.dart b/lib/pages/save_panel/view.dart index 8859e4012..7a4563909 100644 --- a/lib/pages/save_panel/view.dart +++ b/lib/pages/save_panel/view.dart @@ -11,6 +11,7 @@ import 'package:PiliPlus/pages/dynamics/widgets/dynamic_panel.dart'; import 'package:PiliPlus/pages/video/introduction/pgc/controller.dart'; import 'package:PiliPlus/pages/video/introduction/ugc/controller.dart'; import 'package:PiliPlus/pages/video/reply/widgets/reply_item_grpc.dart'; +import 'package:PiliPlus/utils/context_ext.dart'; import 'package:PiliPlus/utils/date_util.dart'; import 'package:PiliPlus/utils/image_util.dart'; import 'package:PiliPlus/utils/utils.dart'; @@ -18,7 +19,7 @@ import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; -import 'package:get/get.dart'; +import 'package:get/get.dart' hide ContextExtensionss; import 'package:intl/intl.dart' show DateFormat; import 'package:pretty_qr_code/pretty_qr_code.dart'; import 'package:saver_gallery/saver_gallery.dart'; @@ -483,11 +484,7 @@ class _SavePanelState extends State { decoration: const PrettyQrDecoration( shape: - PrettyQrRoundedSymbol( - borderRadius: - BorderRadius - .zero, - ), + PrettyQrSquaresSymbol(), ), ), ), diff --git a/lib/pages/search/view.dart b/lib/pages/search/view.dart index 767a0d7e7..274ba7341 100644 --- a/lib/pages/search/view.dart +++ b/lib/pages/search/view.dart @@ -5,12 +5,13 @@ import 'package:PiliPlus/models_new/search/search_rcmd/data.dart'; import 'package:PiliPlus/pages/search/controller.dart'; import 'package:PiliPlus/pages/search/widgets/hot_keyword.dart'; import 'package:PiliPlus/pages/search/widgets/search_text.dart'; +import 'package:PiliPlus/utils/context_ext.dart'; import 'package:PiliPlus/utils/em.dart' show Em; import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/storage_key.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:flutter/material.dart'; -import 'package:get/get.dart'; +import 'package:get/get.dart' hide ContextExtensionss; class SearchPage extends StatefulWidget { const SearchPage({super.key}); diff --git a/lib/pages/search_panel/article/controller.dart b/lib/pages/search_panel/article/controller.dart index 052ea07dd..b994af0e8 100644 --- a/lib/pages/search_panel/article/controller.dart +++ b/lib/pages/search_panel/article/controller.dart @@ -3,9 +3,10 @@ import 'dart:math'; import 'package:PiliPlus/models/search/result.dart'; import 'package:PiliPlus/pages/search/widgets/search_text.dart'; import 'package:PiliPlus/pages/search_panel/controller.dart'; +import 'package:PiliPlus/utils/context_ext.dart'; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; -import 'package:get/get.dart'; +import 'package:get/get.dart' hide ContextExtensionss; class SearchArticleController extends SearchPanelController { diff --git a/lib/pages/search_panel/user/controller.dart b/lib/pages/search_panel/user/controller.dart index 77c3faa64..a148ec8af 100644 --- a/lib/pages/search_panel/user/controller.dart +++ b/lib/pages/search_panel/user/controller.dart @@ -3,9 +3,10 @@ import 'dart:math'; import 'package:PiliPlus/models/search/result.dart'; import 'package:PiliPlus/pages/search/widgets/search_text.dart'; import 'package:PiliPlus/pages/search_panel/controller.dart'; +import 'package:PiliPlus/utils/context_ext.dart'; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; -import 'package:get/get.dart'; +import 'package:get/get.dart' hide ContextExtensionss; class SearchUserController extends SearchPanelController { diff --git a/lib/pages/search_panel/video/controller.dart b/lib/pages/search_panel/video/controller.dart index 7d7c95d69..2b9ff80bf 100644 --- a/lib/pages/search_panel/video/controller.dart +++ b/lib/pages/search_panel/video/controller.dart @@ -6,11 +6,12 @@ import 'package:PiliPlus/models/search/result.dart'; import 'package:PiliPlus/pages/search/widgets/search_text.dart'; import 'package:PiliPlus/pages/search_panel/controller.dart'; import 'package:PiliPlus/utils/app_scheme.dart'; +import 'package:PiliPlus/utils/context_ext.dart'; import 'package:PiliPlus/utils/date_util.dart'; import 'package:PiliPlus/utils/id_utils.dart'; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; -import 'package:get/get.dart'; +import 'package:get/get.dart' hide ContextExtensionss; class SearchVideoController extends SearchPanelController { diff --git a/lib/pages/setting/pages/play_speed_set.dart b/lib/pages/setting/pages/play_speed_set.dart index 427a4c4db..a296ff5fd 100644 --- a/lib/pages/setting/pages/play_speed_set.dart +++ b/lib/pages/setting/pages/play_speed_set.dart @@ -1,13 +1,14 @@ import 'dart:math'; import 'package:PiliPlus/pages/setting/widgets/switch_item.dart'; +import 'package:PiliPlus/utils/context_ext.dart'; import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/storage_key.dart'; import 'package:PiliPlus/utils/storage_pref.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart' show FilteringTextInputFormatter; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; -import 'package:get/get.dart'; +import 'package:get/get.dart' hide ContextExtensionss; import 'package:hive/hive.dart'; class PlaySpeedPage extends StatefulWidget { diff --git a/lib/pages/setting/view.dart b/lib/pages/setting/view.dart index 9a16868cc..489c9a47a 100644 --- a/lib/pages/setting/view.dart +++ b/lib/pages/setting/view.dart @@ -12,10 +12,11 @@ import 'package:PiliPlus/pages/setting/widgets/multi_select_dialog.dart'; import 'package:PiliPlus/pages/webdav/view.dart'; import 'package:PiliPlus/utils/accounts.dart'; import 'package:PiliPlus/utils/accounts/account.dart'; +import 'package:PiliPlus/utils/context_ext.dart'; import 'package:PiliPlus/utils/extension.dart'; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; -import 'package:get/get.dart'; +import 'package:get/get.dart' hide ContextExtensionss; import 'package:material_design_icons_flutter/material_design_icons_flutter.dart'; class _SettingsModel { diff --git a/lib/pages/video/controller.dart b/lib/pages/video/controller.dart index c26f9055c..4137bcbb2 100644 --- a/lib/pages/video/controller.dart +++ b/lib/pages/video/controller.dart @@ -44,6 +44,7 @@ import 'package:PiliPlus/plugin/pl_player/models/data_source.dart'; import 'package:PiliPlus/plugin/pl_player/models/heart_beat_type.dart'; import 'package:PiliPlus/plugin/pl_player/models/play_status.dart'; import 'package:PiliPlus/utils/accounts.dart'; +import 'package:PiliPlus/utils/context_ext.dart'; import 'package:PiliPlus/utils/duration_util.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/storage.dart'; @@ -58,7 +59,7 @@ import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:flutter_volume_controller/flutter_volume_controller.dart'; -import 'package:get/get.dart'; +import 'package:get/get.dart' hide ContextExtensionss; import 'package:get/get_navigation/src/dialog/dialog_route.dart'; import 'package:hive/hive.dart'; import 'package:material_design_icons_flutter/material_design_icons_flutter.dart'; @@ -422,8 +423,7 @@ class VideoDetailController extends GetxController } bool get horizontalScreen => plPlayerController.horizontalScreen; - bool get showVideoSheet => - !horizontalScreen && Get.context!.orientation == Orientation.landscape; + bool get showVideoSheet => !horizontalScreen && Get.context!.isLandscape; int? _lastPos; List? postList; diff --git a/lib/pages/video/introduction/pgc/view.dart b/lib/pages/video/introduction/pgc/view.dart index 892e1de07..26b1fba52 100644 --- a/lib/pages/video/introduction/pgc/view.dart +++ b/lib/pages/video/introduction/pgc/view.dart @@ -12,8 +12,8 @@ import 'package:PiliPlus/pages/video/controller.dart'; import 'package:PiliPlus/pages/video/introduction/pgc/controller.dart'; import 'package:PiliPlus/pages/video/introduction/pgc/widgets/pgc_panel.dart'; import 'package:PiliPlus/pages/video/introduction/ugc/widgets/action_item.dart'; -import 'package:PiliPlus/utils/extension.dart'; import 'package:PiliPlus/utils/num_util.dart'; +import 'package:PiliPlus/utils/page_utils.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart' show HapticFeedback; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; @@ -69,8 +69,7 @@ class _PgcIntroPageState extends State super.build(context); final ThemeData theme = Theme.of(context); final item = pgcIntroController.pgcItem; - final isLandscape = - MediaQuery.orientationOf(context) == Orientation.landscape; + final isLandscape = context.isLandscape; return SliverPadding( padding: EdgeInsets.only( left: StyleString.safeSpace, @@ -92,7 +91,7 @@ class _PgcIntroPageState extends State GestureDetector( onTap: () { videoDetailCtr.onViewImage(); - context.imageView( + PageUtils.imageView( imgList: [ SourceModel( url: item.cover!, diff --git a/lib/pages/video/introduction/ugc/controller.dart b/lib/pages/video/introduction/ugc/controller.dart index 4962128ec..354a7acd5 100644 --- a/lib/pages/video/introduction/ugc/controller.dart +++ b/lib/pages/video/introduction/ugc/controller.dart @@ -31,6 +31,7 @@ import 'package:PiliPlus/pages/video/related/controller.dart'; import 'package:PiliPlus/pages/video/reply/controller.dart'; import 'package:PiliPlus/plugin/pl_player/models/play_repeat.dart'; import 'package:PiliPlus/services/service_locator.dart'; +import 'package:PiliPlus/utils/context_ext.dart'; import 'package:PiliPlus/utils/extension.dart'; import 'package:PiliPlus/utils/feed_back.dart'; import 'package:PiliPlus/utils/global_data.dart'; @@ -42,7 +43,7 @@ import 'package:PiliPlus/utils/utils.dart'; import 'package:expandable/expandable.dart'; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; -import 'package:get/get.dart'; +import 'package:get/get.dart' hide ContextExtensionss; class UgcIntroController extends CommonIntroController with ReloadMixin { late ExpandableController expandableCtr; @@ -73,8 +74,7 @@ class UgcIntroController extends CommonIntroController with ReloadMixin { ); if (!alwaysExapndIntroPanel && Pref.exapndIntroPanelH) { WidgetsBinding.instance.addPostFrameCallback((_) { - if (Get.context!.orientation == Orientation.landscape && - expandableCtr.expanded == false) { + if (!expandableCtr.expanded && Get.context!.isLandscape) { expandableCtr.toggle(); } }); diff --git a/lib/pages/video/introduction/ugc/view.dart b/lib/pages/video/introduction/ugc/view.dart index fc63bb7e9..d57a225ca 100644 --- a/lib/pages/video/introduction/ugc/view.dart +++ b/lib/pages/video/introduction/ugc/view.dart @@ -18,6 +18,7 @@ import 'package:PiliPlus/pages/video/introduction/ugc/widgets/action_item.dart'; import 'package:PiliPlus/pages/video/introduction/ugc/widgets/page.dart'; import 'package:PiliPlus/pages/video/introduction/ugc/widgets/season.dart'; import 'package:PiliPlus/utils/app_scheme.dart'; +import 'package:PiliPlus/utils/context_ext.dart'; import 'package:PiliPlus/utils/date_util.dart'; import 'package:PiliPlus/utils/extension.dart'; import 'package:PiliPlus/utils/feed_back.dart'; @@ -32,7 +33,7 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart' show HapticFeedback; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; -import 'package:get/get.dart'; +import 'package:get/get.dart' hide ContextExtensionss; import 'package:material_design_icons_flutter/material_design_icons_flutter.dart'; class UgcIntroPanel extends StatefulWidget { @@ -810,7 +811,7 @@ class _UgcIntroPanelState extends State style: TextStyle( fontSize: 13, color: (item.vip?.status ?? 0) > 0 && item.vip?.type == 2 - ? context.vipColor + ? theme.colorScheme.vipColor : null, ), ), @@ -859,7 +860,7 @@ class _UgcIntroPanelState extends State style: TextStyle( fontSize: 13, color: isVip && userStat.card?.vip?.type == 2 - ? context.vipColor + ? theme.colorScheme.vipColor : null, ), ), diff --git a/lib/pages/video/member/view.dart b/lib/pages/video/member/view.dart index 6b8971729..c484b58f0 100644 --- a/lib/pages/video/member/view.dart +++ b/lib/pages/video/member/view.dart @@ -19,6 +19,7 @@ import 'package:PiliPlus/services/account_service.dart'; import 'package:PiliPlus/utils/extension.dart'; import 'package:PiliPlus/utils/grid.dart'; import 'package:PiliPlus/utils/num_util.dart'; +import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/request_utils.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:flutter/material.dart'; @@ -250,7 +251,7 @@ class _HorizontalMemberPageState extends State { color: (memberInfoModel.vip?.status ?? -1) > 0 && memberInfoModel.vip?.type == 2 - ? context.vipColor + ? theme.colorScheme.vipColor : null, ), ), @@ -391,7 +392,7 @@ class _HorizontalMemberPageState extends State { Widget _buildAvatar(String face) => GestureDetector( onTap: () { widget.videoDetailController.onViewImage(); - context.imageView( + PageUtils.imageView( imgList: [SourceModel(url: face)], onDismissed: widget.videoDetailController.onDismissed, ); diff --git a/lib/pages/video/note/view.dart b/lib/pages/video/note/view.dart index 3fe92e464..af73866f9 100644 --- a/lib/pages/video/note/view.dart +++ b/lib/pages/video/note/view.dart @@ -242,7 +242,7 @@ class _NoteListPageState extends CommonSlidePageState { item.author?.vipInfo?.status != null && item.author!.vipInfo!.status > 0 && item.author!.vipInfo!.type == 2 - ? context.vipColor + ? theme.colorScheme.vipColor : theme.colorScheme.outline, fontSize: 13, ), diff --git a/lib/pages/video/reply/widgets/reply_item_grpc.dart b/lib/pages/video/reply/widgets/reply_item_grpc.dart index d13b953f6..60ea228b9 100644 --- a/lib/pages/video/reply/widgets/reply_item_grpc.dart +++ b/lib/pages/video/reply/widgets/reply_item_grpc.dart @@ -18,6 +18,7 @@ import 'package:PiliPlus/pages/save_panel/view.dart'; import 'package:PiliPlus/pages/video/controller.dart'; import 'package:PiliPlus/pages/video/reply/widgets/zan_grpc.dart'; import 'package:PiliPlus/utils/accounts.dart'; +import 'package:PiliPlus/utils/context_ext.dart'; import 'package:PiliPlus/utils/date_util.dart'; import 'package:PiliPlus/utils/duration_util.dart'; import 'package:PiliPlus/utils/extension.dart'; @@ -34,7 +35,7 @@ import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; -import 'package:get/get.dart'; +import 'package:get/get.dart' hide ContextExtensionss; class ReplyItemGrpc extends StatelessWidget { const ReplyItemGrpc({ @@ -216,7 +217,7 @@ class ReplyItemGrpc extends StatelessWidget { color: (replyItem.member.vipStatus > 0 && replyItem.member.vipType == 2) - ? context.vipColor + ? theme.colorScheme.vipColor : theme.colorScheme.outline, fontSize: 13, ), diff --git a/lib/pages/video/reply_new/view.dart b/lib/pages/video/reply_new/view.dart index 89b7b10d7..8bc460e24 100644 --- a/lib/pages/video/reply_new/view.dart +++ b/lib/pages/video/reply_new/view.dart @@ -16,13 +16,14 @@ import 'package:PiliPlus/pages/dynamics_mention/controller.dart'; import 'package:PiliPlus/pages/emote/view.dart'; import 'package:PiliPlus/pages/video/controller.dart'; import 'package:PiliPlus/pages/video/reply_search_item/view.dart'; +import 'package:PiliPlus/utils/context_ext.dart'; import 'package:PiliPlus/utils/duration_util.dart'; import 'package:PiliPlus/utils/grid.dart'; import 'package:PiliPlus/utils/storage_pref.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:flutter/material.dart' hide TextField; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; -import 'package:get/get.dart'; +import 'package:get/get.dart' hide ContextExtensionss; import 'package:path_provider/path_provider.dart'; class ReplyPage extends CommonRichTextPubPage { diff --git a/lib/pages/video/reply_reply/view.dart b/lib/pages/video/reply_reply/view.dart index 9ad5d9788..edfa53279 100644 --- a/lib/pages/video/reply_reply/view.dart +++ b/lib/pages/video/reply_reply/view.dart @@ -7,11 +7,12 @@ import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/pages/common/common_slide_page.dart'; import 'package:PiliPlus/pages/video/reply/widgets/reply_item_grpc.dart'; import 'package:PiliPlus/pages/video/reply_reply/controller.dart'; +import 'package:PiliPlus/utils/context_ext.dart'; import 'package:PiliPlus/utils/num_util.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:flutter/material.dart'; -import 'package:get/get.dart'; +import 'package:get/get.dart' hide ContextExtensionss; import 'package:scrollable_positioned_list/scrollable_positioned_list.dart'; class VideoReplyReplyPanel extends CommonSlidePage { diff --git a/lib/pages/video/view.dart b/lib/pages/video/view.dart index aed8a3c50..8ac7a72d6 100644 --- a/lib/pages/video/view.dart +++ b/lib/pages/video/view.dart @@ -43,6 +43,7 @@ import 'package:PiliPlus/plugin/pl_player/view.dart'; import 'package:PiliPlus/services/service_locator.dart'; import 'package:PiliPlus/services/shutdown_timer_service.dart'; import 'package:PiliPlus/utils/accounts.dart'; +import 'package:PiliPlus/utils/context_ext.dart'; import 'package:PiliPlus/utils/extension.dart'; import 'package:PiliPlus/utils/image_util.dart'; import 'package:PiliPlus/utils/num_util.dart'; @@ -60,7 +61,7 @@ import 'package:flutter/rendering.dart'; import 'package:flutter/services.dart' show SystemUiOverlayStyle; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; -import 'package:get/get.dart'; +import 'package:get/get.dart' hide ContextExtensionss; import 'package:screen_brightness/screen_brightness.dart'; class VideoDetailPageV extends StatefulWidget { @@ -537,8 +538,7 @@ class _VideoDetailPageVState extends State } Widget get childWhenDisabled { - final isPortrait = - MediaQuery.orientationOf(context) == Orientation.portrait; + final isPortrait = context.isPortrait; final useSafeArea = !removeSafeArea && isPortrait && isFullScreen; final size = MediaQuery.sizeOf(context); final double width = size.width; @@ -606,9 +606,7 @@ class _VideoDetailPageVState extends State controller: videoDetailController.scrollCtr, onlyOneScrollInBody: true, pinnedHeaderSliverHeightBuilder: () { - double pinnedHeight = - isFullScreen || - MediaQuery.orientationOf(context) == Orientation.landscape + double pinnedHeight = isFullScreen || context.isLandscape ? MediaQuery.sizeOf(context).height : videoDetailController.isExpanding || videoDetailController.isCollapsing @@ -1586,8 +1584,7 @@ class _VideoDetailPageVState extends State return PopScope( canPop: !isFullScreen && - (videoDetailController.horizontalScreen || - MediaQuery.orientationOf(context) == Orientation.portrait), + (videoDetailController.horizontalScreen || context.isPortrait), onPopInvokedWithResult: _onPopInvokedWithResult, child: Stack( clipBehavior: Clip.none, @@ -1796,9 +1793,7 @@ class _VideoDetailPageVState extends State child: SizedBox( height: bottom + - (videoDetailController.isPlayAll && - MediaQuery.orientationOf(context) == - Orientation.landscape + (videoDetailController.isPlayAll && context.isLandscape ? 75 : 0), ), @@ -2183,8 +2178,7 @@ class _VideoDetailPageVState extends State if (isFullScreen) { plPlayerController!.triggerFullScreen(status: false); } - if (MediaQuery.orientationOf(context) == Orientation.landscape && - !videoDetailController.horizontalScreen) { + if (!videoDetailController.horizontalScreen && context.isLandscape) { verticalScreenForTwoSeconds(); } } diff --git a/lib/pages/video/widgets/header_control.dart b/lib/pages/video/widgets/header_control.dart index 8a77fbc03..408de901e 100644 --- a/lib/pages/video/widgets/header_control.dart +++ b/lib/pages/video/widgets/header_control.dart @@ -1872,9 +1872,7 @@ class HeaderControlState extends State { onPressed: () { if (isFullScreen) { widget.controller.triggerFullScreen(status: false); - } else if (MediaQuery.orientationOf(context) == - Orientation.landscape && - !horizontalScreen) { + } else if (!horizontalScreen && context.isLandscape) { verticalScreenForTwoSeconds(); } else { Get.back(); @@ -1882,8 +1880,7 @@ class HeaderControlState extends State { }, ), ), - if (!isFullScreen || - MediaQuery.orientationOf(context) != Orientation.portrait) + if (!isFullScreen || context.isLandscape) SizedBox( width: 42, height: 34, @@ -1904,8 +1901,7 @@ class HeaderControlState extends State { (isFullScreen || (!isFullScreen && !horizontalScreen && - MediaQuery.orientationOf(context) == - Orientation.landscape))) + context.isLandscape))) Expanded( child: Column( mainAxisSize: MainAxisSize.min, @@ -2006,8 +2002,7 @@ class HeaderControlState extends State { Obx( () { if ((isFullScreen || !horizontalScreen) && - MediaQuery.orientationOf(context) == - Orientation.landscape) { + context.isLandscape) { startClock(); return Text( now.value, diff --git a/lib/pages/webdav/webdav.dart b/lib/pages/webdav/webdav.dart index 1fcc89371..c7f8c18c9 100644 --- a/lib/pages/webdav/webdav.dart +++ b/lib/pages/webdav/webdav.dart @@ -1,10 +1,11 @@ import 'dart:convert'; import 'package:PiliPlus/common/widgets/pair.dart'; +import 'package:PiliPlus/utils/context_ext.dart'; import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/storage_pref.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; -import 'package:get/get.dart'; +import 'package:get/get.dart' hide ContextExtensionss; import 'package:webdav_client/webdav_client.dart' as webdav; class WebDav { diff --git a/lib/pages/whisper/widgets/item.dart b/lib/pages/whisper/widgets/item.dart index 62c58d25c..abcce5568 100644 --- a/lib/pages/whisper/widgets/item.dart +++ b/lib/pages/whisper/widgets/item.dart @@ -209,7 +209,7 @@ class WhisperSessionItem extends StatelessWidget { vipInfo?['status'] != null && vipInfo!['status'] > 0 && vipInfo['type'] == 2 - ? context.vipColor + ? theme.colorScheme.vipColor : null, ), ), diff --git a/lib/pages/whisper_detail/widget/chat_item.dart b/lib/pages/whisper_detail/widget/chat_item.dart index ef0b27ace..d6d8fddb3 100644 --- a/lib/pages/whisper_detail/widget/chat_item.dart +++ b/lib/pages/whisper_detail/widget/chat_item.dart @@ -13,7 +13,6 @@ import 'package:PiliPlus/models/common/image_type.dart'; import 'package:PiliPlus/utils/app_scheme.dart'; import 'package:PiliPlus/utils/date_util.dart'; import 'package:PiliPlus/utils/duration_util.dart'; -import 'package:PiliPlus/utils/extension.dart'; import 'package:PiliPlus/utils/id_utils.dart'; import 'package:PiliPlus/utils/image_util.dart'; import 'package:PiliPlus/utils/page_utils.dart'; @@ -177,7 +176,7 @@ class ChatItem extends StatelessWidget { case MsgType.EN_MSG_TYPE_TEXT: return msgTypeText_1(theme, content: content, textColor: textColor); case MsgType.EN_MSG_TYPE_PIC: - return msgTypePic_2(context, content); + return msgTypePic_2(content); case MsgType.EN_MSG_TYPE_SHARE_V2: return msgTypeShareV2_7(content, textColor); case MsgType.EN_MSG_TYPE_VIDEO_CARD: @@ -588,10 +587,10 @@ class ChatItem extends StatelessWidget { ); } - Widget msgTypePic_2(BuildContext context, content) { + Widget msgTypePic_2(content) { final url = content['url']; return GestureDetector( - onTap: () => context.imageView(imgList: [SourceModel(url: url)]), + onTap: () => PageUtils.imageView(imgList: [SourceModel(url: url)]), child: Hero( tag: url, child: NetworkImgLayer( diff --git a/lib/pages/whisper_link_setting/view.dart b/lib/pages/whisper_link_setting/view.dart index 98648ebaf..463768267 100644 --- a/lib/pages/whisper_link_setting/view.dart +++ b/lib/pages/whisper_link_setting/view.dart @@ -141,7 +141,7 @@ class _WhisperLinkSettingPageState extends State { item.vip?.status != null && item.vip!.status > 0 && item.vip?.type == 2 - ? context.vipColor + ? theme.colorScheme.vipColor : null, ), ), diff --git a/lib/plugin/pl_player/view.dart b/lib/plugin/pl_player/view.dart index 30beca68f..6fc611f1b 100644 --- a/lib/plugin/pl_player/view.dart +++ b/lib/plugin/pl_player/view.dart @@ -27,6 +27,7 @@ import 'package:PiliPlus/plugin/pl_player/widgets/bottom_control.dart'; import 'package:PiliPlus/plugin/pl_player/widgets/common_btn.dart'; import 'package:PiliPlus/plugin/pl_player/widgets/forward_seek.dart'; import 'package:PiliPlus/plugin/pl_player/widgets/play_pause_btn.dart'; +import 'package:PiliPlus/utils/context_ext.dart'; import 'package:PiliPlus/utils/duration_util.dart'; import 'package:PiliPlus/utils/extension.dart'; import 'package:PiliPlus/utils/id_utils.dart'; @@ -38,7 +39,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:flutter_volume_controller/flutter_volume_controller.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; -import 'package:get/get.dart'; +import 'package:get/get.dart' hide ContextExtensionss; import 'package:material_design_icons_flutter/material_design_icons_flutter.dart'; import 'package:media_kit/media_kit.dart'; import 'package:media_kit_video/media_kit_video.dart'; @@ -951,8 +952,8 @@ class _PLVideoPlayerState extends State if (plPlayerController.controlsLock.value) return; if (details.localPosition.dy < 40) return; if (details.localPosition.dx < 40) return; - if (details.localPosition.dx > context.width - 40) return; - if (details.localPosition.dy > context.height - 40) return; + if (details.localPosition.dx > maxWidth - 40) return; + if (details.localPosition.dy > maxHeight - 40) return; _initialFocalPoint = details.localPosition; _gestureType = null; }, diff --git a/lib/utils/context_ext.dart b/lib/utils/context_ext.dart new file mode 100644 index 000000000..961e93db0 --- /dev/null +++ b/lib/utils/context_ext.dart @@ -0,0 +1,74 @@ +import 'package:flutter/material.dart'; + +/// from Getx +extension ContextExtensions on BuildContext { + /// The same of [MediaQuery.of(context).size] + Size get mediaQuerySize => MediaQuery.sizeOf(this); + + /// The same of [MediaQuery.of(context).size.height] + /// Note: updates when you rezise your screen (like on a browser or + /// desktop window) + double get height => mediaQuerySize.height; + + /// The same of [MediaQuery.of(context).size.width] + /// Note: updates when you rezise your screen (like on a browser or + /// desktop window) + double get width => mediaQuerySize.width; + + /// similar to [MediaQuery.of(context).padding] + ThemeData get theme => Theme.of(this); + + /// Check if dark mode theme is enable + bool get isDarkMode => (theme.brightness == Brightness.dark); + + /// give access to Theme.of(context).iconTheme.color + Color? get iconColor => theme.iconTheme.color; + + /// similar to [MediaQuery.of(context).padding] + TextTheme get textTheme => Theme.of(this).textTheme; + + /// similar to [MediaQuery.of(context).padding] + EdgeInsets get mediaQueryPadding => MediaQuery.paddingOf(this); + + /// similar to [MediaQuery.of(context).padding] + MediaQueryData get mediaQuery => MediaQuery.of(this); + + /// similar to [MediaQuery.of(context).viewPadding] + EdgeInsets get mediaQueryViewPadding => MediaQuery.viewPaddingOf(this); + + /// similar to [MediaQuery.of(context).viewInsets] + EdgeInsets get mediaQueryViewInsets => MediaQuery.viewInsetsOf(this); + + /// similar to [MediaQuery.of(context).orientation] + Orientation get orientation => MediaQuery.orientationOf(this); + + /// check if device is on landscape mode + bool get isLandscape => orientation == Orientation.landscape; + + /// check if device is on portrait mode + bool get isPortrait => orientation == Orientation.portrait; + + /// similar to [MediaQuery.of(this).devicePixelRatio] + double get devicePixelRatio => MediaQuery.devicePixelRatioOf(this); + + /// similar to [MediaQuery.of(this).textScaleFactor] + double get textScaleFactor => MediaQuery.textScaleFactorOf(this); + + /// get the shortestSide from screen + double get mediaQueryShortestSide => mediaQuerySize.shortestSide; + + /// True if width be larger than 800 + bool get showNavbar => (width > 800); + + /// True if the shortestSide is smaller than 600p + bool get isPhone => (mediaQueryShortestSide < 600); + + /// True if the shortestSide is largest than 600p + bool get isSmallTablet => (mediaQueryShortestSide >= 600); + + /// True if the shortestSide is largest than 720p + bool get isLargeTablet => (mediaQueryShortestSide >= 720); + + /// True if the current device is Tablet + bool get isTablet => isSmallTablet || isLargeTablet; +} diff --git a/lib/utils/extension.dart b/lib/utils/extension.dart index 51cd405fa..124436709 100644 --- a/lib/utils/extension.dart +++ b/lib/utils/extension.dart @@ -1,13 +1,9 @@ import 'package:PiliPlus/common/widgets/dialog/dialog.dart'; -import 'package:PiliPlus/common/widgets/interactiveviewer_gallery/hero_dialog_route.dart'; -import 'package:PiliPlus/common/widgets/interactiveviewer_gallery/interactiveviewer_gallery.dart'; import 'package:PiliPlus/grpc/bilibili/app/im/v1.pbenum.dart' show IMSettingType, ThreeDotItemType; -import 'package:PiliPlus/models/common/image_preview_type.dart'; import 'package:PiliPlus/pages/common/common_whisper_controller.dart'; import 'package:PiliPlus/pages/contact/view.dart'; import 'package:PiliPlus/pages/whisper_settings/view.dart'; -import 'package:PiliPlus/utils/global_data.dart'; import 'package:floating/floating.dart'; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; @@ -81,32 +77,9 @@ extension StringExt on String? { bool get isNullOrEmpty => this == null || this!.isEmpty; } -extension BuildContextExt on BuildContext { - Color get vipColor { - return Theme.of(this).brightness == Brightness.light - ? const Color(0xFFFF6699) - : const Color(0xFFD44E7D); - } - - Future imageView({ - int initialPage = 0, - required List imgList, - ValueChanged? onDismissed, - int? quality, - }) { - bool isMemberPage = Get.currentRoute.startsWith('/member?'); - return Navigator.of(this).push( - HeroDialogRoute( - builder: (context) => InteractiveviewerGallery( - sources: imgList, - initIndex: initialPage, - onDismissed: onDismissed, - setStatusBar: !isMemberPage, - quality: quality ?? GlobalData().imgQuality, - ), - ), - ); - } +extension ColorSchemeExt on ColorScheme { + Color get vipColor => + brightness.isLight ? const Color(0xFFFF6699) : const Color(0xFFD44E7D); } extension Unique on List { @@ -125,8 +98,11 @@ extension ColorExtension on Color { } extension BrightnessExt on Brightness { - Brightness get reverse => - this == Brightness.light ? Brightness.dark : Brightness.light; + Brightness get reverse => isLight ? Brightness.dark : Brightness.light; + + bool get isLight => this == Brightness.light; + + bool get isDark => this == Brightness.dark; } extension RationalExt on Rational { diff --git a/lib/utils/page_utils.dart b/lib/utils/page_utils.dart index d56d34361..da67ec387 100644 --- a/lib/utils/page_utils.dart +++ b/lib/utils/page_utils.dart @@ -1,5 +1,6 @@ import 'dart:math'; +import 'package:PiliPlus/common/widgets/interactiveviewer_gallery/hero_dialog_route.dart'; import 'package:PiliPlus/common/widgets/interactiveviewer_gallery/interactiveviewer_gallery.dart'; import 'package:PiliPlus/grpc/im.dart'; import 'package:PiliPlus/http/dynamics.dart'; @@ -17,6 +18,7 @@ import 'package:PiliPlus/pages/video/introduction/ugc/widgets/menu_row.dart'; import 'package:PiliPlus/plugin/pl_player/controller.dart'; import 'package:PiliPlus/services/shutdown_timer_service.dart'; import 'package:PiliPlus/utils/app_scheme.dart'; +import 'package:PiliPlus/utils/context_ext.dart'; import 'package:PiliPlus/utils/extension.dart'; import 'package:PiliPlus/utils/feed_back.dart'; import 'package:PiliPlus/utils/global_data.dart'; @@ -29,10 +31,30 @@ import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/material.dart'; import 'package:flutter/services.dart' show FilteringTextInputFormatter; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; -import 'package:get/get.dart'; +import 'package:get/get.dart' hide ContextExtensionss; import 'package:url_launcher/url_launcher.dart'; class PageUtils { + static Future imageView({ + int initialPage = 0, + required List imgList, + ValueChanged? onDismissed, + int? quality, + }) { + bool isMemberPage = Get.currentRoute.startsWith('/member?'); + return Navigator.of(Get.context!).push( + HeroDialogRoute( + builder: (context) => InteractiveviewerGallery( + sources: imgList, + initIndex: initialPage, + onDismissed: onDismissed, + setStatusBar: !isMemberPage, + quality: quality ?? GlobalData().imgQuality, + ), + ), + ); + } + static Future pmShare( BuildContext context, { required Map content, @@ -625,7 +647,7 @@ class PageUtils { barrierLabel: '', barrierDismissible: true, pageBuilder: (buildContext, animation, secondaryAnimation) { - return MediaQuery.orientationOf(Get.context!) == Orientation.portrait + return Get.context!.isPortrait ? SafeArea( child: Column( children: [ @@ -647,8 +669,7 @@ class PageUtils { }, transitionDuration: const Duration(milliseconds: 350), transitionBuilder: (context, animation, secondaryAnimation, child) { - Offset begin = - MediaQuery.orientationOf(Get.context!) == Orientation.portrait + Offset begin = Get.context!.isPortrait ? const Offset(0.0, 1.0) : const Offset(1.0, 0.0); var tween = Tween( diff --git a/lib/utils/request_utils.dart b/lib/utils/request_utils.dart index 4a3e84f9e..899bfcd1b 100644 --- a/lib/utils/request_utils.dart +++ b/lib/utils/request_utils.dart @@ -23,13 +23,14 @@ import 'package:PiliPlus/pages/dynamics_tab/controller.dart'; import 'package:PiliPlus/pages/group_panel/view.dart'; import 'package:PiliPlus/pages/later/controller.dart'; import 'package:PiliPlus/utils/accounts.dart'; +import 'package:PiliPlus/utils/context_ext.dart'; import 'package:PiliPlus/utils/feed_back.dart'; import 'package:PiliPlus/utils/storage_pref.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; -import 'package:get/get.dart'; +import 'package:get/get.dart' hide ContextExtensionss; import 'package:gt3_flutter_plugin/gt3_flutter_plugin.dart'; class RequestUtils { diff --git a/lib/utils/storage_pref.dart b/lib/utils/storage_pref.dart index ed2167a73..8c0f7b198 100644 --- a/lib/utils/storage_pref.dart +++ b/lib/utils/storage_pref.dart @@ -20,11 +20,12 @@ import 'package:PiliPlus/models/user/danmaku_rule.dart'; import 'package:PiliPlus/plugin/pl_player/models/bottom_progress_behavior.dart'; import 'package:PiliPlus/plugin/pl_player/models/fullscreen_mode.dart'; import 'package:PiliPlus/plugin/pl_player/models/play_repeat.dart'; +import 'package:PiliPlus/utils/context_ext.dart'; import 'package:PiliPlus/utils/global_data.dart'; import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/storage_key.dart'; import 'package:flutter/material.dart'; -import 'package:get/get.dart'; +import 'package:get/get.dart' hide ContextExtensionss; import 'package:hive/hive.dart'; import 'package:uuid/uuid.dart';