diff --git a/lib/common/widgets/badge.dart b/lib/common/widgets/badge.dart index 6eb745745..bd10cebe5 100644 --- a/lib/common/widgets/badge.dart +++ b/lib/common/widgets/badge.dart @@ -1,5 +1,6 @@ import 'package:PiliPlus/models/common/badge_type.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/string_ext.dart'; +import 'package:PiliPlus/utils/extension/theme_ext.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; diff --git a/lib/common/widgets/custom_tooltip.dart b/lib/common/widgets/custom_tooltip.dart index 17dec22f0..52696e0aa 100644 --- a/lib/common/widgets/custom_tooltip.dart +++ b/lib/common/widgets/custom_tooltip.dart @@ -1,7 +1,7 @@ import 'dart:math' as math; import 'dart:ui' show clampDouble; -import 'package:PiliPlus/utils/utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; @@ -150,7 +150,7 @@ class CustomTooltipState extends State @override Widget build(BuildContext context) { Widget result; - if (Utils.isMobile) { + if (PlatformUtils.isMobile) { result = Listener( onPointerDown: _handlePointerDown, behavior: HitTestBehavior.opaque, @@ -215,7 +215,7 @@ class _CustomTooltipOverlay extends StatelessWidget { ), ], ); - if (Utils.isMobile) { + if (PlatformUtils.isMobile) { return GestureDetector( behavior: HitTestBehavior.opaque, onTap: onDismiss, diff --git a/lib/common/widgets/dialog/report.dart b/lib/common/widgets/dialog/report.dart index 13ec24a66..6ff44848a 100644 --- a/lib/common/widgets/dialog/report.dart +++ b/lib/common/widgets/dialog/report.dart @@ -1,5 +1,5 @@ import 'package:PiliPlus/common/widgets/radio_widget.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/string_ext.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; diff --git a/lib/common/widgets/image/custom_grid_view.dart b/lib/common/widgets/image/custom_grid_view.dart index 7ef2ddf14..4f13cc326 100644 --- a/lib/common/widgets/image/custom_grid_view.dart +++ b/lib/common/widgets/image/custom_grid_view.dart @@ -23,8 +23,9 @@ import 'package:PiliPlus/common/widgets/flutter/custom_layout.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/models/common/badge_type.dart'; import 'package:PiliPlus/models/common/image_preview_type.dart'; -import 'package:PiliPlus/utils/context_ext.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/context_ext.dart'; +import 'package:PiliPlus/utils/extension/num_ext.dart'; +import 'package:PiliPlus/utils/extension/size_ext.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/storage_pref.dart'; import 'package:flutter/material.dart' diff --git a/lib/common/widgets/image/image_save.dart b/lib/common/widgets/image/image_save.dart index 9fecfc772..a63256138 100644 --- a/lib/common/widgets/image/image_save.dart +++ b/lib/common/widgets/image/image_save.dart @@ -3,7 +3,7 @@ import 'package:PiliPlus/common/widgets/button/icon_button.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/http/user.dart'; import 'package:PiliPlus/utils/image_utils.dart'; -import 'package:PiliPlus/utils/utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; @@ -105,7 +105,7 @@ void imageSaveDialog({ icon: const Icon(Icons.watch_later_outlined), ), if (cover != null && cover.isNotEmpty) ...[ - if (Utils.isMobile) + if (PlatformUtils.isMobile) iconBtn( tooltip: '分享', onPressed: () { diff --git a/lib/common/widgets/image/network_img_layer.dart b/lib/common/widgets/image/network_img_layer.dart index e7b5d8bd0..ebb276876 100644 --- a/lib/common/widgets/image/network_img_layer.dart +++ b/lib/common/widgets/image/network_img_layer.dart @@ -1,6 +1,6 @@ import 'package:PiliPlus/common/constants.dart'; import 'package:PiliPlus/models/common/image_type.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/num_ext.dart'; import 'package:PiliPlus/utils/image_utils.dart'; import 'package:PiliPlus/utils/storage_pref.dart'; import 'package:cached_network_image/cached_network_image.dart'; diff --git a/lib/common/widgets/interactiveviewer_gallery/interactiveviewer_gallery.dart b/lib/common/widgets/interactiveviewer_gallery/interactiveviewer_gallery.dart index a46434e31..01e29386f 100644 --- a/lib/common/widgets/interactiveviewer_gallery/interactiveviewer_gallery.dart +++ b/lib/common/widgets/interactiveviewer_gallery/interactiveviewer_gallery.dart @@ -2,9 +2,10 @@ import 'dart:io'; import 'package:PiliPlus/common/widgets/interactiveviewer_gallery/interactive_viewer_boundary.dart'; import 'package:PiliPlus/models/common/image_preview_type.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/string_ext.dart'; import 'package:PiliPlus/utils/image_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/storage_pref.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:cached_network_image/cached_network_image.dart'; @@ -272,7 +273,7 @@ class _InteractiveviewerGalleryState extends State onDoubleTap, ), onLongPress: !isFileImg ? () => onLongPress(item) : null, - onSecondaryTap: !isFileImg && !Utils.isMobile + onSecondaryTap: !isFileImg && !PlatformUtils.isMobile ? () => onLongPress(item) : null, child: widget.itemBuilder != null @@ -415,7 +416,7 @@ class _InteractiveviewerGalleryState extends State content: Column( mainAxisSize: MainAxisSize.min, children: [ - if (Utils.isMobile) + if (PlatformUtils.isMobile) ListTile( onTap: () { Get.back(); @@ -443,7 +444,7 @@ class _InteractiveviewerGalleryState extends State dense: true, title: const Text('保存图片', style: TextStyle(fontSize: 14)), ), - if (Utils.isDesktop) + if (PlatformUtils.isDesktop) ListTile( onTap: () { Get.back(); diff --git a/lib/common/widgets/pendant_avatar.dart b/lib/common/widgets/pendant_avatar.dart index 9384cfd15..fd065381e 100644 --- a/lib/common/widgets/pendant_avatar.dart +++ b/lib/common/widgets/pendant_avatar.dart @@ -1,7 +1,7 @@ import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/models/common/avatar_badge_type.dart'; import 'package:PiliPlus/models/common/image_type.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/string_ext.dart'; import 'package:PiliPlus/utils/image_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/storage_pref.dart'; diff --git a/lib/common/widgets/video_card/video_card_h.dart b/lib/common/widgets/video_card/video_card_h.dart index bf31a70e3..9507aaec6 100644 --- a/lib/common/widgets/video_card/video_card_h.dart +++ b/lib/common/widgets/video_card/video_card_h.dart @@ -14,7 +14,7 @@ import 'package:PiliPlus/models/search/result.dart'; import 'package:PiliPlus/utils/date_utils.dart'; import 'package:PiliPlus/utils/duration_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; -import 'package:PiliPlus/utils/utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; @@ -70,7 +70,7 @@ class VideoCardH extends StatelessWidget { children: [ InkWell( onLongPress: onLongPress, - onSecondaryTap: Utils.isMobile ? null : onLongPress, + onSecondaryTap: PlatformUtils.isMobile ? null : onLongPress, onTap: onTap ?? () async { diff --git a/lib/common/widgets/video_card/video_card_v.dart b/lib/common/widgets/video_card/video_card_v.dart index c54b2f2d4..0023cc372 100644 --- a/lib/common/widgets/video_card/video_card_v.dart +++ b/lib/common/widgets/video_card/video_card_v.dart @@ -13,6 +13,7 @@ import 'package:PiliPlus/utils/date_utils.dart'; import 'package:PiliPlus/utils/duration_utils.dart'; import 'package:PiliPlus/utils/id_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; @@ -80,7 +81,7 @@ class VideoCardV extends StatelessWidget { child: InkWell( onTap: () => onPushDetail(Utils.makeHeroTag(videoItem.aid)), onLongPress: onLongPress, - onSecondaryTap: Utils.isMobile ? null : onLongPress, + onSecondaryTap: PlatformUtils.isMobile ? null : onLongPress, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ diff --git a/lib/http/download.dart b/lib/http/download.dart index 5ba2e4d99..92ad6a963 100644 --- a/lib/http/download.dart +++ b/lib/http/download.dart @@ -8,7 +8,7 @@ import 'package:PiliPlus/models/video/play/url.dart'; import 'package:PiliPlus/models_new/download/bili_download_entry_info.dart'; import 'package:PiliPlus/models_new/download/bili_download_media_file_info.dart'; import 'package:PiliPlus/utils/accounts.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/iterable_ext.dart'; import 'package:PiliPlus/utils/storage_pref.dart'; import 'package:PiliPlus/utils/video_utils.dart'; import 'package:get/get_utils/get_utils.dart'; diff --git a/lib/http/search.dart b/lib/http/search.dart index c110fdd90..702a43dfd 100644 --- a/lib/http/search.dart +++ b/lib/http/search.dart @@ -10,7 +10,7 @@ import 'package:PiliPlus/models_new/dynamic/dyn_topic_pub_search/data.dart'; import 'package:PiliPlus/models_new/pgc/pgc_info_model/result.dart'; import 'package:PiliPlus/models_new/search/search_rcmd/data.dart'; import 'package:PiliPlus/models_new/search/search_trending/data.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/iterable_ext.dart'; import 'package:PiliPlus/utils/request_utils.dart'; import 'package:PiliPlus/utils/wbi_sign.dart'; import 'package:dio/dio.dart'; diff --git a/lib/http/ua_type.dart b/lib/http/ua_type.dart index 10dc27e38..124b56525 100644 --- a/lib/http/ua_type.dart +++ b/lib/http/ua_type.dart @@ -1,4 +1,4 @@ -import 'package:PiliPlus/utils/utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; enum UaType { mob( @@ -9,7 +9,7 @@ enum UaType { ) ; - static UaType get platformUA => Utils.isMobile ? mob : pc; + static UaType get platformUA => PlatformUtils.isMobile ? mob : pc; final String ua; const UaType(this.ua); diff --git a/lib/http/video.dart b/lib/http/video.dart index 9c4c36506..7c8c6df96 100644 --- a/lib/http/video.dart +++ b/lib/http/video.dart @@ -27,7 +27,7 @@ import 'package:PiliPlus/models_new/video/video_play_info/data.dart'; import 'package:PiliPlus/models_new/video/video_relation/data.dart'; import 'package:PiliPlus/utils/accounts.dart'; import 'package:PiliPlus/utils/app_sign.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/string_ext.dart'; import 'package:PiliPlus/utils/global_data.dart'; import 'package:PiliPlus/utils/id_utils.dart'; import 'package:PiliPlus/utils/recommend_filter.dart'; diff --git a/lib/main.dart b/lib/main.dart index 4d06e4e90..2e3d53821 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -18,6 +18,7 @@ import 'package:PiliPlus/utils/date_utils.dart'; import 'package:PiliPlus/utils/json_file_handler.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/path_utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/request_utils.dart'; import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/storage_key.dart'; @@ -55,7 +56,7 @@ void main() async { if (kDebugMode) debugPrint('GStorage init error: $e'); exit(0); } - if (Utils.isDesktop) { + if (PlatformUtils.isDesktop) { final customDownPath = Pref.downloadPath; if (customDownPath != null && customDownPath.isNotEmpty) { try { @@ -89,7 +90,7 @@ void main() async { CacheManager.autoClearCache(); - if (Utils.isMobile) { + if (PlatformUtils.isMobile) { await Future.wait([ SystemChrome.setPreferredOrientations( [ @@ -122,7 +123,7 @@ void main() async { displayType: SmartToastType.onlyRefresh, ); - if (Utils.isMobile) { + if (PlatformUtils.isMobile) { PiliScheme.init(); SystemChrome.setEnabledSystemUIMode(SystemUiMode.edgeToEdge); SystemChrome.setSystemUIOverlayStyle( @@ -149,7 +150,7 @@ void main() async { FlutterDisplayMode.setPreferredMode(displayMode ?? DisplayMode.auto); }); } - } else if (Utils.isDesktop) { + } else if (PlatformUtils.isDesktop) { await windowManager.ensureInitialized(); WindowOptions windowOptions = WindowOptions( @@ -304,7 +305,7 @@ class MyApp extends StatelessWidget { ), child: child!, ); - if (Utils.isDesktop) { + if (PlatformUtils.isDesktop) { return Focus( canRequestFocus: false, onKeyEvent: (_, event) { @@ -336,7 +337,7 @@ class MyApp extends StatelessWidget { PointerDeviceKind.invertedStylus, PointerDeviceKind.trackpad, PointerDeviceKind.unknown, - if (Utils.isDesktop) PointerDeviceKind.mouse, + if (PlatformUtils.isDesktop) PointerDeviceKind.mouse, }, ), ); diff --git a/lib/models/dynamics/result.dart b/lib/models/dynamics/result.dart index 5e87fb65b..3089a86da 100644 --- a/lib/models/dynamics/result.dart +++ b/lib/models/dynamics/result.dart @@ -5,7 +5,7 @@ import 'package:PiliPlus/models/common/dynamic/dynamics_type.dart'; import 'package:PiliPlus/models/dynamics/article_content_model.dart'; import 'package:PiliPlus/models/model_avatar.dart'; import 'package:PiliPlus/models_new/live/live_feed_index/watched_show.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/iterable_ext.dart'; import 'package:PiliPlus/utils/storage_pref.dart'; import 'package:PiliPlus/utils/utils.dart'; diff --git a/lib/models/dynamics/vote_model.dart b/lib/models/dynamics/vote_model.dart index 5e2373606..1c04bc8ec 100644 --- a/lib/models/dynamics/vote_model.dart +++ b/lib/models/dynamics/vote_model.dart @@ -1,4 +1,4 @@ -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/iterable_ext.dart'; class SimpleVoteInfo { int? choiceCnt; diff --git a/lib/models/search/result.dart b/lib/models/search/result.dart index 72fc2cd58..4aa50c4fb 100644 --- a/lib/models/search/result.dart +++ b/lib/models/search/result.dart @@ -3,7 +3,8 @@ import 'package:PiliPlus/models/model_owner.dart'; import 'package:PiliPlus/models/model_video.dart'; import 'package:PiliPlus/utils/duration_utils.dart'; import 'package:PiliPlus/utils/em.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/iterable_ext.dart'; +import 'package:PiliPlus/utils/extension/string_ext.dart'; abstract class SearchNumData { SearchNumData({ diff --git a/lib/models/user/info.dart b/lib/models/user/info.dart index 0e3f6edaf..334e3f80a 100644 --- a/lib/models/user/info.dart +++ b/lib/models/user/info.dart @@ -1,4 +1,4 @@ -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/map_ext.dart'; import 'package:hive/hive.dart'; part 'info.g.dart'; diff --git a/lib/models/video/play/url.dart b/lib/models/video/play/url.dart index ff874bc9d..b3f3ef5f6 100644 --- a/lib/models/video/play/url.dart +++ b/lib/models/video/play/url.dart @@ -3,7 +3,7 @@ import 'dart:math' show max, min; import 'package:PiliPlus/models/common/video/audio_quality.dart'; import 'package:PiliPlus/models/common/video/video_quality.dart'; import 'package:PiliPlus/models_new/sponsor_block/segment_item.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/iterable_ext.dart'; import 'package:flutter/foundation.dart' show kDebugMode; class PlayUrlModel { diff --git a/lib/models_new/article/article_info/data.dart b/lib/models_new/article/article_info/data.dart index 4390a1b6f..5f74a4b76 100644 --- a/lib/models_new/article/article_info/data.dart +++ b/lib/models_new/article/article_info/data.dart @@ -1,6 +1,6 @@ import 'package:PiliPlus/models_new/article/article_info/share_channel.dart'; import 'package:PiliPlus/models_new/article/article_info/stats.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/iterable_ext.dart'; class ArticleInfoData { int? like; diff --git a/lib/models_new/article/article_list/article.dart b/lib/models_new/article/article_list/article.dart index 18f1c892c..7767a3c6d 100644 --- a/lib/models_new/article/article_list/article.dart +++ b/lib/models_new/article/article_list/article.dart @@ -1,6 +1,6 @@ import 'package:PiliPlus/models_new/article/article_list/category.dart'; import 'package:PiliPlus/models_new/article/article_list/stats.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/iterable_ext.dart'; class ArticleListItemModel { int? id; diff --git a/lib/models_new/article/article_list/last.dart b/lib/models_new/article/article_list/last.dart index 3678509cb..ae283f843 100644 --- a/lib/models_new/article/article_list/last.dart +++ b/lib/models_new/article/article_list/last.dart @@ -1,5 +1,5 @@ import 'package:PiliPlus/models_new/article/article_list/category.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/iterable_ext.dart'; class Last { int? id; diff --git a/lib/models_new/article/article_view/data.dart b/lib/models_new/article/article_view/data.dart index 70d2a9d34..29d8e90e9 100644 --- a/lib/models_new/article/article_view/data.dart +++ b/lib/models_new/article/article_view/data.dart @@ -5,7 +5,7 @@ import 'package:PiliPlus/models_new/article/article_view/ops.dart'; import 'package:PiliPlus/models_new/article/article_view/opus.dart'; import 'package:PiliPlus/models_new/article/article_view/stats.dart'; import 'package:PiliPlus/models_new/article/article_view/tag.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/iterable_ext.dart'; class ArticleViewData { int? id; diff --git a/lib/models_new/download/bili_download_media_file_info.dart b/lib/models_new/download/bili_download_media_file_info.dart index 0a7551827..e439c479f 100644 --- a/lib/models_new/download/bili_download_media_file_info.dart +++ b/lib/models_new/download/bili_download_media_file_info.dart @@ -1,4 +1,4 @@ -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/iterable_ext.dart'; sealed class BiliDownloadMediaInfo { const BiliDownloadMediaInfo(); diff --git a/lib/models_new/fav/fav_pgc/list.dart b/lib/models_new/fav/fav_pgc/list.dart index b68bc095b..70a711fcd 100644 --- a/lib/models_new/fav/fav_pgc/list.dart +++ b/lib/models_new/fav/fav_pgc/list.dart @@ -12,7 +12,7 @@ import 'package:PiliPlus/models_new/fav/fav_pgc/section.dart'; import 'package:PiliPlus/models_new/fav/fav_pgc/series.dart'; import 'package:PiliPlus/models_new/fav/fav_pgc/stat.dart'; import 'package:PiliPlus/pages/common/multi_select/base.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/iterable_ext.dart'; class FavPgcItemModel with MultiSelectData { int? seasonId; diff --git a/lib/models_new/fav/fav_pgc/section.dart b/lib/models_new/fav/fav_pgc/section.dart index 44941f5a3..100ddd724 100644 --- a/lib/models_new/fav/fav_pgc/section.dart +++ b/lib/models_new/fav/fav_pgc/section.dart @@ -1,4 +1,4 @@ -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/iterable_ext.dart'; class Section { int? sectionId; diff --git a/lib/models_new/history/history.dart b/lib/models_new/history/history.dart index a13a3c0f4..b9b45f4c2 100644 --- a/lib/models_new/history/history.dart +++ b/lib/models_new/history/history.dart @@ -6,7 +6,6 @@ class History { int? cid; String? part; String? business; - int? dt; History({ this.oid, @@ -16,7 +15,6 @@ class History { this.cid, this.part, this.business, - this.dt, }); factory History.fromJson(Map json) => History( @@ -27,6 +25,5 @@ class History { cid: json['cid'] == 0 ? null : json['cid'], part: json['part'], business: json['business'], - dt: json['dt'], ); } diff --git a/lib/models_new/history/list.dart b/lib/models_new/history/list.dart index abecdf127..2c9d485f3 100644 --- a/lib/models_new/history/list.dart +++ b/lib/models_new/history/list.dart @@ -1,6 +1,6 @@ import 'package:PiliPlus/models_new/history/history.dart'; import 'package:PiliPlus/pages/common/multi_select/base.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/iterable_ext.dart'; class HistoryItemModel with MultiSelectData { String? title; diff --git a/lib/models_new/later/bangumi.dart b/lib/models_new/later/bangumi.dart index cfa23526d..0b1a55efb 100644 --- a/lib/models_new/later/bangumi.dart +++ b/lib/models_new/later/bangumi.dart @@ -4,8 +4,6 @@ class Bangumi { int? epId; String? title; String? longTitle; - int? episodeStatus; - int? follow; String? cover; Season? season; @@ -13,8 +11,6 @@ class Bangumi { this.epId, this.title, this.longTitle, - this.episodeStatus, - this.follow, this.cover, this.season, }); @@ -23,8 +19,6 @@ class Bangumi { epId: json['ep_id'] as int?, title: json['title'] as String?, longTitle: json['long_title'] as String?, - episodeStatus: json['episode_status'] as int?, - follow: json['follow'] as int?, cover: json['cover'] as String?, season: json['season'] == null ? null diff --git a/lib/models_new/later/dimension.dart b/lib/models_new/later/dimension.dart deleted file mode 100644 index c2fba44eb..000000000 --- a/lib/models_new/later/dimension.dart +++ /dev/null @@ -1,13 +0,0 @@ -class Dimension { - int? width; - int? height; - int? rotate; - - Dimension({this.width, this.height, this.rotate}); - - factory Dimension.fromJson(Map json) => Dimension( - width: json['width'] as int?, - height: json['height'] as int?, - rotate: json['rotate'] as int?, - ); -} diff --git a/lib/models_new/later/list.dart b/lib/models_new/later/list.dart index d76267a82..a2739f6f3 100644 --- a/lib/models_new/later/list.dart +++ b/lib/models_new/later/list.dart @@ -1,6 +1,5 @@ +import 'package:PiliPlus/models/model_owner.dart'; import 'package:PiliPlus/models_new/later/bangumi.dart'; -import 'package:PiliPlus/models_new/later/dimension.dart'; -import 'package:PiliPlus/models_new/later/owner.dart'; import 'package:PiliPlus/models_new/later/page.dart'; import 'package:PiliPlus/models_new/later/rights.dart'; import 'package:PiliPlus/models_new/later/stat.dart'; @@ -9,94 +8,46 @@ import 'package:PiliPlus/pages/common/multi_select/base.dart'; class LaterItemModel with MultiSelectData { int? aid; int? videos; - int? tid; - String? tname; - int? copyright; String? pic; String? title; String? subtitle; int? pubdate; - int? ctime; - String? desc; - int? state; int? duration; String? redirectUrl; Rights? rights; Owner? owner; Stat? stat; - String? dynam1c; - Dimension? dimension; - String? shortLinkV2; - int? upFromV2; - String? pubLocation; - String? cover43; - int? tidv2; - String? tnamev2; - int? pidV2; - String? pidNameV2; List? pages; Bangumi? bangumi; int? cid; int? progress; - int? addAt; String? bvid; - String? uri; - bool? viewed; - int? seq; - int? enableVt; - String? viewText1; bool? isPgc; String? pgcLabel; bool? isPugv; - int? missionId; - String? firstFrame; int? seasonId; bool? isCharging; LaterItemModel({ this.aid, this.videos, - this.tid, - this.tname, - this.copyright, this.pic, this.title, this.subtitle, this.pubdate, - this.ctime, - this.desc, - this.state, this.duration, this.redirectUrl, this.rights, this.owner, this.stat, - this.dynam1c, - this.dimension, - this.shortLinkV2, - this.upFromV2, - this.pubLocation, - this.cover43, - this.tidv2, - this.tnamev2, - this.pidV2, - this.pidNameV2, this.pages, this.bangumi, this.cid, this.progress, - this.addAt, this.bvid, - this.uri, - this.viewed, - this.seq, - this.enableVt, - this.viewText1, this.isPgc, this.pgcLabel, this.isPugv, - this.missionId, - this.firstFrame, this.seasonId, this.isCharging, }); @@ -104,15 +55,9 @@ class LaterItemModel with MultiSelectData { factory LaterItemModel.fromJson(Map json) => LaterItemModel( aid: json['aid'] as int?, videos: json['videos'] as int?, - tid: json['tid'] as int?, - tname: json['tname'] as String?, - copyright: json['copyright'] as int?, pic: json['pic'] as String?, title: json['title'] as String?, pubdate: json['pubdate'] as int?, - ctime: json['ctime'] as int?, - desc: json['desc'] as String?, - state: json['state'] as int?, duration: json['duration'] as int?, redirectUrl: json['redirect_url'] as String?, rights: json['rights'] == null @@ -124,18 +69,6 @@ class LaterItemModel with MultiSelectData { stat: json['stat'] == null ? null : Stat.fromJson(json['stat'] as Map), - dynam1c: json['dynamic'] as String?, - dimension: json['dimension'] == null - ? null - : Dimension.fromJson(json['dimension'] as Map), - shortLinkV2: json['short_link_v2'] as String?, - upFromV2: json['up_from_v2'] as int?, - pubLocation: json['pub_location'] as String?, - cover43: json['cover43'] as String?, - tidv2: json['tidv2'] as int?, - tnamev2: json['tnamev2'] as String?, - pidV2: json['pid_v2'] as int?, - pidNameV2: json['pid_name_v2'] as String?, pages: (json['pages'] as List?) ?.map((e) => Page.fromJson(e as Map)) .toList(), @@ -150,18 +83,10 @@ class LaterItemModel with MultiSelectData { ), cid: json['cid'] as int?, progress: json['progress'] as int?, - addAt: json['add_at'] as int?, bvid: json['bvid'] as String?, - uri: json['uri'] as String?, - viewed: json['viewed'] as bool?, - seq: json['seq'] as int?, - enableVt: json['enable_vt'] as int?, - viewText1: json['view_text_1'] as String?, isPgc: json['is_pgc'] as bool?, pgcLabel: json['pgc_label'] == '' ? null : json['pgc_label'], isPugv: json['is_pugv'] as bool?, - missionId: json['mission_id'] as int?, - firstFrame: json['first_frame'] as String?, seasonId: json['season_id'] as int?, isCharging: json['charging_pay']?['level'] != null, ); diff --git a/lib/models_new/later/owner.dart b/lib/models_new/later/owner.dart deleted file mode 100644 index b0565f08b..000000000 --- a/lib/models_new/later/owner.dart +++ /dev/null @@ -1,13 +0,0 @@ -class Owner { - int? mid; - String? name; - String? face; - - Owner({this.mid, this.name, this.face}); - - factory Owner.fromJson(Map json) => Owner( - mid: json['mid'] as int?, - name: json['name'] as String?, - face: json['face'] as String?, - ); -} diff --git a/lib/models_new/later/page.dart b/lib/models_new/later/page.dart index 3098302b7..f902e749c 100644 --- a/lib/models_new/later/page.dart +++ b/lib/models_new/later/page.dart @@ -1,39 +1,17 @@ -import 'package:PiliPlus/models_new/later/dimension.dart'; - class Page { int? cid; int? page; - String? from; - String? part; int? duration; - String? vid; - String? weblink; - Dimension? dimension; - int? ctime; Page({ this.cid, this.page, - this.from, - this.part, this.duration, - this.vid, - this.weblink, - this.dimension, - this.ctime, }); factory Page.fromJson(Map json) => Page( cid: json['cid'] as int?, page: json['page'] as int?, - from: json['from'] as String?, - part: json['part'] as String?, duration: json['duration'] as int?, - vid: json['vid'] as String?, - weblink: json['weblink'] as String?, - dimension: json['dimension'] == null - ? null - : Dimension.fromJson(json['dimension'] as Map), - ctime: json['ctime'] as int?, ); } diff --git a/lib/models_new/later/rights.dart b/lib/models_new/later/rights.dart index 70e883f7f..0df41a5c8 100644 --- a/lib/models_new/later/rights.dart +++ b/lib/models_new/later/rights.dart @@ -1,50 +1,11 @@ class Rights { - int? bp; - int? elec; - int? download; - int? movie; - int? pay; - int? hd5; - int? noReprint; - int? autoplay; - int? ugcPay; int? isCooperation; - int? ugcPayPreview; - int? noBackground; - int? arcPay; - int? payFreeWatch; Rights({ - this.bp, - this.elec, - this.download, - this.movie, - this.pay, - this.hd5, - this.noReprint, - this.autoplay, - this.ugcPay, this.isCooperation, - this.ugcPayPreview, - this.noBackground, - this.arcPay, - this.payFreeWatch, }); factory Rights.fromJson(Map json) => Rights( - bp: json['bp'] as int?, - elec: json['elec'] as int?, - download: json['download'] as int?, - movie: json['movie'] as int?, - pay: json['pay'] as int?, - hd5: json['hd5'] as int?, - noReprint: json['no_reprint'] as int?, - autoplay: json['autoplay'] as int?, - ugcPay: json['ugc_pay'] as int?, isCooperation: json['is_cooperation'] as int?, - ugcPayPreview: json['ugc_pay_preview'] as int?, - noBackground: json['no_background'] as int?, - arcPay: json['arc_pay'] as int?, - payFreeWatch: json['pay_free_watch'] as int?, ); } diff --git a/lib/models_new/later/season.dart b/lib/models_new/later/season.dart index b975f37ab..c45969b3f 100644 --- a/lib/models_new/later/season.dart +++ b/lib/models_new/later/season.dart @@ -1,32 +1,14 @@ class Season { int? seasonId; String? title; - int? seasonStatus; - int? isFinish; - int? totalCount; - int? newestEpId; - String? newestEpIndex; - int? seasonType; Season({ this.seasonId, this.title, - this.seasonStatus, - this.isFinish, - this.totalCount, - this.newestEpId, - this.newestEpIndex, - this.seasonType, }); factory Season.fromJson(Map json) => Season( seasonId: json['season_id'] as int?, title: json['title'] as String?, - seasonStatus: json['season_status'] as int?, - isFinish: json['is_finish'] as int?, - totalCount: json['total_count'] as int?, - newestEpId: json['newest_ep_id'] as int?, - newestEpIndex: json['newest_ep_index'] as String?, - seasonType: json['season_type'] as int?, ); } diff --git a/lib/models_new/later/stat.dart b/lib/models_new/later/stat.dart index 9f3ff07f5..8c03db17d 100644 --- a/lib/models_new/later/stat.dart +++ b/lib/models_new/later/stat.dart @@ -2,46 +2,16 @@ class Stat { int? aid; int? view; int? danmaku; - int? reply; - int? favorite; - num? coin; - int? share; - int? nowRank; - int? hisRank; - int? like; - int? dislike; - int? vt; - int? vv; Stat({ this.aid, this.view, this.danmaku, - this.reply, - this.favorite, - this.coin, - this.share, - this.nowRank, - this.hisRank, - this.like, - this.dislike, - this.vt, - this.vv, }); factory Stat.fromJson(Map json) => Stat( aid: json['aid'] as int?, view: json['view'] as int?, danmaku: json['danmaku'] as int?, - reply: json['reply'] as int?, - favorite: json['favorite'] as int?, - coin: json['coin'] as num?, - share: json['share'] as int?, - nowRank: json['now_rank'] as int?, - hisRank: json['his_rank'] as int?, - like: json['like'] as int?, - dislike: json['dislike'] as int?, - vt: json['vt'] as int?, - vv: json['vv'] as int?, ); } diff --git a/lib/models_new/live/live_area_list/area_item.dart b/lib/models_new/live/live_area_list/area_item.dart index 85fdb0c4e..a2986fc18 100644 --- a/lib/models_new/live/live_area_list/area_item.dart +++ b/lib/models_new/live/live_area_list/area_item.dart @@ -1,33 +1,24 @@ class AreaItem { dynamic id; String? name; - String? link; String? pic; dynamic parentId; String? parentName; - int? areaType; - int? tagType; AreaItem({ this.id, this.name, - this.link, this.pic, this.parentId, this.parentName, - this.areaType, - this.tagType, }); factory AreaItem.fromJson(Map json) => AreaItem( id: json['id'], name: json['name'] as String?, - link: json['link'] as String?, pic: json['pic'] as String?, parentId: json['parent_id'], parentName: json['parent_name'] as String?, - areaType: json['area_type'] as int?, - tagType: json['tag_type'] as int?, ); @override diff --git a/lib/models_new/live/live_dm_block/shield_info.dart b/lib/models_new/live/live_dm_block/shield_info.dart index 3d7693133..d7fc75430 100644 --- a/lib/models_new/live/live_dm_block/shield_info.dart +++ b/lib/models_new/live/live_dm_block/shield_info.dart @@ -1,20 +1,16 @@ import 'package:PiliPlus/models_new/live/live_dm_block/shield_rules.dart'; import 'package:PiliPlus/models_new/live/live_dm_block/shield_user_list.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/iterable_ext.dart'; class ShieldInfo { List? shieldUserList; List? keywordList; ShieldRules? shieldRules; - bool? isBlock; - int? blockExpired; ShieldInfo({ this.shieldUserList, this.keywordList, this.shieldRules, - this.isBlock, - this.blockExpired, }); factory ShieldInfo.fromJson(Map json) => ShieldInfo( @@ -25,7 +21,5 @@ class ShieldInfo { shieldRules: json['shield_rules'] == null ? null : ShieldRules.fromJson(json['shield_rules'] as Map), - isBlock: json['is_block'] as bool?, - blockExpired: json['block_expired'] as int?, ); } diff --git a/lib/models_new/live/live_dm_info/data.dart b/lib/models_new/live/live_dm_info/data.dart index a964c5d4e..ffca3bee2 100644 --- a/lib/models_new/live/live_dm_info/data.dart +++ b/lib/models_new/live/live_dm_info/data.dart @@ -1,30 +1,15 @@ import 'package:PiliPlus/models_new/live/live_dm_info/host_list.dart'; class LiveDmInfoData { - String? group; - int? businessId; - double? refreshRowFactor; - int? refreshRate; - int? maxDelay; String? token; List? hostList; LiveDmInfoData({ - this.group, - this.businessId, - this.refreshRowFactor, - this.refreshRate, - this.maxDelay, this.token, this.hostList, }); factory LiveDmInfoData.fromJson(Map json) => LiveDmInfoData( - group: json['group'] as String?, - businessId: json['business_id'] as int?, - refreshRowFactor: (json['refresh_row_factor'] as num?)?.toDouble(), - refreshRate: json['refresh_rate'] as int?, - maxDelay: json['max_delay'] as int?, token: json['token'] as String?, hostList: (json['host_list'] as List?) ?.map((e) => HostList.fromJson(e as Map)) diff --git a/lib/models_new/live/live_feed_index/card_data_item.dart b/lib/models_new/live/live_feed_index/card_data_item.dart index e6e08ae20..eff104eb7 100644 --- a/lib/models_new/live/live_feed_index/card_data_item.dart +++ b/lib/models_new/live/live_feed_index/card_data_item.dart @@ -1,23 +1,17 @@ import 'package:PiliPlus/models_new/live/live_feed_index/card_data_list_item.dart'; -import 'package:PiliPlus/models_new/live/live_feed_index/module_info.dart'; class CardDataItem { - ModuleInfo? moduleInfo; List? list; dynamic topView; ExtraInfo? extraInfo; CardDataItem({ - this.moduleInfo, this.list, this.topView, this.extraInfo, }); factory CardDataItem.fromJson(Map json) => CardDataItem( - moduleInfo: json['module_info'] == null - ? null - : ModuleInfo.fromJson(json['module_info'] as Map), list: (json['list'] as List?) ?.map((e) => CardLiveItem.fromJson(e as Map)) .toList(), diff --git a/lib/models_new/live/live_feed_index/card_data_list_item.dart b/lib/models_new/live/live_feed_index/card_data_list_item.dart index ba0d90b8e..9fdfba22b 100644 --- a/lib/models_new/live/live_feed_index/card_data_list_item.dart +++ b/lib/models_new/live/live_feed_index/card_data_list_item.dart @@ -7,21 +7,13 @@ class CardLiveItem { String? face; String? cover; String? title; - int? area; int? liveTime; String? areaName; int? areaV2Id; String? areaV2Name; String? areaV2ParentName; int? areaV2ParentId; - String? liveTagName; - int? online; - String? link; - int? officialVerify; - int? currentQn; WatchedShow? watchedShow; - String? statusText; - int? tagType; CardLiveItem({ this.roomid, @@ -30,21 +22,13 @@ class CardLiveItem { this.face, this.cover, this.title, - this.area, this.liveTime, this.areaName, this.areaV2Id, this.areaV2Name, this.areaV2ParentName, this.areaV2ParentId, - this.liveTagName, - this.online, - this.link, - this.officialVerify, - this.currentQn, this.watchedShow, - this.statusText, - this.tagType, }); factory CardLiveItem.fromJson(Map json) => CardLiveItem( @@ -54,22 +38,14 @@ class CardLiveItem { face: json['face'] as String?, cover: json['cover'] as String?, title: json['title'] as String?, - area: json['area'] as int?, liveTime: json['live_time'] as int?, areaName: json['area_name'] as String?, areaV2Id: json['area_v2_id'] as int?, areaV2Name: json['area_v2_name'] as String?, areaV2ParentName: json['area_v2_parent_name'] as String?, areaV2ParentId: json['area_v2_parent_id'] as int?, - liveTagName: json['live_tag_name'] as String?, - online: json['online'] as int?, - link: json['link'] as String?, - officialVerify: json['official_verify'] as int?, - currentQn: json['current_qn'] as int?, watchedShow: json['watched_show'] == null ? null : WatchedShow.fromJson(json['watched_show'] as Map), - statusText: json['status_text'] as String?, - tagType: json['tag_type'], ); } diff --git a/lib/models_new/live/live_feed_index/data.dart b/lib/models_new/live/live_feed_index/data.dart index 90f511b35..50432e90b 100644 --- a/lib/models_new/live/live_feed_index/data.dart +++ b/lib/models_new/live/live_feed_index/data.dart @@ -2,19 +2,13 @@ import 'package:PiliPlus/models_new/live/live_feed_index/card_list.dart'; class LiveIndexData { List? cardList; - int? isRollback; int? hasMore; - int? triggerTime; - int? isNeedRefresh; LiveCardList? followItem; LiveCardList? areaItem; LiveIndexData({ this.cardList, - this.isRollback, this.hasMore, - this.triggerTime, - this.isNeedRefresh, }); LiveIndexData.fromJson(Map json) { @@ -38,9 +32,6 @@ class LiveIndexData { } } } - isRollback = json['is_rollback'] as int?; hasMore = json['has_more'] as int?; - triggerTime = json['trigger_time'] as int?; - isNeedRefresh = json['is_need_refresh'] as int?; } } diff --git a/lib/models_new/live/live_feed_index/live_feed_index.dart b/lib/models_new/live/live_feed_index/live_feed_index.dart deleted file mode 100644 index 4f375cd5f..000000000 --- a/lib/models_new/live/live_feed_index/live_feed_index.dart +++ /dev/null @@ -1,19 +0,0 @@ -import 'package:PiliPlus/models_new/live/live_feed_index/data.dart'; - -class LiveFeedIndex { - int? code; - String? message; - int? ttl; - LiveIndexData? data; - - LiveFeedIndex({this.code, this.message, this.ttl, this.data}); - - factory LiveFeedIndex.fromJson(Map json) => LiveFeedIndex( - code: json['code'] as int?, - message: json['message'] as String?, - ttl: json['ttl'] as int?, - data: json['data'] == null - ? null - : LiveIndexData.fromJson(json['data'] as Map), - ); -} diff --git a/lib/models_new/live/live_feed_index/module_info.dart b/lib/models_new/live/live_feed_index/module_info.dart deleted file mode 100644 index a9841f2ac..000000000 --- a/lib/models_new/live/live_feed_index/module_info.dart +++ /dev/null @@ -1,29 +0,0 @@ -class ModuleInfo { - int? id; - String? link; - String? pic; - String? title; - int? type; - int? sort; - int? count; - - ModuleInfo({ - this.id, - this.link, - this.pic, - this.title, - this.type, - this.sort, - this.count, - }); - - factory ModuleInfo.fromJson(Map json) => ModuleInfo( - id: json['id'] as int?, - link: json['link'] as String?, - pic: json['pic'] as String?, - title: json['title'] as String?, - type: json['type'] as int?, - sort: json['sort'] as int?, - count: json['count'] as int?, - ); -} diff --git a/lib/models_new/live/live_follow/data.dart b/lib/models_new/live/live_follow/data.dart index f8b0bb275..f41c8cdf7 100644 --- a/lib/models_new/live/live_follow/data.dart +++ b/lib/models_new/live/live_follow/data.dart @@ -6,9 +6,7 @@ class LiveFollowData { int? totalPage; List? list; int? count; - int? neverLivedCount; int? liveCount; - List? neverLivedFaces; LiveFollowData({ this.title, @@ -16,9 +14,7 @@ class LiveFollowData { this.totalPage, this.list, this.count, - this.neverLivedCount, this.liveCount, - this.neverLivedFaces, }); LiveFollowData.fromJson(Map json) { @@ -34,8 +30,6 @@ class LiveFollowData { } } count = json['count'] as int?; - neverLivedCount = json['never_lived_count'] as int?; liveCount = json['live_count'] as int?; - neverLivedFaces = json['never_lived_faces'] as List?; } } diff --git a/lib/models_new/live/live_follow/item.dart b/lib/models_new/live/live_follow/item.dart index e158bfdd0..4472d97ed 100644 --- a/lib/models_new/live/live_follow/item.dart +++ b/lib/models_new/live/live_follow/item.dart @@ -5,25 +5,10 @@ class LiveFollowItem { String? title; String? face; int? liveStatus; - int? recordNum; - String? recentRecordId; - int? isAttention; - int? clipnum; - int? fansNum; String? areaName; - String? areaValue; - String? tags; - String? recentRecordIdV2; - int? recordNumV2; - int? recordLiveTime; String? areaNameV2; - String? roomNews; - bool? sw1tch; - String? watchIcon; String? textSmall; String? roomCover; - int? parentAreaId; - int? areaId; LiveFollowItem({ this.roomid, @@ -32,25 +17,10 @@ class LiveFollowItem { this.title, this.face, this.liveStatus, - this.recordNum, - this.recentRecordId, - this.isAttention, - this.clipnum, - this.fansNum, this.areaName, - this.areaValue, - this.tags, - this.recentRecordIdV2, - this.recordNumV2, - this.recordLiveTime, this.areaNameV2, - this.roomNews, - this.sw1tch, - this.watchIcon, this.textSmall, this.roomCover, - this.parentAreaId, - this.areaId, }); factory LiveFollowItem.fromJson(Map json) => LiveFollowItem( @@ -60,24 +30,9 @@ class LiveFollowItem { title: json['title'] as String?, face: json['face'] as String?, liveStatus: json['live_status'] as int?, - recordNum: json['record_num'] as int?, - recentRecordId: json['recent_record_id'] as String?, - isAttention: json['is_attention'] as int?, - clipnum: json['clipnum'] as int?, - fansNum: json['fans_num'] as int?, areaName: json['area_name'] as String?, - areaValue: json['area_value'] as String?, - tags: json['tags'] as String?, - recentRecordIdV2: json['recent_record_id_v2'] as String?, - recordNumV2: json['record_num_v2'] as int?, - recordLiveTime: json['record_live_time'] as int?, areaNameV2: json['area_name_v2'] as String?, - roomNews: json['room_news'] as String?, - sw1tch: json['switch'] as bool?, - watchIcon: json['watch_icon'] as String?, textSmall: json['text_small'] as String?, roomCover: json['room_cover'] as String?, - parentAreaId: json['parent_area_id'] as int?, - areaId: json['area_id'] as int?, ); } diff --git a/lib/models_new/live/live_room_info_h5/anchor_info.dart b/lib/models_new/live/live_room_info_h5/anchor_info.dart index 2194a0491..de7773cd8 100644 --- a/lib/models_new/live/live_room_info_h5/anchor_info.dart +++ b/lib/models_new/live/live_room_info_h5/anchor_info.dart @@ -1,18 +1,13 @@ import 'package:PiliPlus/models_new/live/live_room_info_h5/base_info.dart'; -import 'package:PiliPlus/models_new/live/live_room_info_h5/relation_info.dart'; class AnchorInfo { BaseInfo? baseInfo; - RelationInfo? relationInfo; - AnchorInfo({this.baseInfo, this.relationInfo}); + AnchorInfo({this.baseInfo}); factory AnchorInfo.fromJson(Map json) => AnchorInfo( baseInfo: json['base_info'] == null ? null : BaseInfo.fromJson(json['base_info'] as Map), - relationInfo: json['relation_info'] == null - ? null - : RelationInfo.fromJson(json['relation_info'] as Map), ); } diff --git a/lib/models_new/live/live_room_info_h5/area_mask_info.dart b/lib/models_new/live/live_room_info_h5/area_mask_info.dart deleted file mode 100644 index c0064b5e0..000000000 --- a/lib/models_new/live/live_room_info_h5/area_mask_info.dart +++ /dev/null @@ -1,13 +0,0 @@ -import 'package:PiliPlus/models_new/live/live_room_info_h5/area_masks.dart'; - -class AreaMaskInfo { - AreaMasks? areaMasks; - - AreaMaskInfo({this.areaMasks}); - - factory AreaMaskInfo.fromJson(Map json) => AreaMaskInfo( - areaMasks: json['area_masks'] == null - ? null - : AreaMasks.fromJson(json['area_masks'] as Map), - ); -} diff --git a/lib/models_new/live/live_room_info_h5/area_masks.dart b/lib/models_new/live/live_room_info_h5/area_masks.dart deleted file mode 100644 index 5b4a4d13a..000000000 --- a/lib/models_new/live/live_room_info_h5/area_masks.dart +++ /dev/null @@ -1,13 +0,0 @@ -class AreaMasks { - dynamic horizontalMasks; - dynamic verticalMasks; - dynamic fullMask; - - AreaMasks({this.horizontalMasks, this.verticalMasks, this.fullMask}); - - factory AreaMasks.fromJson(Map json) => AreaMasks( - horizontalMasks: json['horizontal_masks'] as dynamic, - verticalMasks: json['vertical_masks'] as dynamic, - fullMask: json['full_mask'] as dynamic, - ); -} diff --git a/lib/models_new/live/live_room_info_h5/base_info.dart b/lib/models_new/live/live_room_info_h5/base_info.dart index 03d669f7d..d05329199 100644 --- a/lib/models_new/live/live_room_info_h5/base_info.dart +++ b/lib/models_new/live/live_room_info_h5/base_info.dart @@ -1,17 +1,11 @@ -import 'package:PiliPlus/models_new/live/live_room_info_h5/official_info.dart'; - class BaseInfo { String? uname; String? face; - OfficialInfo? officialInfo; - BaseInfo({this.uname, this.face, this.officialInfo}); + BaseInfo({this.uname, this.face}); factory BaseInfo.fromJson(Map json) => BaseInfo( uname: json['uname'] as String?, face: json['face'] as String?, - officialInfo: json['official_info'] == null - ? null - : OfficialInfo.fromJson(json['official_info'] as Map), ); } diff --git a/lib/models_new/live/live_room_info_h5/block_info.dart b/lib/models_new/live/live_room_info_h5/block_info.dart deleted file mode 100644 index 463d03d36..000000000 --- a/lib/models_new/live/live_room_info_h5/block_info.dart +++ /dev/null @@ -1,13 +0,0 @@ -class BlockInfo { - bool? block; - String? desc; - int? business; - - BlockInfo({this.block, this.desc, this.business}); - - factory BlockInfo.fromJson(Map json) => BlockInfo( - block: json['block'] as bool?, - desc: json['desc'] as String?, - business: json['business'] as int?, - ); -} diff --git a/lib/models_new/live/live_room_info_h5/data.dart b/lib/models_new/live/live_room_info_h5/data.dart index be4bcb791..d15f8f420 100644 --- a/lib/models_new/live/live_room_info_h5/data.dart +++ b/lib/models_new/live/live_room_info_h5/data.dart @@ -1,38 +1,16 @@ import 'package:PiliPlus/models_new/live/live_feed_index/watched_show.dart'; - import 'package:PiliPlus/models_new/live/live_room_info_h5/anchor_info.dart'; -import 'package:PiliPlus/models_new/live/live_room_info_h5/area_mask_info.dart'; -import 'package:PiliPlus/models_new/live/live_room_info_h5/block_info.dart'; -import 'package:PiliPlus/models_new/live/live_room_info_h5/like_info_v3.dart'; -import 'package:PiliPlus/models_new/live/live_room_info_h5/new_switch_info.dart'; -import 'package:PiliPlus/models_new/live/live_room_info_h5/news_info.dart'; import 'package:PiliPlus/models_new/live/live_room_info_h5/room_info.dart'; class RoomInfoH5Data { RoomInfo? roomInfo; AnchorInfo? anchorInfo; - NewSwitchInfo? newSwitchInfo; - List? bannerInfo; - int? isRoomFeed; - List? tabInfo; - NewsInfo? newsInfo; WatchedShow? watchedShow; - LikeInfoV3? likeInfoV3; - BlockInfo? blockInfo; - AreaMaskInfo? areaMaskInfo; RoomInfoH5Data({ this.roomInfo, this.anchorInfo, - this.newSwitchInfo, - this.bannerInfo, - this.isRoomFeed, - this.tabInfo, - this.newsInfo, this.watchedShow, - this.likeInfoV3, - this.blockInfo, - this.areaMaskInfo, }); factory RoomInfoH5Data.fromJson(Map json) => RoomInfoH5Data( @@ -42,28 +20,8 @@ class RoomInfoH5Data { anchorInfo: json['anchor_info'] == null ? null : AnchorInfo.fromJson(json['anchor_info'] as Map), - newSwitchInfo: json['new_switch_info'] == null - ? null - : NewSwitchInfo.fromJson( - json['new_switch_info'] as Map, - ), - bannerInfo: json['banner_info'] as List?, - isRoomFeed: json['is_room_feed'] as int?, - tabInfo: json['tab_info'] as List?, - newsInfo: json['news_info'] == null - ? null - : NewsInfo.fromJson(json['news_info'] as Map), watchedShow: json['watched_show'] == null ? null : WatchedShow.fromJson(json['watched_show'] as Map), - likeInfoV3: json['like_info_v3'] == null - ? null - : LikeInfoV3.fromJson(json['like_info_v3'] as Map), - blockInfo: json['block_info'] == null - ? null - : BlockInfo.fromJson(json['block_info'] as Map), - areaMaskInfo: json['area_mask_info'] == null - ? null - : AreaMaskInfo.fromJson(json['area_mask_info'] as Map), ); } diff --git a/lib/models_new/live/live_room_info_h5/frame.dart b/lib/models_new/live/live_room_info_h5/frame.dart deleted file mode 100644 index 1cbcde06d..000000000 --- a/lib/models_new/live/live_room_info_h5/frame.dart +++ /dev/null @@ -1,13 +0,0 @@ -class Frame { - String? name; - String? value; - String? desc; - - Frame({this.name, this.value, this.desc}); - - factory Frame.fromJson(Map json) => Frame( - name: json['name'] as String?, - value: json['value'] as String?, - desc: json['desc'] as String?, - ); -} diff --git a/lib/models_new/live/live_room_info_h5/like_info_v3.dart b/lib/models_new/live/live_room_info_h5/like_info_v3.dart deleted file mode 100644 index d551c8578..000000000 --- a/lib/models_new/live/live_room_info_h5/like_info_v3.dart +++ /dev/null @@ -1,70 +0,0 @@ -import 'package:PiliPlus/utils/extension.dart'; - -class LikeInfoV3 { - int? totalLikes; - bool? clickBlock; - bool? countBlock; - String? guildEmoText; - String? guildDmText; - String? likeDmText; - List? handIcons; - List? dmIcons; - String? eggshellsIcon; - int? countShowTime; - String? processIcon; - String? processColor; - int? reportClickLimit; - int? reportTimeMin; - int? reportTimeMax; - String? icon; - double? cooldown; - bool? handUseFace; - List? guideIconUrls; - double? guideIconRatio; - - LikeInfoV3({ - this.totalLikes, - this.clickBlock, - this.countBlock, - this.guildEmoText, - this.guildDmText, - this.likeDmText, - this.handIcons, - this.dmIcons, - this.eggshellsIcon, - this.countShowTime, - this.processIcon, - this.processColor, - this.reportClickLimit, - this.reportTimeMin, - this.reportTimeMax, - this.icon, - this.cooldown, - this.handUseFace, - this.guideIconUrls, - this.guideIconRatio, - }); - - factory LikeInfoV3.fromJson(Map json) => LikeInfoV3( - totalLikes: json['total_likes'] as int?, - clickBlock: json['click_block'] as bool?, - countBlock: json['count_block'] as bool?, - guildEmoText: json['guild_emo_text'] as String?, - guildDmText: json['guild_dm_text'] as String?, - likeDmText: json['like_dm_text'] as String?, - handIcons: (json['hand_icons'] as List?)?.fromCast(), - dmIcons: (json['dm_icons'] as List?)?.fromCast(), - eggshellsIcon: json['eggshells_icon'] as String?, - countShowTime: json['count_show_time'] as int?, - processIcon: json['process_icon'] as String?, - processColor: json['process_color'] as String?, - reportClickLimit: json['report_click_limit'] as int?, - reportTimeMin: json['report_time_min'] as int?, - reportTimeMax: json['report_time_max'] as int?, - icon: json['icon'] as String?, - cooldown: (json['cooldown'] as num?)?.toDouble(), - handUseFace: json['hand_use_face'] as bool?, - guideIconUrls: (json['guide_icon_urls'] as List?)?.fromCast(), - guideIconRatio: (json['guide_icon_ratio'] as num?)?.toDouble(), - ); -} diff --git a/lib/models_new/live/live_room_info_h5/new_switch_info.dart b/lib/models_new/live/live_room_info_h5/new_switch_info.dart deleted file mode 100644 index a25db32cb..000000000 --- a/lib/models_new/live/live_room_info_h5/new_switch_info.dart +++ /dev/null @@ -1,26 +0,0 @@ -class NewSwitchInfo { - int? roomInfoPopularity; - int? roomTab; - int? roomPlayerWatermark; - int? roomRecommendLiveOff; - int? brandUserCardSwitch; - int? brandFollowSwitch; - - NewSwitchInfo({ - this.roomInfoPopularity, - this.roomTab, - this.roomPlayerWatermark, - this.roomRecommendLiveOff, - this.brandUserCardSwitch, - this.brandFollowSwitch, - }); - - factory NewSwitchInfo.fromJson(Map json) => NewSwitchInfo( - roomInfoPopularity: json['room-info-popularity'] as int?, - roomTab: json['room-tab'] as int?, - roomPlayerWatermark: json['room-player-watermark'] as int?, - roomRecommendLiveOff: json['room-recommend-live_off'] as int?, - brandUserCardSwitch: json['brand-user-card-switch'] as int?, - brandFollowSwitch: json['brand-follow-switch'] as int?, - ); -} diff --git a/lib/models_new/live/live_room_info_h5/news_info.dart b/lib/models_new/live/live_room_info_h5/news_info.dart deleted file mode 100644 index c42010d33..000000000 --- a/lib/models_new/live/live_room_info_h5/news_info.dart +++ /dev/null @@ -1,13 +0,0 @@ -class NewsInfo { - int? uid; - String? ctime; - String? content; - - NewsInfo({this.uid, this.ctime, this.content}); - - factory NewsInfo.fromJson(Map json) => NewsInfo( - uid: json['uid'] as int?, - ctime: json['ctime'] as String?, - content: json['content'] as String?, - ); -} diff --git a/lib/models_new/live/live_room_info_h5/official_info.dart b/lib/models_new/live/live_room_info_h5/official_info.dart deleted file mode 100644 index 426b69636..000000000 --- a/lib/models_new/live/live_room_info_h5/official_info.dart +++ /dev/null @@ -1,23 +0,0 @@ -class OfficialInfo { - int? role; - String? title; - String? desc; - int? isNft; - String? nftDmark; - - OfficialInfo({ - this.role, - this.title, - this.desc, - this.isNft, - this.nftDmark, - }); - - factory OfficialInfo.fromJson(Map json) => OfficialInfo( - role: json['role'] as int?, - title: json['title'] as String?, - desc: json['desc'] as String?, - isNft: json['is_nft'] as int?, - nftDmark: json['nft_dmark'] as String?, - ); -} diff --git a/lib/models_new/live/live_room_info_h5/pendants.dart b/lib/models_new/live/live_room_info_h5/pendants.dart deleted file mode 100644 index e3a25817c..000000000 --- a/lib/models_new/live/live_room_info_h5/pendants.dart +++ /dev/null @@ -1,13 +0,0 @@ -import 'package:PiliPlus/models_new/live/live_room_info_h5/frame.dart'; - -class Pendants { - Frame? frame; - - Pendants({this.frame}); - - factory Pendants.fromJson(Map json) => Pendants( - frame: json['frame'] == null - ? null - : Frame.fromJson(json['frame'] as Map), - ); -} diff --git a/lib/models_new/live/live_room_info_h5/relation_info.dart b/lib/models_new/live/live_room_info_h5/relation_info.dart deleted file mode 100644 index dd15816d0..000000000 --- a/lib/models_new/live/live_room_info_h5/relation_info.dart +++ /dev/null @@ -1,9 +0,0 @@ -class RelationInfo { - int? attention; - - RelationInfo({this.attention}); - - factory RelationInfo.fromJson(Map json) => RelationInfo( - attention: json['attention'] as int?, - ); -} diff --git a/lib/models_new/live/live_room_info_h5/room_info.dart b/lib/models_new/live/live_room_info_h5/room_info.dart index 26c4cc971..9b575d584 100644 --- a/lib/models_new/live/live_room_info_h5/room_info.dart +++ b/lib/models_new/live/live_room_info_h5/room_info.dart @@ -1,44 +1,24 @@ -import 'package:PiliPlus/models_new/live/live_room_info_h5/pendants.dart'; - class RoomInfo { int? uid; int? roomId; String? title; String? cover; - String? description; int? liveStatus; int? liveStartTime; - int? areaId; - String? areaName; - int? parentAreaId; - String? parentAreaName; int? online; - String? keyframe; - String? background; String? appBackground; - Pendants? pendants; String? subSessionKey; - String? liveId; RoomInfo({ this.uid, this.roomId, this.title, this.cover, - this.description, this.liveStatus, this.liveStartTime, - this.areaId, - this.areaName, - this.parentAreaId, - this.parentAreaName, this.online, - this.keyframe, - this.background, this.appBackground, - this.pendants, this.subSessionKey, - this.liveId, }); factory RoomInfo.fromJson(Map json) => RoomInfo( @@ -46,21 +26,10 @@ class RoomInfo { roomId: json['room_id'] as int?, title: json['title'] as String?, cover: json['cover'] as String?, - description: json['description'] as String?, liveStatus: json['live_status'] as int?, liveStartTime: json['live_start_time'] as int?, - areaId: json['area_id'] as int?, - areaName: json['area_name'] as String?, - parentAreaId: json['parent_area_id'] as int?, - parentAreaName: json['parent_area_name'] as String?, online: json['online'] as int?, - keyframe: json['keyframe'] as String?, - background: json['background'] as String?, appBackground: json['app_background'] as String?, - pendants: json['pendants'] == null - ? null - : Pendants.fromJson(json['pendants'] as Map), subSessionKey: json['sub_session_key'] as String?, - liveId: json['live_id'] as String?, ); } diff --git a/lib/models_new/live/live_room_play_info/codec.dart b/lib/models_new/live/live_room_play_info/codec.dart index a74c38b89..f918cf1c1 100644 --- a/lib/models_new/live/live_room_play_info/codec.dart +++ b/lib/models_new/live/live_room_play_info/codec.dart @@ -1,5 +1,5 @@ import 'package:PiliPlus/models_new/live/live_room_play_info/url_info.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/iterable_ext.dart'; class CodecItem { String? codecName; diff --git a/lib/models_new/live/live_room_play_info/data.dart b/lib/models_new/live/live_room_play_info/data.dart index d4059ea35..38186d4a4 100644 --- a/lib/models_new/live/live_room_play_info/data.dart +++ b/lib/models_new/live/live_room_play_info/data.dart @@ -4,47 +4,19 @@ class RoomPlayInfoData { int? roomId; int? shortId; int? uid; - bool? isHidden; - bool? isLocked; bool? isPortrait; int? liveStatus; - int? hiddenTill; - int? lockTill; - bool? encrypted; - bool? pwdVerified; int? liveTime; - int? roomShield; - List? allSpecialTypes; PlayurlInfo? playurlInfo; - int? officialType; - int? officialRoomId; - int? riskWithDelay; - String? multiScreenInfo; - dynamic pureControlFunction; - dynamic degradedPlayurl; RoomPlayInfoData({ this.roomId, this.shortId, this.uid, - this.isHidden, - this.isLocked, this.isPortrait, this.liveStatus, - this.hiddenTill, - this.lockTill, - this.encrypted, - this.pwdVerified, this.liveTime, - this.roomShield, - this.allSpecialTypes, this.playurlInfo, - this.officialType, - this.officialRoomId, - this.riskWithDelay, - this.multiScreenInfo, - this.pureControlFunction, - this.degradedPlayurl, }); factory RoomPlayInfoData.fromJson(Map json) => @@ -52,27 +24,13 @@ class RoomPlayInfoData { roomId: json['room_id'] as int?, shortId: json['short_id'] as int?, uid: json['uid'] as int?, - isHidden: json['is_hidden'] as bool?, - isLocked: json['is_locked'] as bool?, isPortrait: json['is_portrait'] as bool?, liveStatus: json['live_status'] as int?, - hiddenTill: json['hidden_till'] as int?, - lockTill: json['lock_till'] as int?, - encrypted: json['encrypted'] as bool?, - pwdVerified: json['pwd_verified'] as bool?, liveTime: json['live_time'] as int?, - roomShield: json['room_shield'] as int?, - allSpecialTypes: json['all_special_types'] as List?, playurlInfo: json['playurl_info'] == null ? null : PlayurlInfo.fromJson( json['playurl_info'] as Map, ), - officialType: json['official_type'] as int?, - officialRoomId: json['official_room_id'] as int?, - riskWithDelay: json['risk_with_delay'] as int?, - multiScreenInfo: json['multi_screen_info'] as String?, - pureControlFunction: json['pure_control_function'] as dynamic, - degradedPlayurl: json['degraded_playurl'] as dynamic, ); } diff --git a/lib/models_new/live/live_room_play_info/expected_quality.dart b/lib/models_new/live/live_room_play_info/expected_quality.dart deleted file mode 100644 index 50dc9526c..000000000 --- a/lib/models_new/live/live_room_play_info/expected_quality.dart +++ /dev/null @@ -1,13 +0,0 @@ -class ExpectedQuality { - int? qn; - int? hdrType; - - ExpectedQuality({this.qn, this.hdrType}); - - factory ExpectedQuality.fromJson(Map json) { - return ExpectedQuality( - qn: json['qn'] as int?, - hdrType: json['hdr_type'] as int?, - ); - } -} diff --git a/lib/models_new/live/live_room_play_info/g_qn_desc.dart b/lib/models_new/live/live_room_play_info/g_qn_desc.dart deleted file mode 100644 index 9992d08d8..000000000 --- a/lib/models_new/live/live_room_play_info/g_qn_desc.dart +++ /dev/null @@ -1,26 +0,0 @@ -class GQnDesc { - int? qn; - String? desc; - String? hdrDesc; - dynamic attrDesc; - int? hdrType; - dynamic mediaBaseDesc; - - GQnDesc({ - this.qn, - this.desc, - this.hdrDesc, - this.attrDesc, - this.hdrType, - this.mediaBaseDesc, - }); - - factory GQnDesc.fromJson(Map json) => GQnDesc( - qn: json['qn'] as int?, - desc: json['desc'] as String?, - hdrDesc: json['hdr_desc'] as String?, - attrDesc: json['attr_desc'] as dynamic, - hdrType: json['hdr_type'] as int?, - mediaBaseDesc: json['media_base_desc'] as dynamic, - ); -} diff --git a/lib/models_new/live/live_room_play_info/p2p_data.dart b/lib/models_new/live/live_room_play_info/p2p_data.dart deleted file mode 100644 index e2a1b1f0c..000000000 --- a/lib/models_new/live/live_room_play_info/p2p_data.dart +++ /dev/null @@ -1,15 +0,0 @@ -class P2pData { - bool? p2p; - int? p2pType; - bool? mP2p; - dynamic mServers; - - P2pData({this.p2p, this.p2pType, this.mP2p, this.mServers}); - - factory P2pData.fromJson(Map json) => P2pData( - p2p: json['p2p'] as bool?, - p2pType: json['p2p_type'] as int?, - mP2p: json['m_p2p'] as bool?, - mServers: json['m_servers'] as dynamic, - ); -} diff --git a/lib/models_new/live/live_room_play_info/playurl.dart b/lib/models_new/live/live_room_play_info/playurl.dart index 60d0b982e..f8b220fb9 100644 --- a/lib/models_new/live/live_room_play_info/playurl.dart +++ b/lib/models_new/live/live_room_play_info/playurl.dart @@ -1,33 +1,18 @@ -import 'package:PiliPlus/models_new/live/live_room_play_info/g_qn_desc.dart'; -import 'package:PiliPlus/models_new/live/live_room_play_info/p2p_data.dart'; import 'package:PiliPlus/models_new/live/live_room_play_info/stream.dart'; class Playurl { int? cid; - List? gQnDesc; List? stream; - P2pData? p2pData; - dynamic dolbyQn; Playurl({ this.cid, - this.gQnDesc, this.stream, - this.p2pData, - this.dolbyQn, }); factory Playurl.fromJson(Map json) => Playurl( cid: json['cid'] as int?, - gQnDesc: (json['g_qn_desc'] as List?) - ?.map((e) => GQnDesc.fromJson(e as Map)) - .toList(), stream: (json['stream'] as List?) ?.map((e) => Stream.fromJson(e as Map)) .toList(), - p2pData: json['p2p_data'] == null - ? null - : P2pData.fromJson(json['p2p_data'] as Map), - dolbyQn: json['dolby_qn'] as dynamic, ); } diff --git a/lib/models_new/live/live_room_play_info/playurl_info.dart b/lib/models_new/live/live_room_play_info/playurl_info.dart index d2ed789c9..d25399d6c 100644 --- a/lib/models_new/live/live_room_play_info/playurl_info.dart +++ b/lib/models_new/live/live_room_play_info/playurl_info.dart @@ -1,29 +1,15 @@ -import 'package:PiliPlus/models_new/live/live_room_play_info/expected_quality.dart'; import 'package:PiliPlus/models_new/live/live_room_play_info/playurl.dart'; class PlayurlInfo { - String? confJson; Playurl? playurl; - ExpectedQuality? expectedQuality; - int? qnDescMoreAb; PlayurlInfo({ - this.confJson, this.playurl, - this.expectedQuality, - this.qnDescMoreAb, }); factory PlayurlInfo.fromJson(Map json) => PlayurlInfo( - confJson: json['conf_json'] as String?, playurl: json['playurl'] == null ? null : Playurl.fromJson(json['playurl'] as Map), - expectedQuality: json['expected_quality'] == null - ? null - : ExpectedQuality.fromJson( - json['expected_quality'] as Map, - ), - qnDescMoreAb: json['qn_desc_more_ab'] as int?, ); } diff --git a/lib/models_new/live/live_search/data.dart b/lib/models_new/live/live_search/data.dart index 135081949..7a5853b95 100644 --- a/lib/models_new/live/live_search/data.dart +++ b/lib/models_new/live/live_search/data.dart @@ -7,9 +7,6 @@ class LiveSearchData { int? pagesize; Room? room; User? user; - String? trackId; - String? abtestId; - String? query; LiveSearchData({ this.type, @@ -17,9 +14,6 @@ class LiveSearchData { this.pagesize, this.room, this.user, - this.trackId, - this.abtestId, - this.query, }); factory LiveSearchData.fromJson(Map json) => LiveSearchData( @@ -32,8 +26,5 @@ class LiveSearchData { user: json['user'] == null ? null : User.fromJson(json['user'] as Map), - trackId: json['track_id'] as String?, - abtestId: json['abtest_id'] as String?, - query: json['query'] as String?, ); } diff --git a/lib/models_new/live/live_search/room_item.dart b/lib/models_new/live/live_search/room_item.dart index 6a2e97046..d5d53e023 100644 --- a/lib/models_new/live/live_search/room_item.dart +++ b/lib/models_new/live/live_search/room_item.dart @@ -6,8 +6,6 @@ class LiveSearchRoomItemModel { String? title; String? name; String? face; - int? online; - String? link; WatchedShow? watchedShow; LiveSearchRoomItemModel({ @@ -16,8 +14,6 @@ class LiveSearchRoomItemModel { this.title, this.name, this.face, - this.online, - this.link, this.watchedShow, }); @@ -28,8 +24,6 @@ class LiveSearchRoomItemModel { title: json['title'] as String?, name: json['name'] as String?, face: json['face'] as String?, - online: json['online'] as int?, - link: json['link'] as String?, watchedShow: json['watched_show'] == null ? null : WatchedShow.fromJson( diff --git a/lib/models_new/live/live_search/user_item.dart b/lib/models_new/live/live_search/user_item.dart index 6e0ba5651..9b088a442 100644 --- a/lib/models_new/live/live_search/user_item.dart +++ b/lib/models_new/live/live_search/user_item.dart @@ -5,7 +5,6 @@ class LiveSearchUserItemModel { String? areaName; int? fansNum; int? roomid; - String? link; LiveSearchUserItemModel({ this.face, @@ -14,7 +13,6 @@ class LiveSearchUserItemModel { this.areaName, this.fansNum, this.roomid, - this.link, }); factory LiveSearchUserItemModel.fromJson(Map json) => @@ -25,6 +23,5 @@ class LiveSearchUserItemModel { areaName: json['areaName'] as String?, fansNum: json['fansNum'] as int?, roomid: json['roomid'] as int?, - link: json['link'] as String?, ); } diff --git a/lib/models_new/msg/msg_like/item.dart b/lib/models_new/msg/msg_like/item.dart index 2afe529bd..b601d213f 100644 --- a/lib/models_new/msg/msg_like/item.dart +++ b/lib/models_new/msg/msg_like/item.dart @@ -1,5 +1,4 @@ import 'package:PiliPlus/models_new/msg/msg_like/content.dart'; - import 'package:PiliPlus/models_new/msg/msg_like/user.dart'; class MsgLikeItem { diff --git a/lib/models_new/msg/msg_reply/item.dart b/lib/models_new/msg/msg_reply/item.dart index c68650680..ba61abea7 100644 --- a/lib/models_new/msg/msg_reply/item.dart +++ b/lib/models_new/msg/msg_reply/item.dart @@ -1,5 +1,4 @@ import 'package:PiliPlus/models_new/msg/msg_reply/content.dart'; - import 'package:PiliPlus/models_new/msg/msg_reply/user.dart'; class MsgReplyItem { diff --git a/lib/models_new/music/bgm_detail.dart b/lib/models_new/music/bgm_detail.dart index 85104af9f..053c757b5 100644 --- a/lib/models_new/music/bgm_detail.dart +++ b/lib/models_new/music/bgm_detail.dart @@ -1,5 +1,5 @@ import 'package:PiliPlus/models/model_owner.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/iterable_ext.dart'; class MusicDetail { MusicDetail({ diff --git a/lib/models_new/reply/cursor.dart b/lib/models_new/reply/cursor.dart index 4477310ea..b225ba1fd 100644 --- a/lib/models_new/reply/cursor.dart +++ b/lib/models_new/reply/cursor.dart @@ -1,5 +1,5 @@ import 'package:PiliPlus/models_new/reply/pagination_reply.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/iterable_ext.dart'; class ReplyCursor { bool? isBegin; diff --git a/lib/models_new/reply/member.dart b/lib/models_new/reply/member.dart index 20accc12f..7c9b085b2 100644 --- a/lib/models_new/reply/member.dart +++ b/lib/models_new/reply/member.dart @@ -1,5 +1,4 @@ import 'package:PiliPlus/models/model_avatar.dart'; - import 'package:PiliPlus/models_new/reply/level_info.dart'; import 'package:PiliPlus/models_new/reply/nameplate.dart'; import 'package:PiliPlus/models_new/reply/senior.dart'; diff --git a/lib/models_new/space/space_article/item.dart b/lib/models_new/space/space_article/item.dart index 48fe8752a..94237d2dd 100644 --- a/lib/models_new/space/space_article/item.dart +++ b/lib/models_new/space/space_article/item.dart @@ -2,7 +2,7 @@ import 'package:PiliPlus/models_new/space/space_article/author.dart'; import 'package:PiliPlus/models_new/space/space_article/category.dart'; import 'package:PiliPlus/models_new/space/space_article/media.dart'; import 'package:PiliPlus/models_new/space/space_article/stats.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/iterable_ext.dart'; class SpaceArticleItem { int? id; diff --git a/lib/models_new/space/space_cheese/item.dart b/lib/models_new/space/space_cheese/item.dart index 3f8f8d573..d5bc1a481 100644 --- a/lib/models_new/space/space_cheese/item.dart +++ b/lib/models_new/space/space_cheese/item.dart @@ -1,4 +1,4 @@ -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/iterable_ext.dart'; class SpaceCheeseItem { bool? cooperated; diff --git a/lib/models_new/space/space_season_series/season.dart b/lib/models_new/space/space_season_series/season.dart index 352d96cbb..03ead644b 100644 --- a/lib/models_new/space/space_season_series/season.dart +++ b/lib/models_new/space/space_season_series/season.dart @@ -1,6 +1,6 @@ import 'package:PiliPlus/models_new/space/space_season_series/archive.dart'; import 'package:PiliPlus/models_new/space/space_season_series/stat.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/iterable_ext.dart'; class SpaceSsModel { List? archives; diff --git a/lib/models_new/space/space_shop/item.dart b/lib/models_new/space/space_shop/item.dart index c3f93a92d..c9b20c0ea 100644 --- a/lib/models_new/space/space_shop/item.dart +++ b/lib/models_new/space/space_shop/item.dart @@ -5,7 +5,7 @@ import 'package:PiliPlus/models_new/space/space_shop/net_price.dart'; import 'package:PiliPlus/models_new/space/space_shop/report_params.dart'; import 'package:PiliPlus/models_new/space/space_shop/source_desc.dart'; import 'package:PiliPlus/models_new/space/space_shop/source_front_tag.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/iterable_ext.dart'; class SpaceShopItem { String? contentId; diff --git a/lib/models_new/upower_rank/data.dart b/lib/models_new/upower_rank/data.dart index 351aa9121..54d4e3bb7 100644 --- a/lib/models_new/upower_rank/data.dart +++ b/lib/models_new/upower_rank/data.dart @@ -2,7 +2,7 @@ import 'package:PiliPlus/models_new/upower_rank/level_info.dart'; import 'package:PiliPlus/models_new/upower_rank/rank_info.dart'; import 'package:PiliPlus/models_new/upower_rank/up_info.dart'; import 'package:PiliPlus/models_new/upower_rank/user_info.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/iterable_ext.dart'; class UpowerRankData { UpInfo? upInfo; diff --git a/lib/models_new/video/video_detail/data.dart b/lib/models_new/video/video_detail/data.dart index a7adda5db..e76113184 100644 --- a/lib/models_new/video/video_detail/data.dart +++ b/lib/models_new/video/video_detail/data.dart @@ -1,7 +1,7 @@ +import 'package:PiliPlus/models/model_owner.dart'; import 'package:PiliPlus/models_new/video/video_detail/argue_info.dart'; import 'package:PiliPlus/models_new/video/video_detail/desc_v2.dart'; import 'package:PiliPlus/models_new/video/video_detail/dimension.dart'; -import 'package:PiliPlus/models_new/video/video_detail/owner.dart'; import 'package:PiliPlus/models_new/video/video_detail/page.dart'; import 'package:PiliPlus/models_new/video/video_detail/rights.dart'; import 'package:PiliPlus/models_new/video/video_detail/staff.dart'; diff --git a/lib/models_new/video/video_detail/owner.dart b/lib/models_new/video/video_detail/owner.dart deleted file mode 100644 index b0565f08b..000000000 --- a/lib/models_new/video/video_detail/owner.dart +++ /dev/null @@ -1,13 +0,0 @@ -class Owner { - int? mid; - String? name; - String? face; - - Owner({this.mid, this.name, this.face}); - - factory Owner.fromJson(Map json) => Owner( - mid: json['mid'] as int?, - name: json['name'] as String?, - face: json['face'] as String?, - ); -} diff --git a/lib/models_new/video/video_shot/data.dart b/lib/models_new/video/video_shot/data.dart index 71e2adda6..26291b303 100644 --- a/lib/models_new/video/video_shot/data.dart +++ b/lib/models_new/video/video_shot/data.dart @@ -1,4 +1,5 @@ -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/iterable_ext.dart'; +import 'package:PiliPlus/utils/extension/string_ext.dart'; class VideoShotData { String? pvdata; diff --git a/lib/pages/about/view.dart b/lib/pages/about/view.dart index 3bab2a2b5..a5b4b014a 100644 --- a/lib/pages/about/view.dart +++ b/lib/pages/about/view.dart @@ -11,10 +11,11 @@ import 'package:PiliPlus/services/logger.dart'; import 'package:PiliPlus/utils/accounts.dart'; import 'package:PiliPlus/utils/accounts/account.dart'; import 'package:PiliPlus/utils/cache_manager.dart'; -import 'package:PiliPlus/utils/context_ext.dart'; import 'package:PiliPlus/utils/date_utils.dart'; +import 'package:PiliPlus/utils/extension/context_ext.dart'; import 'package:PiliPlus/utils/login_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/update.dart'; import 'package:PiliPlus/utils/utils.dart'; @@ -137,7 +138,7 @@ class _AboutPageState extends State { ListTile( onTap: () => Update.checkUpdate(false), onLongPress: () => Utils.copyText(currentVersion), - onSecondaryTap: Utils.isMobile + onSecondaryTap: PlatformUtils.isMobile ? null : () => Utils.copyText(currentVersion), title: const Text('当前版本'), @@ -159,7 +160,7 @@ Commit Hash: ${BuildConfig.commitHash}''', '${Constants.sourceCodeUrl}/commit/${BuildConfig.commitHash}', ), onLongPress: () => Utils.copyText(BuildConfig.commitHash), - onSecondaryTap: Utils.isMobile + onSecondaryTap: PlatformUtils.isMobile ? null : () => Utils.copyText(BuildConfig.commitHash), ), @@ -199,7 +200,9 @@ Commit Hash: ${BuildConfig.commitHash}''', ListTile( onTap: () => Get.toNamed('/logs'), onLongPress: LoggerUtils.clearLogs, - onSecondaryTap: Utils.isMobile ? null : LoggerUtils.clearLogs, + onSecondaryTap: PlatformUtils.isMobile + ? null + : LoggerUtils.clearLogs, leading: const Icon(Icons.bug_report_outlined), title: const Text('错误日志'), subtitle: Text('长按清除日志', style: subTitleStyle), diff --git a/lib/pages/article/controller.dart b/lib/pages/article/controller.dart index 3560a22fe..2c5e718d0 100644 --- a/lib/pages/article/controller.dart +++ b/lib/pages/article/controller.dart @@ -10,7 +10,8 @@ import 'package:PiliPlus/models_new/article/article_view/data.dart'; import 'package:PiliPlus/pages/common/dyn/common_dyn_controller.dart'; import 'package:PiliPlus/utils/accounts.dart'; import 'package:PiliPlus/utils/app_scheme.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/get_ext.dart'; +import 'package:PiliPlus/utils/extension/num_ext.dart'; import 'package:PiliPlus/utils/storage_pref.dart'; import 'package:PiliPlus/utils/url_utils.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; diff --git a/lib/pages/article/view.dart b/lib/pages/article/view.dart index 14c80cbc8..1f1bec5a2 100644 --- a/lib/pages/article/view.dart +++ b/lib/pages/article/view.dart @@ -15,7 +15,7 @@ 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/utils/date_utils.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/get_ext.dart'; import 'package:PiliPlus/utils/grid.dart'; import 'package:PiliPlus/utils/image_utils.dart'; import 'package:PiliPlus/utils/num_utils.dart'; diff --git a/lib/pages/article/widgets/article_ops.dart b/lib/pages/article/widgets/article_ops.dart index c3c1e459b..a5a46fb53 100644 --- a/lib/pages/article/widgets/article_ops.dart +++ b/lib/pages/article/widgets/article_ops.dart @@ -2,7 +2,7 @@ import 'package:PiliPlus/common/constants.dart'; import 'package:PiliPlus/models_new/article/article_view/ops.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/extension/iterable_ext.dart'; import 'package:PiliPlus/utils/image_utils.dart'; import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/material.dart'; diff --git a/lib/pages/article/widgets/opus_content.dart b/lib/pages/article/widgets/opus_content.dart index 0976c6add..20dd5ef14 100644 --- a/lib/pages/article/widgets/opus_content.dart +++ b/lib/pages/article/widgets/opus_content.dart @@ -11,8 +11,8 @@ import 'package:PiliPlus/models/dynamics/article_content_model.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/context_ext.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/context_ext.dart'; +import 'package:PiliPlus/utils/extension/string_ext.dart'; import 'package:PiliPlus/utils/image_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:cached_network_image/cached_network_image.dart'; diff --git a/lib/pages/audio/controller.dart b/lib/pages/audio/controller.dart index ff8daa19f..858163ad5 100644 --- a/lib/pages/audio/controller.dart +++ b/lib/pages/audio/controller.dart @@ -26,10 +26,12 @@ import 'package:PiliPlus/plugin/pl_player/models/play_repeat.dart'; import 'package:PiliPlus/plugin/pl_player/models/play_status.dart'; import 'package:PiliPlus/services/service_locator.dart'; import 'package:PiliPlus/utils/accounts.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/iterable_ext.dart'; +import 'package:PiliPlus/utils/extension/num_ext.dart'; import 'package:PiliPlus/utils/global_data.dart'; import 'package:PiliPlus/utils/id_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/storage_pref.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:PiliPlus/utils/video_utils.dart'; @@ -507,7 +509,7 @@ class AudioController extends GetxController PageUtils.launchURL(audioUrl); }, ), - if (Utils.isMobile) + if (PlatformUtils.isMobile) ListTile( dense: true, title: const Text( diff --git a/lib/pages/audio/view.dart b/lib/pages/audio/view.dart index d0669face..dbfa9fe00 100644 --- a/lib/pages/audio/view.dart +++ b/lib/pages/audio/view.dart @@ -13,9 +13,13 @@ import 'package:PiliPlus/pages/video/introduction/ugc/widgets/action_item.dart'; import 'package:PiliPlus/plugin/pl_player/models/play_repeat.dart'; import 'package:PiliPlus/utils/date_utils.dart'; import 'package:PiliPlus/utils/duration_utils.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/num_ext.dart'; +import 'package:PiliPlus/utils/extension/size_ext.dart'; +import 'package:PiliPlus/utils/extension/string_ext.dart'; +import 'package:PiliPlus/utils/extension/theme_ext.dart'; import 'package:PiliPlus/utils/num_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/storage_key.dart'; import 'package:PiliPlus/utils/utils.dart'; @@ -170,7 +174,8 @@ class _AudioPageState extends State { final theme = Theme.of(context); final colorScheme = theme.colorScheme; return FractionallySizedBox( - heightFactor: Utils.isMobile && !context.mediaQuerySize.isPortrait + heightFactor: + PlatformUtils.isMobile && !context.mediaQuerySize.isPortrait ? 1.0 : 0.7, alignment: Alignment.bottomCenter, @@ -752,7 +757,7 @@ class _AudioPageState extends State { onSeek: _onSeek, ), ); - if (Utils.isDesktop) { + if (PlatformUtils.isDesktop) { return MouseRegion( cursor: SystemMouseCursors.click, child: child, diff --git a/lib/pages/common/common_controller.dart b/lib/pages/common/common_controller.dart index 498d7d3e0..98eb357d1 100644 --- a/lib/pages/common/common_controller.dart +++ b/lib/pages/common/common_controller.dart @@ -1,7 +1,7 @@ import 'dart:async'; import 'package:PiliPlus/http/loading_state.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/scroll_controller_ext.dart'; import 'package:easy_debounce/easy_throttle.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; diff --git a/lib/pages/common/common_list_controller.dart b/lib/pages/common/common_list_controller.dart index 3f4a43d44..3f0d8ace4 100644 --- a/lib/pages/common/common_list_controller.dart +++ b/lib/pages/common/common_list_controller.dart @@ -1,6 +1,6 @@ import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/pages/common/common_controller.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/iterable_ext.dart'; import 'package:get/get.dart'; abstract class CommonListController extends CommonController { diff --git a/lib/pages/common/dyn/common_dyn_page.dart b/lib/pages/common/dyn/common_dyn_page.dart index ac86c63ae..f5c184a4e 100644 --- a/lib/pages/common/dyn/common_dyn_page.dart +++ b/lib/pages/common/dyn/common_dyn_page.dart @@ -10,7 +10,7 @@ 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/extension.dart'; +import 'package:PiliPlus/utils/extension/size_ext.dart'; import 'package:PiliPlus/utils/feed_back.dart'; import 'package:PiliPlus/utils/num_utils.dart'; import 'package:PiliPlus/utils/storage.dart'; diff --git a/lib/pages/common/publish/common_publish_page.dart b/lib/pages/common/publish/common_publish_page.dart index c6ca1f086..1b8659c4d 100644 --- a/lib/pages/common/publish/common_publish_page.dart +++ b/lib/pages/common/publish/common_publish_page.dart @@ -3,7 +3,7 @@ import 'dart:io'; import 'dart:math' show max; import 'package:PiliPlus/models/common/publish_panel_type.dart'; -import 'package:PiliPlus/utils/context_ext.dart'; +import 'package:PiliPlus/utils/extension/context_ext.dart'; import 'package:chat_bottom_container/chat_bottom_container.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart' hide ContextExtensionss; 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 76322b2de..f412bc1b4 100644 --- a/lib/pages/common/publish/common_rich_text_pub_page.dart +++ b/lib/pages/common/publish/common_rich_text_pub_page.dart @@ -12,10 +12,11 @@ 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/extension/file_ext.dart'; +import 'package:PiliPlus/utils/extension/theme_ext.dart'; import 'package:PiliPlus/utils/feed_back.dart'; import 'package:PiliPlus/utils/page_utils.dart'; -import 'package:PiliPlus/utils/utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:dio/dio.dart' show CancelToken; import 'package:easy_debounce/easy_throttle.dart'; import 'package:flutter/material.dart'; @@ -61,7 +62,7 @@ abstract class CommonRichTextPubPageState @override void dispose() { - if (Utils.isMobile) { + if (PlatformUtils.isMobile) { for (var i in pathList) { File(i).tryDel(); } @@ -82,7 +83,7 @@ abstract class CommonRichTextPubPageState void onClear() { final path = pathList.removeAt(index); - if (Utils.isMobile) { + if (PlatformUtils.isMobile) { File(path).tryDel(); } if (pathList.isEmpty && editController.rawText.trim().isEmpty) { @@ -110,7 +111,7 @@ abstract class CommonRichTextPubPageState controller.restoreChatPanel(); }, onLongPress: onClear, - onSecondaryTap: Utils.isMobile ? null : onClear, + onSecondaryTap: PlatformUtils.isMobile ? null : onClear, child: ClipRRect( borderRadius: const BorderRadius.all(Radius.circular(4)), child: Image( @@ -121,7 +122,7 @@ abstract class CommonRichTextPubPageState ), ), ), - if (Utils.isMobile) + if (PlatformUtils.isMobile) Positioned( top: 34, right: 5, diff --git a/lib/pages/download/detail/widgets/item.dart b/lib/pages/download/detail/widgets/item.dart index eefb973db..ef9c42e1f 100644 --- a/lib/pages/download/detail/widgets/item.dart +++ b/lib/pages/download/detail/widgets/item.dart @@ -15,11 +15,11 @@ import 'package:PiliPlus/pages/download/downloading/view.dart'; import 'package:PiliPlus/services/download/download_service.dart'; import 'package:PiliPlus/utils/cache_manager.dart'; import 'package:PiliPlus/utils/duration_utils.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/num_ext.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/path_utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/storage.dart'; -import 'package:PiliPlus/utils/utils.dart'; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; @@ -156,7 +156,7 @@ class DetailItem extends StatelessWidget { } }, onLongPress: onLongPress, - onSecondaryTap: Utils.isMobile ? null : onLongPress, + onSecondaryTap: PlatformUtils.isMobile ? null : onLongPress, child: Padding( padding: const EdgeInsets.symmetric( horizontal: StyleString.safeSpace, diff --git a/lib/pages/download/view.dart b/lib/pages/download/view.dart index 2df5d58b9..8fe9e74c6 100644 --- a/lib/pages/download/view.dart +++ b/lib/pages/download/view.dart @@ -16,8 +16,8 @@ import 'package:PiliPlus/pages/download/detail/widgets/item.dart'; import 'package:PiliPlus/pages/download/search/view.dart'; import 'package:PiliPlus/services/download/download_service.dart'; import 'package:PiliPlus/utils/grid.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/storage.dart'; -import 'package:PiliPlus/utils/utils.dart'; import 'package:flutter/material.dart' hide SliverGridDelegateWithMaxCrossAxisExtent; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; @@ -309,7 +309,7 @@ class _DownloadPageState extends State { ); }, onLongPress: onLongPress, - onSecondaryTap: Utils.isMobile ? null : onLongPress, + onSecondaryTap: PlatformUtils.isMobile ? null : onLongPress, child: Padding( padding: const EdgeInsets.symmetric( horizontal: StyleString.safeSpace, diff --git a/lib/pages/dynamics/controller.dart b/lib/pages/dynamics/controller.dart index 134d720f8..eba68a0a0 100644 --- a/lib/pages/dynamics/controller.dart +++ b/lib/pages/dynamics/controller.dart @@ -10,7 +10,9 @@ import 'package:PiliPlus/pages/common/common_controller.dart'; import 'package:PiliPlus/pages/dynamics_tab/controller.dart'; import 'package:PiliPlus/services/account_service.dart'; import 'package:PiliPlus/utils/accounts.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/iterable_ext.dart'; +import 'package:PiliPlus/utils/extension/scroll_controller_ext.dart'; +import 'package:PiliPlus/utils/extension/string_ext.dart'; import 'package:PiliPlus/utils/storage_pref.dart'; import 'package:easy_debounce/easy_throttle.dart'; import 'package:flutter/material.dart'; diff --git a/lib/pages/dynamics/widgets/author_panel.dart b/lib/pages/dynamics/widgets/author_panel.dart index f174b891a..7790d11f0 100644 --- a/lib/pages/dynamics/widgets/author_panel.dart +++ b/lib/pages/dynamics/widgets/author_panel.dart @@ -11,9 +11,10 @@ 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_utils.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/context_ext.dart'; +import 'package:PiliPlus/utils/extension/string_ext.dart'; +import 'package:PiliPlus/utils/extension/theme_ext.dart'; import 'package:PiliPlus/utils/feed_back.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/request_utils.dart'; diff --git a/lib/pages/dynamics/widgets/dynamic_panel.dart b/lib/pages/dynamics/widgets/dynamic_panel.dart index f01417939..5b3bdb07a 100644 --- a/lib/pages/dynamics/widgets/dynamic_panel.dart +++ b/lib/pages/dynamics/widgets/dynamic_panel.dart @@ -5,7 +5,7 @@ import 'package:PiliPlus/pages/dynamics/widgets/action_panel.dart'; import 'package:PiliPlus/pages/dynamics/widgets/author_panel.dart'; import 'package:PiliPlus/pages/dynamics/widgets/dyn_content.dart'; import 'package:PiliPlus/utils/page_utils.dart'; -import 'package:PiliPlus/utils/utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:flutter/material.dart' hide InkWell; class DynamicPanel extends StatelessWidget { @@ -67,7 +67,7 @@ class DynamicPanel extends StatelessWidget { ? null : () => PageUtils.pushDynDetail(item), onLongPress: showMore, - onSecondaryTap: Utils.isMobile ? null : showMore, + onSecondaryTap: PlatformUtils.isMobile ? null : showMore, child: Column( mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, diff --git a/lib/pages/dynamics/widgets/forward_panel.dart b/lib/pages/dynamics/widgets/forward_panel.dart index 303e88ab9..ba6f12ce2 100644 --- a/lib/pages/dynamics/widgets/forward_panel.dart +++ b/lib/pages/dynamics/widgets/forward_panel.dart @@ -5,7 +5,7 @@ import 'package:PiliPlus/pages/dynamics/widgets/dyn_content.dart'; import 'package:PiliPlus/pages/dynamics/widgets/module_panel.dart'; import 'package:PiliPlus/utils/date_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; -import 'package:PiliPlus/utils/utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:flutter/material.dart' hide InkWell; import 'package:get/get.dart'; @@ -100,7 +100,7 @@ Widget forwardPanel( return InkWell( onTap: () => PageUtils.pushDynDetail(orig), onLongPress: showMore, - onSecondaryTap: Utils.isMobile ? null : showMore, + onSecondaryTap: PlatformUtils.isMobile ? null : showMore, child: child, ); } diff --git a/lib/pages/dynamics/widgets/module_panel.dart b/lib/pages/dynamics/widgets/module_panel.dart index 383a2e494..0e88fe37b 100644 --- a/lib/pages/dynamics/widgets/module_panel.dart +++ b/lib/pages/dynamics/widgets/module_panel.dart @@ -11,7 +11,7 @@ import 'package:PiliPlus/pages/dynamics/widgets/live_panel.dart'; import 'package:PiliPlus/pages/dynamics/widgets/live_panel_sub.dart'; import 'package:PiliPlus/pages/dynamics/widgets/live_rcmd_panel.dart'; import 'package:PiliPlus/pages/dynamics/widgets/video_panel.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/string_ext.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/material.dart' hide InkWell; diff --git a/lib/pages/dynamics/widgets/up_panel.dart b/lib/pages/dynamics/widgets/up_panel.dart index 486480c30..92dd25d18 100644 --- a/lib/pages/dynamics/widgets/up_panel.dart +++ b/lib/pages/dynamics/widgets/up_panel.dart @@ -8,7 +8,7 @@ import 'package:PiliPlus/pages/live_follow/view.dart'; import 'package:PiliPlus/utils/accounts.dart'; import 'package:PiliPlus/utils/feed_back.dart'; import 'package:PiliPlus/utils/page_utils.dart'; -import 'package:PiliPlus/utils/utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:flutter/material.dart' hide InkWell; import 'package:get/get.dart'; @@ -51,7 +51,7 @@ class _UpPanelState extends State { controller.showLiveUp = !controller.showLiveUp; }), onLongPress: toFollowPage, - onSecondaryTap: Utils.isMobile ? null : toFollowPage, + onSecondaryTap: PlatformUtils.isMobile ? null : toFollowPage, child: Container( alignment: Alignment.center, height: isTop ? 76 : 60, @@ -201,7 +201,7 @@ class _UpPanelState extends State { }, // onDoubleTap: isLive ? () => _onSelect(data) : null, onLongPress: !isAll ? toMemberPage : null, - onSecondaryTap: !isAll && !Utils.isMobile ? toMemberPage : null, + onSecondaryTap: !isAll && !PlatformUtils.isMobile ? toMemberPage : null, child: Opacity( opacity: isCurrent ? 1 : 0.6, child: Column( diff --git a/lib/pages/dynamics_create/view.dart b/lib/pages/dynamics_create/view.dart index 8af3c0694..3b7b0d7ce 100644 --- a/lib/pages/dynamics_create/view.dart +++ b/lib/pages/dynamics_create/view.dart @@ -24,8 +24,8 @@ 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_utils.dart'; +import 'package:PiliPlus/utils/extension/context_ext.dart'; import 'package:PiliPlus/utils/grid.dart'; import 'package:PiliPlus/utils/request_utils.dart'; import 'package:flutter/foundation.dart' show kDebugMode; diff --git a/lib/pages/dynamics_create_vote/view.dart b/lib/pages/dynamics_create_vote/view.dart index 0e70093bf..09d898244 100644 --- a/lib/pages/dynamics_create_vote/view.dart +++ b/lib/pages/dynamics_create_vote/view.dart @@ -5,7 +5,8 @@ import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/models/dynamics/vote_model.dart'; import 'package:PiliPlus/pages/dynamics_create_vote/controller.dart'; import 'package:PiliPlus/utils/date_utils.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/file_ext.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:easy_debounce/easy_throttle.dart'; import 'package:flutter/material.dart'; @@ -419,7 +420,7 @@ class _CreateVotePageState extends State { if (pickedFile != null) { final path = pickedFile.path; _controller.onUpload(index, path).whenComplete(() { - if (Utils.isMobile) { + if (PlatformUtils.isMobile) { File(path).tryDel(); } }); diff --git a/lib/pages/dynamics_detail/view.dart b/lib/pages/dynamics_detail/view.dart index 0057b5af7..d82fcc7fa 100644 --- a/lib/pages/dynamics_detail/view.dart +++ b/lib/pages/dynamics_detail/view.dart @@ -9,7 +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/extension.dart'; +import 'package:PiliPlus/utils/extension/get_ext.dart'; import 'package:PiliPlus/utils/grid.dart'; import 'package:PiliPlus/utils/num_utils.dart'; import 'package:PiliPlus/utils/request_utils.dart'; diff --git a/lib/pages/dynamics_mention/view.dart b/lib/pages/dynamics_mention/view.dart index 199b616dd..1309f2871 100644 --- a/lib/pages/dynamics_mention/view.dart +++ b/lib/pages/dynamics_mention/view.dart @@ -11,8 +11,9 @@ 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/pages/search/controller.dart' show DebounceStreamState; -import 'package:PiliPlus/utils/context_ext.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/context_ext.dart'; +import 'package:PiliPlus/utils/extension/iterable_ext.dart'; +import 'package:PiliPlus/utils/extension/scroll_controller_ext.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart' hide ContextExtensionss; diff --git a/lib/pages/dynamics_select_topic/view.dart b/lib/pages/dynamics_select_topic/view.dart index 1957edebf..bee4cc821 100644 --- a/lib/pages/dynamics_select_topic/view.dart +++ b/lib/pages/dynamics_select_topic/view.dart @@ -9,8 +9,8 @@ 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/pages/search/controller.dart' show DebounceStreamState; -import 'package:PiliPlus/utils/context_ext.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/context_ext.dart'; +import 'package:PiliPlus/utils/extension/scroll_controller_ext.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart' hide ContextExtensionss; diff --git a/lib/pages/dynamics_tab/controller.dart b/lib/pages/dynamics_tab/controller.dart index f67dd921b..4ee38aaf1 100644 --- a/lib/pages/dynamics_tab/controller.dart +++ b/lib/pages/dynamics_tab/controller.dart @@ -7,7 +7,7 @@ import 'package:PiliPlus/pages/common/common_list_controller.dart'; import 'package:PiliPlus/pages/dynamics/controller.dart'; import 'package:PiliPlus/pages/main/controller.dart'; import 'package:PiliPlus/services/account_service.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/scroll_controller_ext.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; diff --git a/lib/pages/dynamics_topic/controller.dart b/lib/pages/dynamics_topic/controller.dart index d1439a958..93d6fe488 100644 --- a/lib/pages/dynamics_topic/controller.dart +++ b/lib/pages/dynamics_topic/controller.dart @@ -7,7 +7,7 @@ import 'package:PiliPlus/models_new/dynamic/dyn_topic_feed/topic_sort_by_conf.da import 'package:PiliPlus/models_new/dynamic/dyn_topic_top/top_details.dart'; import 'package:PiliPlus/pages/common/common_list_controller.dart'; import 'package:PiliPlus/utils/accounts.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/scroll_controller_ext.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; diff --git a/lib/pages/episode_panel/view.dart b/lib/pages/episode_panel/view.dart index d3bb2b82c..917cea4a8 100644 --- a/lib/pages/episode_panel/view.dart +++ b/lib/pages/episode_panel/view.dart @@ -25,8 +25,9 @@ import 'package:PiliPlus/pages/video/introduction/ugc/widgets/page.dart'; import 'package:PiliPlus/utils/accounts.dart'; import 'package:PiliPlus/utils/date_utils.dart'; import 'package:PiliPlus/utils/duration_utils.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/scroll_controller_ext.dart'; import 'package:PiliPlus/utils/id_utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/storage_pref.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:flutter/foundation.dart'; @@ -457,7 +458,7 @@ class _EpisodePanelState extends State }); }, onLongPress: onLongPress, - onSecondaryTap: Utils.isMobile ? null : onLongPress, + onSecondaryTap: PlatformUtils.isMobile ? null : onLongPress, child: Padding( padding: const EdgeInsets.symmetric( horizontal: StyleString.safeSpace, diff --git a/lib/pages/fan/view.dart b/lib/pages/fan/view.dart index 19c51e477..6bac81fc2 100644 --- a/lib/pages/fan/view.dart +++ b/lib/pages/fan/view.dart @@ -4,6 +4,7 @@ import 'package:PiliPlus/pages/fan/controller.dart'; import 'package:PiliPlus/pages/follow_type/view.dart'; import 'package:PiliPlus/pages/follow_type/widgets/item.dart'; import 'package:PiliPlus/pages/share/view.dart' show UserModel; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; @@ -80,7 +81,7 @@ class _FansPageState extends FollowTypePageState { Get.toNamed('/member?mid=${item.mid}'); }, onLongPress: flag ? onRemove : null, - onSecondaryTap: flag && !Utils.isMobile ? onRemove : null, + onSecondaryTap: flag && !PlatformUtils.isMobile ? onRemove : null, ); } } diff --git a/lib/pages/fav/note/view.dart b/lib/pages/fav/note/view.dart index f1834cac0..de95d2391 100644 --- a/lib/pages/fav/note/view.dart +++ b/lib/pages/fav/note/view.dart @@ -1,6 +1,6 @@ import 'package:PiliPlus/pages/fav/note/child_view.dart'; import 'package:PiliPlus/pages/fav/note/controller.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/scroll_controller_ext.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; diff --git a/lib/pages/fav/note/widget/item.dart b/lib/pages/fav/note/widget/item.dart index c563bc0f4..f05e263a5 100644 --- a/lib/pages/fav/note/widget/item.dart +++ b/lib/pages/fav/note/widget/item.dart @@ -4,7 +4,7 @@ import 'package:PiliPlus/common/widgets/select_mask.dart'; import 'package:PiliPlus/models_new/fav/fav_note/list.dart'; import 'package:PiliPlus/pages/fav/note/controller.dart'; import 'package:PiliPlus/utils/page_utils.dart'; -import 'package:PiliPlus/utils/utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:flutter/material.dart'; class FavNoteItem extends StatelessWidget { @@ -45,7 +45,7 @@ class FavNoteItem extends StatelessWidget { } }, onLongPress: onLongPress, - onSecondaryTap: Utils.isMobile ? null : onLongPress, + onSecondaryTap: PlatformUtils.isMobile ? null : onLongPress, child: Padding( padding: const EdgeInsets.symmetric( horizontal: StyleString.safeSpace, diff --git a/lib/pages/fav/pgc/view.dart b/lib/pages/fav/pgc/view.dart index 1dec60bab..1b8dbac1a 100644 --- a/lib/pages/fav/pgc/view.dart +++ b/lib/pages/fav/pgc/view.dart @@ -1,6 +1,6 @@ import 'package:PiliPlus/pages/fav/pgc/child_view.dart'; import 'package:PiliPlus/pages/fav/pgc/controller.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/scroll_controller_ext.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; diff --git a/lib/pages/fav/pgc/widget/item.dart b/lib/pages/fav/pgc/widget/item.dart index 06c8fbf91..30bc35f60 100644 --- a/lib/pages/fav/pgc/widget/item.dart +++ b/lib/pages/fav/pgc/widget/item.dart @@ -7,7 +7,7 @@ import 'package:PiliPlus/models/common/badge_type.dart'; import 'package:PiliPlus/models_new/fav/fav_pgc/list.dart'; import 'package:PiliPlus/pages/common/multi_select/base.dart'; import 'package:PiliPlus/utils/page_utils.dart'; -import 'package:PiliPlus/utils/utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:flutter/material.dart'; class FavPgcItem extends StatelessWidget { @@ -48,7 +48,7 @@ class FavPgcItem extends StatelessWidget { PageUtils.viewPgc(seasonId: item.seasonId); }, onLongPress: onLongPress, - onSecondaryTap: Utils.isMobile ? null : onLongPress, + onSecondaryTap: PlatformUtils.isMobile ? null : onLongPress, child: Padding( padding: const EdgeInsets.symmetric( horizontal: StyleString.safeSpace, diff --git a/lib/pages/fav/topic/view.dart b/lib/pages/fav/topic/view.dart index d67ce0a0d..062946573 100644 --- a/lib/pages/fav/topic/view.dart +++ b/lib/pages/fav/topic/view.dart @@ -6,7 +6,7 @@ import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models_new/fav/fav_topic/topic_item.dart'; import 'package:PiliPlus/pages/fav/topic/controller.dart'; import 'package:PiliPlus/utils/grid.dart'; -import 'package:PiliPlus/utils/utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:flutter/material.dart' hide SliverGridDelegateWithMaxCrossAxisExtent; import 'package:get/get.dart'; @@ -99,7 +99,9 @@ class _FavTopicPageState extends State }, ), onLongPress: onLongPress, - onSecondaryTap: Utils.isMobile ? null : onLongPress, + onSecondaryTap: PlatformUtils.isMobile + ? null + : onLongPress, borderRadius: const BorderRadius.all( Radius.circular(6), ), diff --git a/lib/pages/fav/view.dart b/lib/pages/fav/view.dart index cef9341c6..d2131651f 100644 --- a/lib/pages/fav/view.dart +++ b/lib/pages/fav/view.dart @@ -8,7 +8,7 @@ import 'package:PiliPlus/pages/fav/cheese/controller.dart'; import 'package:PiliPlus/pages/fav/topic/controller.dart'; import 'package:PiliPlus/pages/fav/video/controller.dart'; import 'package:PiliPlus/pages/fav_folder_sort/view.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/scroll_controller_ext.dart'; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; diff --git a/lib/pages/fav_create/view.dart b/lib/pages/fav_create/view.dart index 35a31064b..494c86ff9 100644 --- a/lib/pages/fav_create/view.dart +++ b/lib/pages/fav_create/view.dart @@ -4,10 +4,11 @@ import 'package:PiliPlus/common/widgets/loading_widget/loading_widget.dart'; import 'package:PiliPlus/http/fav.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/http/msg.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/file_ext.dart'; +import 'package:PiliPlus/utils/extension/theme_ext.dart'; import 'package:PiliPlus/utils/fav_utils.dart'; import 'package:PiliPlus/utils/image_utils.dart'; -import 'package:PiliPlus/utils/utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:cached_network_image/cached_network_image.dart'; import 'package:easy_debounce/easy_throttle.dart'; import 'package:flutter/material.dart'; @@ -118,7 +119,7 @@ class _CreateFavPageState extends State { ); if (pickedFile != null && mounted) { String imgPath = pickedFile.path; - if (Utils.isMobile) { + if (PlatformUtils.isMobile) { final croppedFile = await ImageCropper.platform.cropImage( sourcePath: imgPath, uiSettings: [ @@ -159,7 +160,7 @@ class _CreateFavPageState extends State { SmartDialog.showToast(res['msg']); } } - if (Utils.isMobile) { + if (PlatformUtils.isMobile) { File(imgPath).tryDel(); } }); diff --git a/lib/pages/fav_detail/controller.dart b/lib/pages/fav_detail/controller.dart index dc2bd3041..54fb41410 100644 --- a/lib/pages/fav_detail/controller.dart +++ b/lib/pages/fav_detail/controller.dart @@ -11,7 +11,8 @@ import 'package:PiliPlus/pages/common/multi_select/base.dart'; import 'package:PiliPlus/pages/common/multi_select/multi_select_controller.dart'; import 'package:PiliPlus/pages/fav_sort/view.dart'; import 'package:PiliPlus/utils/accounts.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/iterable_ext.dart'; +import 'package:PiliPlus/utils/extension/scroll_controller_ext.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/storage_key.dart'; diff --git a/lib/pages/fav_detail/widget/fav_video_card.dart b/lib/pages/fav_detail/widget/fav_video_card.dart index b08b03ae5..d8db42fb4 100644 --- a/lib/pages/fav_detail/widget/fav_video_card.dart +++ b/lib/pages/fav_detail/widget/fav_video_card.dart @@ -15,7 +15,7 @@ import 'package:PiliPlus/pages/fav_detail/controller.dart'; import 'package:PiliPlus/utils/date_utils.dart'; import 'package:PiliPlus/utils/duration_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; -import 'package:PiliPlus/utils/utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; @@ -87,7 +87,7 @@ class FavVideoCardH extends StatelessWidget { } }, onLongPress: onLongPress, - onSecondaryTap: Utils.isMobile ? null : onLongPress, + onSecondaryTap: PlatformUtils.isMobile ? null : onLongPress, child: Padding( padding: const EdgeInsets.symmetric( horizontal: StyleString.safeSpace, diff --git a/lib/pages/fav_sort/view.dart b/lib/pages/fav_sort/view.dart index 8949d7d08..2614878ce 100644 --- a/lib/pages/fav_sort/view.dart +++ b/lib/pages/fav_sort/view.dart @@ -3,7 +3,7 @@ import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models_new/fav/fav_detail/media.dart'; import 'package:PiliPlus/pages/fav_detail/controller.dart'; import 'package:PiliPlus/pages/fav_detail/widget/fav_video_card.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/iterable_ext.dart'; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; diff --git a/lib/pages/follow/view.dart b/lib/pages/follow/view.dart index b6f9300ee..e755f5d32 100644 --- a/lib/pages/follow/view.dart +++ b/lib/pages/follow/view.dart @@ -7,6 +7,7 @@ import 'package:PiliPlus/models/member/tags.dart'; import 'package:PiliPlus/pages/follow/child/child_controller.dart'; import 'package:PiliPlus/pages/follow/child/child_view.dart'; import 'package:PiliPlus/pages/follow/controller.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart' show LengthLimitingTextInputFormatter; @@ -125,7 +126,7 @@ class _FollowPageState extends State { Feedback.forLongPress(context); _onHandleTag(index, item); }, - onSecondaryTap: Utils.isMobile + onSecondaryTap: PlatformUtils.isMobile ? null : () => _onHandleTag(index, item), child: Tab( diff --git a/lib/pages/follow_type/follow_same/view.dart b/lib/pages/follow_type/follow_same/view.dart index 489e3af1a..0b7e4d283 100644 --- a/lib/pages/follow_type/follow_same/view.dart +++ b/lib/pages/follow_type/follow_same/view.dart @@ -1,6 +1,6 @@ import 'package:PiliPlus/pages/follow_type/follow_same/controller.dart'; import 'package:PiliPlus/pages/follow_type/view.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/get_ext.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; diff --git a/lib/pages/follow_type/followed/view.dart b/lib/pages/follow_type/followed/view.dart index e6a6411d4..89f5319ee 100644 --- a/lib/pages/follow_type/followed/view.dart +++ b/lib/pages/follow_type/followed/view.dart @@ -1,6 +1,6 @@ import 'package:PiliPlus/pages/follow_type/followed/controller.dart'; import 'package:PiliPlus/pages/follow_type/view.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/get_ext.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; diff --git a/lib/pages/group_panel/view.dart b/lib/pages/group_panel/view.dart index a21fdccd8..832d30a17 100644 --- a/lib/pages/group_panel/view.dart +++ b/lib/pages/group_panel/view.dart @@ -2,7 +2,8 @@ import 'package:PiliPlus/common/widgets/loading_widget/loading_widget.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/http/member.dart'; import 'package:PiliPlus/models/member/tags.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/iterable_ext.dart'; +import 'package:PiliPlus/utils/extension/num_ext.dart'; import 'package:PiliPlus/utils/feed_back.dart'; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; diff --git a/lib/pages/history/controller.dart b/lib/pages/history/controller.dart index cc24e9254..474bd4e3e 100644 --- a/lib/pages/history/controller.dart +++ b/lib/pages/history/controller.dart @@ -7,7 +7,8 @@ import 'package:PiliPlus/models_new/history/tab.dart'; import 'package:PiliPlus/pages/common/multi_select/multi_select_controller.dart'; import 'package:PiliPlus/pages/history/base_controller.dart'; import 'package:PiliPlus/utils/accounts/account.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/iterable_ext.dart'; +import 'package:PiliPlus/utils/extension/scroll_controller_ext.dart'; import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/storage_key.dart'; import 'package:flutter/material.dart'; diff --git a/lib/pages/history/view.dart b/lib/pages/history/view.dart index 590ac7086..334ffa058 100644 --- a/lib/pages/history/view.dart +++ b/lib/pages/history/view.dart @@ -8,7 +8,7 @@ import 'package:PiliPlus/models_new/history/list.dart'; import 'package:PiliPlus/pages/history/base_controller.dart'; import 'package:PiliPlus/pages/history/controller.dart'; import 'package:PiliPlus/pages/history/widgets/item.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/scroll_controller_ext.dart'; import 'package:PiliPlus/utils/grid.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; diff --git a/lib/pages/history/widgets/item.dart b/lib/pages/history/widgets/item.dart index b2a695615..2e214056b 100644 --- a/lib/pages/history/widgets/item.dart +++ b/lib/pages/history/widgets/item.dart @@ -12,7 +12,7 @@ import 'package:PiliPlus/utils/date_utils.dart'; import 'package:PiliPlus/utils/duration_utils.dart'; import 'package:PiliPlus/utils/id_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; -import 'package:PiliPlus/utils/utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; @@ -97,7 +97,7 @@ class HistoryItem extends StatelessWidget { } }, onLongPress: onLongPress, - onSecondaryTap: Utils.isMobile ? null : onLongPress, + onSecondaryTap: PlatformUtils.isMobile ? null : onLongPress, child: Stack( clipBehavior: Clip.none, children: [ diff --git a/lib/pages/home/view.dart b/lib/pages/home/view.dart index 2200659e5..fce6856da 100644 --- a/lib/pages/home/view.dart +++ b/lib/pages/home/view.dart @@ -6,7 +6,7 @@ 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/extension.dart'; +import 'package:PiliPlus/utils/extension/size_ext.dart'; import 'package:PiliPlus/utils/feed_back.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart' hide ContextExtensionss; diff --git a/lib/pages/later/child_view.dart b/lib/pages/later/child_view.dart index 01456e9f1..462edf8cf 100644 --- a/lib/pages/later/child_view.dart +++ b/lib/pages/later/child_view.dart @@ -7,7 +7,7 @@ import 'package:PiliPlus/models_new/later/list.dart'; import 'package:PiliPlus/pages/later/base_controller.dart'; import 'package:PiliPlus/pages/later/controller.dart'; import 'package:PiliPlus/pages/later/widgets/video_card_h_later.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/get_ext.dart'; import 'package:PiliPlus/utils/grid.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:flutter/material.dart'; diff --git a/lib/pages/later/controller.dart b/lib/pages/later/controller.dart index 9e1b23374..6154d7c61 100644 --- a/lib/pages/later/controller.dart +++ b/lib/pages/later/controller.dart @@ -11,7 +11,8 @@ import 'package:PiliPlus/pages/common/multi_select/base.dart'; import 'package:PiliPlus/pages/common/multi_select/multi_select_controller.dart'; import 'package:PiliPlus/pages/later/base_controller.dart'; import 'package:PiliPlus/utils/accounts.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/iterable_ext.dart'; +import 'package:PiliPlus/utils/extension/scroll_controller_ext.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; diff --git a/lib/pages/later/view.dart b/lib/pages/later/view.dart index 0f4ce8e9d..fabcb2bb3 100644 --- a/lib/pages/later/view.dart +++ b/lib/pages/later/view.dart @@ -8,7 +8,8 @@ import 'package:PiliPlus/pages/fav_detail/view.dart'; import 'package:PiliPlus/pages/later/base_controller.dart'; import 'package:PiliPlus/pages/later/controller.dart'; import 'package:PiliPlus/utils/accounts.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/get_ext.dart'; +import 'package:PiliPlus/utils/extension/scroll_controller_ext.dart'; import 'package:PiliPlus/utils/request_utils.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; diff --git a/lib/pages/later/widgets/video_card_h_later.dart b/lib/pages/later/widgets/video_card_h_later.dart index 445535ebb..97642a367 100644 --- a/lib/pages/later/widgets/video_card_h_later.dart +++ b/lib/pages/later/widgets/video_card_h_later.dart @@ -13,7 +13,7 @@ import 'package:PiliPlus/models_new/later/list.dart'; import 'package:PiliPlus/pages/later/controller.dart'; import 'package:PiliPlus/utils/duration_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; -import 'package:PiliPlus/utils/utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; @@ -53,7 +53,7 @@ class VideoCardHLater extends StatelessWidget { type: MaterialType.transparency, child: InkWell( onLongPress: onLongPress, - onSecondaryTap: Utils.isMobile ? null : onLongPress, + onSecondaryTap: PlatformUtils.isMobile ? null : onLongPress, onTap: enableMultiSelect ? () => ctr.onSelect(videoItem) : () async { diff --git a/lib/pages/live/view.dart b/lib/pages/live/view.dart index 513db61d0..9f217488a 100644 --- a/lib/pages/live/view.dart +++ b/lib/pages/live/view.dart @@ -17,10 +17,10 @@ import 'package:PiliPlus/pages/live/widgets/live_item_app.dart'; import 'package:PiliPlus/pages/live_area/view.dart'; import 'package:PiliPlus/pages/live_follow/view.dart'; import 'package:PiliPlus/pages/search/widgets/search_text.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/theme_ext.dart'; import 'package:PiliPlus/utils/grid.dart'; import 'package:PiliPlus/utils/page_utils.dart'; -import 'package:PiliPlus/utils/utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; @@ -300,7 +300,7 @@ class _LivePageState extends CommonPageState Feedback.forLongPress(context); Get.toNamed('/member?mid=${item.uid}'); }, - onSecondaryTap: Utils.isMobile + onSecondaryTap: PlatformUtils.isMobile ? null : () => Get.toNamed('/member?mid=${item.uid}'), child: Column( diff --git a/lib/pages/live/widgets/live_item_app.dart b/lib/pages/live/widgets/live_item_app.dart index 976d2bb2a..17b76e63c 100644 --- a/lib/pages/live/widgets/live_item_app.dart +++ b/lib/pages/live/widgets/live_item_app.dart @@ -3,7 +3,7 @@ import 'package:PiliPlus/common/widgets/image/image_save.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/models_new/live/live_feed_index/card_data_list_item.dart'; import 'package:PiliPlus/utils/page_utils.dart'; -import 'package:PiliPlus/utils/utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:flutter/material.dart'; // 视频卡片 - 垂直布局 @@ -26,7 +26,7 @@ class LiveCardVApp extends StatelessWidget { child: InkWell( onTap: () => PageUtils.toLiveRoom(item.roomid), onLongPress: onLongPress, - onSecondaryTap: Utils.isMobile ? null : onLongPress, + onSecondaryTap: PlatformUtils.isMobile ? null : onLongPress, child: Column( children: [ AspectRatio( diff --git a/lib/pages/live_area/view.dart b/lib/pages/live_area/view.dart index b1ca6d54d..25cbadaec 100644 --- a/lib/pages/live_area/view.dart +++ b/lib/pages/live_area/view.dart @@ -10,7 +10,7 @@ import 'package:PiliPlus/models_new/live/live_area_list/area_list.dart'; import 'package:PiliPlus/pages/live_area/controller.dart'; import 'package:PiliPlus/pages/live_area_detail/view.dart'; import 'package:PiliPlus/pages/search/widgets/search_text.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/iterable_ext.dart'; import 'package:flutter/material.dart'; import 'package:flutter_sortable_wrap/sortable_wrap.dart'; import 'package:get/get.dart'; diff --git a/lib/pages/live_dm_block/view.dart b/lib/pages/live_dm_block/view.dart index 31789eede..7f07d401a 100644 --- a/lib/pages/live_dm_block/view.dart +++ b/lib/pages/live_dm_block/view.dart @@ -7,7 +7,7 @@ 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/extension.dart'; +import 'package:PiliPlus/utils/extension/size_ext.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:extended_nested_scroll_view/extended_nested_scroll_view.dart'; import 'package:flutter/material.dart'; diff --git a/lib/pages/live_follow/widgets/live_item_follow.dart b/lib/pages/live_follow/widgets/live_item_follow.dart index 6f0d8ac83..063d9e11a 100644 --- a/lib/pages/live_follow/widgets/live_item_follow.dart +++ b/lib/pages/live_follow/widgets/live_item_follow.dart @@ -3,7 +3,7 @@ import 'package:PiliPlus/common/widgets/image/image_save.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/models_new/live/live_follow/item.dart'; import 'package:PiliPlus/utils/page_utils.dart'; -import 'package:PiliPlus/utils/utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:flutter/material.dart'; // 视频卡片 - 垂直布局 @@ -26,7 +26,7 @@ class LiveCardVFollow extends StatelessWidget { child: InkWell( onTap: () => PageUtils.toLiveRoom(liveItem.roomid), onLongPress: onLongPress, - onSecondaryTap: Utils.isMobile ? null : onLongPress, + onSecondaryTap: PlatformUtils.isMobile ? null : onLongPress, child: Column( children: [ AspectRatio( diff --git a/lib/pages/live_room/controller.dart b/lib/pages/live_room/controller.dart index 48f3f87bc..c31fe9b32 100644 --- a/lib/pages/live_room/controller.dart +++ b/lib/pages/live_room/controller.dart @@ -22,8 +22,9 @@ import 'package:PiliPlus/tcp/live.dart'; import 'package:PiliPlus/utils/accounts.dart'; import 'package:PiliPlus/utils/danmaku_utils.dart'; import 'package:PiliPlus/utils/duration_utils.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/iterable_ext.dart'; import 'package:PiliPlus/utils/num_utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/storage_pref.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:PiliPlus/utils/video_utils.dart'; @@ -99,7 +100,7 @@ class LiveRoomController extends GetxController { late final RxInt pageIndex = 0.obs; PageController? pageController; - int? currentQn = Utils.isMobile ? null : Pref.liveQuality; + int? currentQn = PlatformUtils.isMobile ? null : Pref.liveQuality; RxString currentQnDesc = ''.obs; final RxBool isPortrait = false.obs; late List<({int code, String desc})> acceptQnList = []; diff --git a/lib/pages/live_room/view.dart b/lib/pages/live_room/view.dart index b0310754b..c65bca3af 100644 --- a/lib/pages/live_room/view.dart +++ b/lib/pages/live_room/view.dart @@ -23,8 +23,11 @@ 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/extension.dart'; +import 'package:PiliPlus/utils/extension/size_ext.dart'; +import 'package:PiliPlus/utils/extension/string_ext.dart'; +import 'package:PiliPlus/utils/extension/theme_ext.dart'; import 'package:PiliPlus/utils/page_utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/storage_key.dart'; import 'package:PiliPlus/utils/utils.dart'; @@ -580,7 +583,7 @@ class _LiveRoomPageState extends State ], ), ), - if (Utils.isMobile) + if (PlatformUtils.isMobile) PopupMenuItem( onTap: () => Utils.shareText(liveUrl), child: Row( diff --git a/lib/pages/live_room/widgets/header_control.dart b/lib/pages/live_room/widgets/header_control.dart index a15cad472..afd49ea46 100644 --- a/lib/pages/live_room/widgets/header_control.dart +++ b/lib/pages/live_room/widgets/header_control.dart @@ -6,7 +6,7 @@ import 'package:PiliPlus/pages/video/widgets/header_control.dart'; import 'package:PiliPlus/plugin/pl_player/controller.dart'; import 'package:PiliPlus/plugin/pl_player/widgets/common_btn.dart'; import 'package:PiliPlus/utils/page_utils.dart'; -import 'package:PiliPlus/utils/utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:floating/floating.dart'; import 'package:flutter/material.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; @@ -121,7 +121,7 @@ class _LiveHeaderControlState extends State child, ...?timeBatteryWidgets, const SizedBox(width: 10), - if (Utils.isDesktop && !plPlayerController.isDesktopPip) + if (PlatformUtils.isDesktop && !plPlayerController.isDesktopPip) Obx(() { final isAlwaysOnTop = plPlayerController.isAlwaysOnTop.value; return ComBtn( @@ -141,7 +141,7 @@ class _LiveHeaderControlState extends State onTap: () => plPlayerController.setAlwaysOnTop(!isAlwaysOnTop), ); }), - if (isFullScreen || Utils.isDesktop) + if (isFullScreen || PlatformUtils.isDesktop) ComBtn( height: 30, tooltip: '发弹幕', @@ -152,12 +152,12 @@ class _LiveHeaderControlState extends State ), onTap: widget.onSendDanmaku, ), - if (Platform.isAndroid || (Utils.isDesktop && !isFullScreen)) + if (Platform.isAndroid || (PlatformUtils.isDesktop && !isFullScreen)) ComBtn( height: 30, tooltip: '画中画', onTap: () async { - if (Utils.isDesktop) { + if (PlatformUtils.isDesktop) { plPlayerController.toggleDesktopPip(); return; } diff --git a/lib/pages/live_search/controller.dart b/lib/pages/live_search/controller.dart index 4d8dc4ea3..3b33ffaec 100644 --- a/lib/pages/live_search/controller.dart +++ b/lib/pages/live_search/controller.dart @@ -1,6 +1,6 @@ import 'package:PiliPlus/models/common/live_search_type.dart'; import 'package:PiliPlus/pages/live_search/child/controller.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/scroll_controller_ext.dart'; import 'package:PiliPlus/utils/id_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/utils.dart'; diff --git a/lib/pages/live_search/widgets/live_search_room.dart b/lib/pages/live_search/widgets/live_search_room.dart index 34e119a44..b75197df5 100644 --- a/lib/pages/live_search/widgets/live_search_room.dart +++ b/lib/pages/live_search/widgets/live_search_room.dart @@ -3,7 +3,7 @@ import 'package:PiliPlus/common/widgets/image/image_save.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/models_new/live/live_search/room_item.dart'; import 'package:PiliPlus/utils/page_utils.dart'; -import 'package:PiliPlus/utils/utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:flutter/material.dart'; // 视频卡片 - 垂直布局 @@ -26,7 +26,7 @@ class LiveCardVSearch extends StatelessWidget { child: InkWell( onTap: () => PageUtils.toLiveRoom(item.roomid), onLongPress: onLongPress, - onSecondaryTap: Utils.isMobile ? null : onLongPress, + onSecondaryTap: PlatformUtils.isMobile ? null : onLongPress, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ diff --git a/lib/pages/log_table/view.dart b/lib/pages/log_table/view.dart index 34c7f5089..0bac0b42b 100644 --- a/lib/pages/log_table/view.dart +++ b/lib/pages/log_table/view.dart @@ -2,7 +2,7 @@ import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; import 'package:PiliPlus/common/widgets/loading_widget/loading_widget.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/pages/log_table/controller.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/widget_ext.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; diff --git a/lib/pages/login/controller.dart b/lib/pages/login/controller.dart index 88dbe5c27..134c1fd10 100644 --- a/lib/pages/login/controller.dart +++ b/lib/pages/login/controller.dart @@ -12,7 +12,7 @@ import 'package:PiliPlus/models/login/model.dart'; import 'package:PiliPlus/pages/login/geetest/geetest_webview_dialog.dart'; import 'package:PiliPlus/utils/accounts.dart'; import 'package:PiliPlus/utils/accounts/account.dart'; -import 'package:PiliPlus/utils/utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:dio/dio.dart'; import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/material.dart'; @@ -136,7 +136,7 @@ class LoginPageController extends GetxController onSuccess(); } - if (Utils.isDesktop) { + if (PlatformUtils.isDesktop) { Get.dialog>( GeetestWebviewDialog(geeGt, geeChallenge), ).then((res) { diff --git a/lib/pages/login/view.dart b/lib/pages/login/view.dart index 094484c39..738c8612c 100644 --- a/lib/pages/login/view.dart +++ b/lib/pages/login/view.dart @@ -6,9 +6,11 @@ import 'package:PiliPlus/common/widgets/loading_widget/loading_widget.dart'; import 'package:PiliPlus/common/widgets/scroll_physics.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/pages/login/controller.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/size_ext.dart'; +import 'package:PiliPlus/utils/extension/widget_ext.dart'; import 'package:PiliPlus/utils/image_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; @@ -81,7 +83,7 @@ class _LoginPageState extends State { icon: const Icon(Icons.save), label: const Text('保存至相册'), ), - if (kDebugMode || Utils.isMobile) + if (kDebugMode || PlatformUtils.isMobile) TextButton.icon( onPressed: () => PageUtils.launchURL( 'bilibili://browser?url=${Uri.encodeComponent(_loginPageCtr.codeInfo.value.data.url)}', diff --git a/lib/pages/login_devices/view.dart b/lib/pages/login_devices/view.dart index 173684f84..f1ebef771 100644 --- a/lib/pages/login_devices/view.dart +++ b/lib/pages/login_devices/view.dart @@ -5,7 +5,7 @@ import 'package:PiliPlus/common/widgets/view_sliver_safe_area.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models_new/login_devices/device.dart'; import 'package:PiliPlus/pages/login_devices/controller.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/widget_ext.dart'; import 'package:flutter/material.dart' hide ListTile; import 'package:get/get.dart'; @@ -31,10 +31,7 @@ class LoginDevicesPageState extends State { slivers: [ ViewSliverSafeArea( sliver: Obx( - () => _buildBody( - colorScheme, - _controller.loadingState.value, - ), + () => _buildBody(colorScheme, _controller.loadingState.value), ), ), ], diff --git a/lib/pages/main/controller.dart b/lib/pages/main/controller.dart index 7c461c182..0b8160513 100644 --- a/lib/pages/main/controller.dart +++ b/lib/pages/main/controller.dart @@ -12,7 +12,7 @@ import 'package:PiliPlus/pages/dynamics/controller.dart'; import 'package:PiliPlus/pages/home/controller.dart'; import 'package:PiliPlus/pages/mine/view.dart'; import 'package:PiliPlus/services/account_service.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/iterable_ext.dart'; import 'package:PiliPlus/utils/feed_back.dart'; import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/storage_key.dart'; diff --git a/lib/pages/main/view.dart b/lib/pages/main/view.dart index 2377bb8aa..762d25c6c 100644 --- a/lib/pages/main/view.dart +++ b/lib/pages/main/view.dart @@ -12,9 +12,11 @@ import 'package:PiliPlus/pages/mine/controller.dart'; import 'package:PiliPlus/plugin/pl_player/controller.dart'; import 'package:PiliPlus/plugin/pl_player/models/play_status.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/extension/context_ext.dart'; +import 'package:PiliPlus/utils/extension/size_ext.dart'; +import 'package:PiliPlus/utils/extension/theme_ext.dart'; import 'package:PiliPlus/utils/page_utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/storage_key.dart'; import 'package:PiliPlus/utils/utils.dart'; @@ -41,7 +43,7 @@ class _MainAppState extends State void initState() { super.initState(); WidgetsBinding.instance.addObserver(this); - if (Utils.isDesktop) { + if (PlatformUtils.isDesktop) { windowManager ..addListener(this) ..setPreventClose(true); @@ -58,7 +60,7 @@ class _MainAppState extends State final brightness = Theme.brightnessOf(context); NetworkImgLayer.reduce = NetworkImgLayer.reduceLuxColor != null && brightness.isDark; - if (Utils.isDesktop) { + if (PlatformUtils.isDesktop) { windowManager.setBrightness(brightness); } PageUtils.routeObserver.subscribe( @@ -95,7 +97,7 @@ class _MainAppState extends State @override void dispose() { - if (Utils.isDesktop) { + if (PlatformUtils.isDesktop) { trayManager.removeListener(this); windowManager.removeListener(this); } diff --git a/lib/pages/main_reply/view.dart b/lib/pages/main_reply/view.dart index d00d1b3a3..15e120114 100644 --- a/lib/pages/main_reply/view.dart +++ b/lib/pages/main_reply/view.dart @@ -9,7 +9,7 @@ import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/pages/main_reply/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/extension.dart'; +import 'package:PiliPlus/utils/extension/widget_ext.dart'; import 'package:PiliPlus/utils/feed_back.dart'; import 'package:PiliPlus/utils/num_utils.dart'; import 'package:PiliPlus/utils/utils.dart'; diff --git a/lib/pages/match_info/view.dart b/lib/pages/match_info/view.dart index 56b2c6a4c..2d8561870 100644 --- a/lib/pages/match_info/view.dart +++ b/lib/pages/match_info/view.dart @@ -11,7 +11,8 @@ import 'package:PiliPlus/pages/common/dyn/common_dyn_page.dart'; import 'package:PiliPlus/pages/match_info/controller.dart'; import 'package:PiliPlus/pages/video/reply_reply/view.dart'; import 'package:PiliPlus/utils/date_utils.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/get_ext.dart'; +import 'package:PiliPlus/utils/extension/widget_ext.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:easy_debounce/easy_throttle.dart'; import 'package:flutter/material.dart'; diff --git a/lib/pages/member/widget/user_info_card.dart b/lib/pages/member/widget/user_info_card.dart index 941de7950..4fce6482d 100644 --- a/lib/pages/member/widget/user_info_card.dart +++ b/lib/pages/member/widget/user_info_card.dart @@ -15,8 +15,9 @@ import 'package:PiliPlus/pages/follow/view.dart'; import 'package:PiliPlus/pages/follow_type/followed/view.dart'; import 'package:PiliPlus/utils/accounts.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/extension/context_ext.dart'; +import 'package:PiliPlus/utils/extension/string_ext.dart'; +import 'package:PiliPlus/utils/extension/theme_ext.dart'; import 'package:PiliPlus/utils/image_utils.dart'; import 'package:PiliPlus/utils/num_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; diff --git a/lib/pages/member_article/widget/item.dart b/lib/pages/member_article/widget/item.dart index 46db260a9..d4d5163be 100644 --- a/lib/pages/member_article/widget/item.dart +++ b/lib/pages/member_article/widget/item.dart @@ -5,7 +5,7 @@ import 'package:PiliPlus/common/widgets/stat/stat.dart'; import 'package:PiliPlus/models/common/stat_type.dart'; import 'package:PiliPlus/models_new/space/space_article/item.dart'; import 'package:PiliPlus/utils/app_scheme.dart'; -import 'package:PiliPlus/utils/utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:flutter/material.dart'; class MemberArticleItem extends StatelessWidget { @@ -30,7 +30,7 @@ class MemberArticleItem extends StatelessWidget { } }, onLongPress: onLongPress, - onSecondaryTap: Utils.isMobile ? null : onLongPress, + onSecondaryTap: PlatformUtils.isMobile ? null : onLongPress, child: Padding( padding: const EdgeInsets.symmetric( horizontal: StyleString.safeSpace, diff --git a/lib/pages/member_audio/widgets/item.dart b/lib/pages/member_audio/widgets/item.dart index 1e4da125f..847caab28 100644 --- a/lib/pages/member_audio/widgets/item.dart +++ b/lib/pages/member_audio/widgets/item.dart @@ -8,7 +8,7 @@ import 'package:PiliPlus/models/common/stat_type.dart'; import 'package:PiliPlus/models_new/space/space_audio/item.dart'; import 'package:PiliPlus/pages/audio/view.dart'; import 'package:PiliPlus/utils/date_utils.dart'; -import 'package:PiliPlus/utils/utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:flutter/material.dart'; class MemberAudioItem extends StatelessWidget { @@ -31,7 +31,7 @@ class MemberAudioItem extends StatelessWidget { from: PlaylistSource.MEM_SPACE, ), onLongPress: onLongPress, - onSecondaryTap: Utils.isMobile ? null : onLongPress, + onSecondaryTap: PlatformUtils.isMobile ? null : onLongPress, child: Padding( padding: const EdgeInsets.symmetric( horizontal: StyleString.safeSpace, diff --git a/lib/pages/member_cheese/widgets/item.dart b/lib/pages/member_cheese/widgets/item.dart index 2bf6c15dd..49ea2ce45 100644 --- a/lib/pages/member_cheese/widgets/item.dart +++ b/lib/pages/member_cheese/widgets/item.dart @@ -6,7 +6,7 @@ import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/models_new/space/space_cheese/item.dart'; import 'package:PiliPlus/utils/date_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; -import 'package:PiliPlus/utils/utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:flutter/material.dart'; class MemberCheeseItem extends StatelessWidget { @@ -77,7 +77,7 @@ class MemberCheeseItem extends StatelessWidget { child: InkWell( onTap: () => PageUtils.viewPugv(seasonId: item.seasonId), onLongPress: onLongPress, - onSecondaryTap: Utils.isMobile ? null : onLongPress, + onSecondaryTap: PlatformUtils.isMobile ? null : onLongPress, child: Padding( padding: const EdgeInsets.symmetric( horizontal: StyleString.safeSpace, diff --git a/lib/pages/member_coin_arc/widgets/item.dart b/lib/pages/member_coin_arc/widgets/item.dart index 06b92bbf1..52a5e67ed 100644 --- a/lib/pages/member_coin_arc/widgets/item.dart +++ b/lib/pages/member_coin_arc/widgets/item.dart @@ -11,7 +11,7 @@ import 'package:PiliPlus/models_new/member/coin_like_arc/item.dart'; import 'package:PiliPlus/utils/date_utils.dart'; import 'package:PiliPlus/utils/duration_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; -import 'package:PiliPlus/utils/utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:flutter/material.dart'; class MemberCoinLikeItem extends StatelessWidget { @@ -53,7 +53,7 @@ class MemberCoinLikeItem extends StatelessWidget { } }, onLongPress: onLongPress, - onSecondaryTap: Utils.isMobile ? null : onLongPress, + onSecondaryTap: PlatformUtils.isMobile ? null : onLongPress, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ diff --git a/lib/pages/member_comic/widgets/item.dart b/lib/pages/member_comic/widgets/item.dart index c20687083..1431c8a9f 100644 --- a/lib/pages/member_comic/widgets/item.dart +++ b/lib/pages/member_comic/widgets/item.dart @@ -2,7 +2,7 @@ import 'package:PiliPlus/common/constants.dart'; import 'package:PiliPlus/common/widgets/image/image_save.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/models_new/space/space_archive/item.dart'; -import 'package:PiliPlus/utils/utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; @@ -31,7 +31,7 @@ class MemberComicItem extends StatelessWidget { ); }, onLongPress: onLongPress, - onSecondaryTap: Utils.isMobile ? null : onLongPress, + onSecondaryTap: PlatformUtils.isMobile ? null : onLongPress, child: Padding( padding: const EdgeInsets.symmetric( horizontal: StyleString.safeSpace, diff --git a/lib/pages/member_contribute/controller.dart b/lib/pages/member_contribute/controller.dart index d1427f1c0..62e3856bd 100644 --- a/lib/pages/member_contribute/controller.dart +++ b/lib/pages/member_contribute/controller.dart @@ -2,7 +2,7 @@ import 'dart:math'; import 'package:PiliPlus/models_new/space/space/tab2.dart'; import 'package:PiliPlus/pages/member/controller.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/iterable_ext.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; diff --git a/lib/pages/member_contribute/view.dart b/lib/pages/member_contribute/view.dart index ac4a33716..2a9a4047e 100644 --- a/lib/pages/member_contribute/view.dart +++ b/lib/pages/member_contribute/view.dart @@ -8,7 +8,7 @@ import 'package:PiliPlus/pages/member_contribute/controller.dart'; import 'package:PiliPlus/pages/member_opus/view.dart'; import 'package:PiliPlus/pages/member_season_series/view.dart'; import 'package:PiliPlus/pages/member_video/view.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/get_ext.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; diff --git a/lib/pages/member_favorite/widget/item.dart b/lib/pages/member_favorite/widget/item.dart index 8583d9010..d1ee7a191 100644 --- a/lib/pages/member_favorite/widget/item.dart +++ b/lib/pages/member_favorite/widget/item.dart @@ -6,6 +6,7 @@ import 'package:PiliPlus/models_new/space/space_fav/list.dart'; import 'package:PiliPlus/pages/subscription_detail/view.dart'; import 'package:PiliPlus/utils/fav_utils.dart'; import 'package:PiliPlus/utils/num_utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; @@ -49,7 +50,7 @@ class MemberFavItem extends StatelessWidget { } }, onLongPress: onLongPress, - onSecondaryTap: Utils.isMobile ? null : onLongPress, + onSecondaryTap: PlatformUtils.isMobile ? null : onLongPress, child: Padding( padding: const EdgeInsets.symmetric( horizontal: StyleString.safeSpace, diff --git a/lib/pages/member_home/view.dart b/lib/pages/member_home/view.dart index 1c14c59aa..39a2ceda1 100644 --- a/lib/pages/member_home/view.dart +++ b/lib/pages/member_home/view.dart @@ -16,7 +16,7 @@ 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/extension/context_ext.dart'; import 'package:PiliPlus/utils/grid.dart'; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; diff --git a/lib/pages/member_home/widgets/fav_item.dart b/lib/pages/member_home/widgets/fav_item.dart index c11c84799..4247ad604 100644 --- a/lib/pages/member_home/widgets/fav_item.dart +++ b/lib/pages/member_home/widgets/fav_item.dart @@ -2,6 +2,7 @@ import 'package:PiliPlus/common/constants.dart'; import 'package:PiliPlus/common/widgets/image/image_save.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/models_new/space/space_fav/list.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; @@ -30,7 +31,7 @@ class MemberFavItem extends StatelessWidget { ); }, onLongPress: onLongPress, - onSecondaryTap: Utils.isMobile ? null : onLongPress, + onSecondaryTap: PlatformUtils.isMobile ? null : onLongPress, child: Padding( padding: const EdgeInsets.symmetric( horizontal: StyleString.safeSpace, diff --git a/lib/pages/member_home/widgets/video_card_v_member_home.dart b/lib/pages/member_home/widgets/video_card_v_member_home.dart index c7a56a0e5..0df85361b 100644 --- a/lib/pages/member_home/widgets/video_card_v_member_home.dart +++ b/lib/pages/member_home/widgets/video_card_v_member_home.dart @@ -9,7 +9,7 @@ import 'package:PiliPlus/utils/app_scheme.dart'; import 'package:PiliPlus/utils/duration_utils.dart'; import 'package:PiliPlus/utils/id_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; -import 'package:PiliPlus/utils/utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:flutter/material.dart'; // 视频卡片 - 垂直布局 @@ -74,7 +74,7 @@ class VideoCardVMemberHome extends StatelessWidget { child: InkWell( onTap: onPushDetail, onLongPress: onLongPress, - onSecondaryTap: Utils.isMobile ? null : onLongPress, + onSecondaryTap: PlatformUtils.isMobile ? null : onLongPress, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ diff --git a/lib/pages/member_pgc/widgets/pgc_card_v_member_pgc.dart b/lib/pages/member_pgc/widgets/pgc_card_v_member_pgc.dart index 52abde0f9..fd22d0391 100644 --- a/lib/pages/member_pgc/widgets/pgc_card_v_member_pgc.dart +++ b/lib/pages/member_pgc/widgets/pgc_card_v_member_pgc.dart @@ -3,7 +3,7 @@ import 'package:PiliPlus/common/widgets/image/image_save.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/models_new/space/space_archive/item.dart'; import 'package:PiliPlus/utils/page_utils.dart'; -import 'package:PiliPlus/utils/utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:flutter/material.dart'; // 视频卡片 - 垂直布局 @@ -27,7 +27,7 @@ class PgcCardVMemberPgc extends StatelessWidget { borderRadius: StyleString.mdRadius, onTap: () => PageUtils.viewPgc(seasonId: item.param), onLongPress: onLongPress, - onSecondaryTap: Utils.isMobile ? null : onLongPress, + onSecondaryTap: PlatformUtils.isMobile ? null : onLongPress, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ diff --git a/lib/pages/member_profile/view.dart b/lib/pages/member_profile/view.dart index bb3b6bc4a..4f67a88b0 100644 --- a/lib/pages/member_profile/view.dart +++ b/lib/pages/member_profile/view.dart @@ -13,9 +13,13 @@ import 'package:PiliPlus/services/account_service.dart'; import 'package:PiliPlus/utils/accounts.dart'; import 'package:PiliPlus/utils/app_sign.dart'; import 'package:PiliPlus/utils/date_utils.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/file_ext.dart'; +import 'package:PiliPlus/utils/extension/iterable_ext.dart'; +import 'package:PiliPlus/utils/extension/string_ext.dart'; +import 'package:PiliPlus/utils/extension/theme_ext.dart'; import 'package:PiliPlus/utils/image_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/storage_pref.dart'; import 'package:PiliPlus/utils/utils.dart'; @@ -488,7 +492,7 @@ class _EditProfilePageState extends State { return; } String? imagePath = pickedFile.path; - if (Utils.isMobile) { + if (PlatformUtils.isMobile) { final croppedFile = await ImageCropper.platform.cropImage( sourcePath: imagePath, uiSettings: [ @@ -540,7 +544,7 @@ class _EditProfilePageState extends State { } else { SmartDialog.showToast(res.data['message']); } - if (Utils.isMobile && imagePath != null) { + if (PlatformUtils.isMobile && imagePath != null) { File(imagePath).tryDel(); } }); diff --git a/lib/pages/member_search/controller.dart b/lib/pages/member_search/controller.dart index edaece801..5e68095fd 100644 --- a/lib/pages/member_search/controller.dart +++ b/lib/pages/member_search/controller.dart @@ -1,6 +1,6 @@ import 'package:PiliPlus/models/common/member/search_type.dart'; import 'package:PiliPlus/pages/member_search/child/controller.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/scroll_controller_ext.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; diff --git a/lib/pages/member_season_series/widget/season_series_card.dart b/lib/pages/member_season_series/widget/season_series_card.dart index 79058be8a..f0a81b16f 100644 --- a/lib/pages/member_season_series/widget/season_series_card.dart +++ b/lib/pages/member_season_series/widget/season_series_card.dart @@ -4,7 +4,7 @@ import 'package:PiliPlus/common/widgets/image/image_save.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/models_new/space/space_season_series/season.dart'; import 'package:PiliPlus/utils/date_utils.dart'; -import 'package:PiliPlus/utils/utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:flutter/material.dart'; class SeasonSeriesCard extends StatelessWidget { @@ -26,7 +26,7 @@ class SeasonSeriesCard extends StatelessWidget { type: MaterialType.transparency, child: InkWell( onLongPress: onLongPress, - onSecondaryTap: Utils.isMobile ? null : onLongPress, + onSecondaryTap: PlatformUtils.isMobile ? null : onLongPress, onTap: onTap, child: Padding( padding: const EdgeInsets.symmetric( diff --git a/lib/pages/member_shop/view.dart b/lib/pages/member_shop/view.dart index cd8c9c584..2c12702c6 100644 --- a/lib/pages/member_shop/view.dart +++ b/lib/pages/member_shop/view.dart @@ -6,7 +6,7 @@ import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models_new/space/space_shop/item.dart'; import 'package:PiliPlus/pages/member_shop/controller.dart'; import 'package:PiliPlus/pages/member_shop/widgets/item.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/iterable_ext.dart'; import 'package:PiliPlus/utils/grid.dart'; import 'package:PiliPlus/utils/waterfall.dart'; import 'package:flutter/material.dart'; diff --git a/lib/pages/member_shop/widgets/item.dart b/lib/pages/member_shop/widgets/item.dart index 1dbfa0597..dc46c3924 100644 --- a/lib/pages/member_shop/widgets/item.dart +++ b/lib/pages/member_shop/widgets/item.dart @@ -2,7 +2,7 @@ import 'package:PiliPlus/common/widgets/badge.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/models/common/badge_type.dart'; import 'package:PiliPlus/models_new/space/space_shop/item.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/theme_ext.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; diff --git a/lib/pages/member_upower_rank/view.dart b/lib/pages/member_upower_rank/view.dart index cb80b8ff7..c3157ce3c 100644 --- a/lib/pages/member_upower_rank/view.dart +++ b/lib/pages/member_upower_rank/view.dart @@ -8,7 +8,7 @@ import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models/common/image_type.dart'; import 'package:PiliPlus/models_new/upower_rank/rank_info.dart'; import 'package:PiliPlus/pages/member_upower_rank/controller.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/widget_ext.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:flutter/material.dart' hide ListTile; import 'package:get/get.dart'; diff --git a/lib/pages/member_video/controller.dart b/lib/pages/member_video/controller.dart index f94bae9f8..32e6e17d9 100644 --- a/lib/pages/member_video/controller.dart +++ b/lib/pages/member_video/controller.dart @@ -8,7 +8,7 @@ import 'package:PiliPlus/models_new/space/space_archive/data.dart'; import 'package:PiliPlus/models_new/space/space_archive/episodic_button.dart'; import 'package:PiliPlus/models_new/space/space_archive/item.dart'; import 'package:PiliPlus/pages/common/common_list_controller.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/iterable_ext.dart'; import 'package:PiliPlus/utils/id_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:get/get.dart'; diff --git a/lib/pages/member_video/widgets/video_card_h_member_video.dart b/lib/pages/member_video/widgets/video_card_h_member_video.dart index 4e9376d3a..c549902a0 100644 --- a/lib/pages/member_video/widgets/video_card_h_member_video.dart +++ b/lib/pages/member_video/widgets/video_card_h_member_video.dart @@ -11,7 +11,7 @@ import 'package:PiliPlus/models_new/space/space_archive/item.dart'; import 'package:PiliPlus/utils/date_utils.dart'; import 'package:PiliPlus/utils/duration_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; -import 'package:PiliPlus/utils/utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; @@ -44,7 +44,7 @@ class VideoCardHMemberVideo extends StatelessWidget { children: [ InkWell( onLongPress: onLongPress, - onSecondaryTap: Utils.isMobile ? null : onLongPress, + onSecondaryTap: PlatformUtils.isMobile ? null : onLongPress, onTap: onTap ?? () { diff --git a/lib/pages/mine/view.dart b/lib/pages/mine/view.dart index f7f989222..9178963d0 100644 --- a/lib/pages/mine/view.dart +++ b/lib/pages/mine/view.dart @@ -15,7 +15,8 @@ import 'package:PiliPlus/pages/login/controller.dart'; import 'package:PiliPlus/pages/main/controller.dart'; import 'package:PiliPlus/pages/mine/controller.dart'; import 'package:PiliPlus/pages/mine/widgets/item.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/theme_ext.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:flutter/material.dart' hide ListTile; import 'package:get/get.dart'; @@ -252,7 +253,7 @@ class _MediaPageState extends CommonPageState Feedback.forLongPress(context); controller.onLogin(true); }, - onSecondaryTap: Utils.isMobile + onSecondaryTap: PlatformUtils.isMobile ? null : () => controller.onLogin(true), child: Row( diff --git a/lib/pages/msg_feed_top/at_me/view.dart b/lib/pages/msg_feed_top/at_me/view.dart index d8374f48a..e4952b814 100644 --- a/lib/pages/msg_feed_top/at_me/view.dart +++ b/lib/pages/msg_feed_top/at_me/view.dart @@ -13,7 +13,7 @@ import 'package:PiliPlus/pages/msg_feed_top/at_me/controller.dart'; import 'package:PiliPlus/pages/whisper_settings/view.dart'; import 'package:PiliPlus/utils/app_scheme.dart'; import 'package:PiliPlus/utils/date_utils.dart'; -import 'package:PiliPlus/utils/utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:flutter/material.dart' hide ListTile; import 'package:get/get.dart'; @@ -110,7 +110,7 @@ class _AtMePageState extends State { PiliScheme.routePushFromUrl(nativeUri); }, onLongPress: onLongPress, - onSecondaryTap: Utils.isMobile ? null : onLongPress, + onSecondaryTap: PlatformUtils.isMobile ? null : onLongPress, leading: GestureDetector( onTap: () => Get.toNamed('/member?mid=${item.user?.mid}'), child: NetworkImgLayer( diff --git a/lib/pages/msg_feed_top/like_me/controller.dart b/lib/pages/msg_feed_top/like_me/controller.dart index d571e4d82..666e778bd 100644 --- a/lib/pages/msg_feed_top/like_me/controller.dart +++ b/lib/pages/msg_feed_top/like_me/controller.dart @@ -4,7 +4,7 @@ import 'package:PiliPlus/http/msg.dart'; import 'package:PiliPlus/models_new/msg/msg_like/data.dart'; import 'package:PiliPlus/models_new/msg/msg_like/item.dart'; import 'package:PiliPlus/pages/common/common_data_controller.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/iterable_ext.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; class LikeMeController diff --git a/lib/pages/msg_feed_top/like_me/view.dart b/lib/pages/msg_feed_top/like_me/view.dart index 34b598076..edacd7a73 100644 --- a/lib/pages/msg_feed_top/like_me/view.dart +++ b/lib/pages/msg_feed_top/like_me/view.dart @@ -14,7 +14,7 @@ import 'package:PiliPlus/pages/msg_feed_top/like_me/controller.dart'; import 'package:PiliPlus/pages/whisper_settings/view.dart'; import 'package:PiliPlus/utils/app_scheme.dart'; import 'package:PiliPlus/utils/date_utils.dart'; -import 'package:PiliPlus/utils/utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:flutter/material.dart' hide ListTile; import 'package:get/get.dart'; @@ -271,7 +271,7 @@ class _LikeMePageState extends State { PiliScheme.routePushFromUrl(nativeUri); }, onLongPress: onLongPress, - onSecondaryTap: Utils.isMobile ? null : onLongPress, + onSecondaryTap: PlatformUtils.isMobile ? null : onLongPress, leading: avatar, title: Text.rich( TextSpan( diff --git a/lib/pages/msg_feed_top/reply_me/view.dart b/lib/pages/msg_feed_top/reply_me/view.dart index 21843b511..20d53cf4e 100644 --- a/lib/pages/msg_feed_top/reply_me/view.dart +++ b/lib/pages/msg_feed_top/reply_me/view.dart @@ -13,7 +13,7 @@ import 'package:PiliPlus/pages/msg_feed_top/reply_me/controller.dart'; import 'package:PiliPlus/pages/whisper_settings/view.dart'; import 'package:PiliPlus/utils/app_scheme.dart'; import 'package:PiliPlus/utils/date_utils.dart'; -import 'package:PiliPlus/utils/utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:flutter/material.dart' hide ListTile; import 'package:get/get.dart'; @@ -118,7 +118,7 @@ class _ReplyMePageState extends State { ); }, onLongPress: onLongPress, - onSecondaryTap: Utils.isMobile ? null : onLongPress, + onSecondaryTap: PlatformUtils.isMobile ? null : onLongPress, leading: GestureDetector( onTap: () => Get.toNamed('/member?mid=${item.user?.mid}'), child: NetworkImgLayer( diff --git a/lib/pages/msg_feed_top/sys_msg/view.dart b/lib/pages/msg_feed_top/sys_msg/view.dart index 857b8ec77..9888db6bd 100644 --- a/lib/pages/msg_feed_top/sys_msg/view.dart +++ b/lib/pages/msg_feed_top/sys_msg/view.dart @@ -9,7 +9,7 @@ import 'package:PiliPlus/pages/msg_feed_top/sys_msg/controller.dart'; import 'package:PiliPlus/utils/app_scheme.dart'; import 'package:PiliPlus/utils/id_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; -import 'package:PiliPlus/utils/utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart' hide ListTile; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; @@ -87,7 +87,7 @@ class _SysMsgPageState extends State { return ListTile( safeArea: true, onLongPress: onLongPress, - onSecondaryTap: Utils.isMobile ? null : onLongPress, + onSecondaryTap: PlatformUtils.isMobile ? null : onLongPress, title: Text( "${item.title}", style: theme.textTheme.titleMedium, diff --git a/lib/pages/music/video/view.dart b/lib/pages/music/video/view.dart index bf30da966..51787080b 100644 --- a/lib/pages/music/video/view.dart +++ b/lib/pages/music/video/view.dart @@ -6,7 +6,7 @@ import 'package:PiliPlus/models/common/image_type.dart'; import 'package:PiliPlus/models_new/music/bgm_recommend_list.dart'; import 'package:PiliPlus/pages/music/video/controller.dart'; import 'package:PiliPlus/pages/music/widget/music_video_card_h.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/get_ext.dart'; import 'package:PiliPlus/utils/grid.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; diff --git a/lib/pages/music/view.dart b/lib/pages/music/view.dart index 0a09c1e0a..9dc379659 100644 --- a/lib/pages/music/view.dart +++ b/lib/pages/music/view.dart @@ -17,7 +17,10 @@ import 'package:PiliPlus/pages/music/controller.dart'; import 'package:PiliPlus/pages/music/video/view.dart'; import 'package:PiliPlus/utils/accounts.dart'; import 'package:PiliPlus/utils/date_utils.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/get_ext.dart'; +import 'package:PiliPlus/utils/extension/iterable_ext.dart'; +import 'package:PiliPlus/utils/extension/num_ext.dart'; +import 'package:PiliPlus/utils/extension/string_ext.dart'; import 'package:PiliPlus/utils/grid.dart'; import 'package:PiliPlus/utils/num_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; diff --git a/lib/pages/music/widget/music_video_card_h.dart b/lib/pages/music/widget/music_video_card_h.dart index 7dd602f0b..081afa752 100644 --- a/lib/pages/music/widget/music_video_card_h.dart +++ b/lib/pages/music/widget/music_video_card_h.dart @@ -10,7 +10,7 @@ import 'package:PiliPlus/models/common/stat_type.dart'; import 'package:PiliPlus/models_new/music/bgm_recommend_list.dart'; import 'package:PiliPlus/utils/duration_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; -import 'package:PiliPlus/utils/utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:flutter/material.dart'; class MusicVideoCardH extends StatelessWidget { @@ -44,7 +44,7 @@ class MusicVideoCardH extends StatelessWidget { } }, onLongPress: onLongPress, - onSecondaryTap: Utils.isMobile ? null : onLongPress, + onSecondaryTap: PlatformUtils.isMobile ? null : onLongPress, child: Padding( padding: const EdgeInsets.symmetric( horizontal: StyleString.safeSpace, diff --git a/lib/pages/pgc/controller.dart b/lib/pages/pgc/controller.dart index efa7eb12e..abda72362 100644 --- a/lib/pages/pgc/controller.dart +++ b/lib/pages/pgc/controller.dart @@ -8,7 +8,8 @@ import 'package:PiliPlus/models_new/pgc/pgc_index_result/list.dart'; import 'package:PiliPlus/models_new/pgc/pgc_timeline/result.dart'; import 'package:PiliPlus/pages/common/common_list_controller.dart'; import 'package:PiliPlus/services/account_service.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/iterable_ext.dart'; +import 'package:PiliPlus/utils/extension/scroll_controller_ext.dart'; import 'package:PiliPlus/utils/storage_pref.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; diff --git a/lib/pages/pgc/view.dart b/lib/pages/pgc/view.dart index b95f42c51..5c1786478 100644 --- a/lib/pages/pgc/view.dart +++ b/lib/pages/pgc/view.dart @@ -20,7 +20,7 @@ import 'package:PiliPlus/pages/pgc/widgets/pgc_card_v_timeline.dart'; import 'package:PiliPlus/pages/pgc_index/controller.dart'; import 'package:PiliPlus/pages/pgc_index/view.dart'; import 'package:PiliPlus/pages/pgc_index/widgets/pgc_card_v_pgc_index.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/iterable_ext.dart'; import 'package:PiliPlus/utils/grid.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; diff --git a/lib/pages/pgc/widgets/pgc_card_v.dart b/lib/pages/pgc/widgets/pgc_card_v.dart index 34d88d951..1c6b1e4ea 100644 --- a/lib/pages/pgc/widgets/pgc_card_v.dart +++ b/lib/pages/pgc/widgets/pgc_card_v.dart @@ -5,7 +5,7 @@ import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/models/common/badge_type.dart'; import 'package:PiliPlus/models_new/fav/fav_pgc/list.dart'; import 'package:PiliPlus/utils/page_utils.dart'; -import 'package:PiliPlus/utils/utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:flutter/material.dart'; // 视频卡片 - 垂直布局 @@ -28,7 +28,7 @@ class PgcCardV extends StatelessWidget { child: InkWell( borderRadius: StyleString.mdRadius, onLongPress: onLongPress, - onSecondaryTap: Utils.isMobile ? null : onLongPress, + onSecondaryTap: PlatformUtils.isMobile ? null : onLongPress, onTap: () => PageUtils.viewPgc(seasonId: item.seasonId), child: Column( crossAxisAlignment: CrossAxisAlignment.start, diff --git a/lib/pages/pgc/widgets/pgc_card_v_timeline.dart b/lib/pages/pgc/widgets/pgc_card_v_timeline.dart index effaba8c3..e9413f054 100644 --- a/lib/pages/pgc/widgets/pgc_card_v_timeline.dart +++ b/lib/pages/pgc/widgets/pgc_card_v_timeline.dart @@ -5,7 +5,7 @@ import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/models/common/badge_type.dart'; import 'package:PiliPlus/models_new/pgc/pgc_timeline/episode.dart'; import 'package:PiliPlus/utils/page_utils.dart'; -import 'package:PiliPlus/utils/utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:flutter/material.dart'; // 视频卡片 - 垂直布局 @@ -28,7 +28,7 @@ class PgcCardVTimeline extends StatelessWidget { child: InkWell( borderRadius: StyleString.mdRadius, onLongPress: onLongPress, - onSecondaryTap: Utils.isMobile ? null : onLongPress, + onSecondaryTap: PlatformUtils.isMobile ? null : onLongPress, onTap: () => PageUtils.viewPgc(seasonId: item.seasonId, epId: item.episodeId), child: Column( diff --git a/lib/pages/pgc_index/widgets/pgc_card_v_pgc_index.dart b/lib/pages/pgc_index/widgets/pgc_card_v_pgc_index.dart index 4fdd0d5d9..915e51b02 100644 --- a/lib/pages/pgc_index/widgets/pgc_card_v_pgc_index.dart +++ b/lib/pages/pgc_index/widgets/pgc_card_v_pgc_index.dart @@ -5,7 +5,7 @@ import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/models/common/badge_type.dart'; import 'package:PiliPlus/models_new/pgc/pgc_index_result/list.dart'; import 'package:PiliPlus/utils/page_utils.dart'; -import 'package:PiliPlus/utils/utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:flutter/material.dart'; // 视频卡片 - 垂直布局 @@ -29,7 +29,7 @@ class PgcCardVPgcIndex extends StatelessWidget { borderRadius: StyleString.mdRadius, onTap: () => PageUtils.viewPgc(seasonId: item.seasonId), onLongPress: onLongPress, - onSecondaryTap: Utils.isMobile ? null : onLongPress, + onSecondaryTap: PlatformUtils.isMobile ? null : onLongPress, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ diff --git a/lib/pages/pgc_review/child/view.dart b/lib/pages/pgc_review/child/view.dart index ccca87163..0799e649c 100644 --- a/lib/pages/pgc_review/child/view.dart +++ b/lib/pages/pgc_review/child/view.dart @@ -12,9 +12,9 @@ import 'package:PiliPlus/models_new/pgc/pgc_review/list.dart'; import 'package:PiliPlus/pages/pgc_review/child/controller.dart'; import 'package:PiliPlus/pages/pgc_review/post/view.dart'; import 'package:PiliPlus/utils/accounts.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/theme_ext.dart'; import 'package:PiliPlus/utils/num_utils.dart'; -import 'package:PiliPlus/utils/utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:flutter/material.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:get/get.dart'; @@ -192,7 +192,9 @@ class _PgcReviewChildPageState extends State ) : null, onLongPress: !isLongReview ? showMore : null, - onSecondaryTap: !isLongReview && !Utils.isMobile ? showMore : null, + onSecondaryTap: !isLongReview && !PlatformUtils.isMobile + ? showMore + : null, child: Padding( padding: const EdgeInsets.all(12), child: Column( diff --git a/lib/pages/pgc_review/view.dart b/lib/pages/pgc_review/view.dart index f323a7768..30175756f 100644 --- a/lib/pages/pgc_review/view.dart +++ b/lib/pages/pgc_review/view.dart @@ -2,7 +2,7 @@ import 'package:PiliPlus/models/common/pgc_review_type.dart'; import 'package:PiliPlus/pages/pgc_review/child/controller.dart'; import 'package:PiliPlus/pages/pgc_review/child/view.dart'; import 'package:PiliPlus/pages/pgc_review/post/view.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/scroll_controller_ext.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; diff --git a/lib/pages/popular_series/controller.dart b/lib/pages/popular_series/controller.dart index 4f78fced5..56661922f 100644 --- a/lib/pages/popular_series/controller.dart +++ b/lib/pages/popular_series/controller.dart @@ -6,7 +6,7 @@ import 'package:PiliPlus/models_new/popular/popular_series_list/list.dart'; import 'package:PiliPlus/models_new/popular/popular_series_one/config.dart'; import 'package:PiliPlus/models_new/popular/popular_series_one/data.dart'; import 'package:PiliPlus/pages/common/common_list_controller.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/iterable_ext.dart'; import 'package:get/get.dart'; class PopularSeriesController diff --git a/lib/pages/rank/zone/widget/pgc_rank_item.dart b/lib/pages/rank/zone/widget/pgc_rank_item.dart index d56bc490b..2044720ec 100644 --- a/lib/pages/rank/zone/widget/pgc_rank_item.dart +++ b/lib/pages/rank/zone/widget/pgc_rank_item.dart @@ -5,7 +5,7 @@ import 'package:PiliPlus/common/widgets/stat/stat.dart'; import 'package:PiliPlus/models/common/stat_type.dart'; import 'package:PiliPlus/models_new/pgc/pgc_rank/pgc_rank_item_model.dart'; import 'package:PiliPlus/utils/app_scheme.dart'; -import 'package:PiliPlus/utils/utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:flutter/material.dart'; class PgcRankItem extends StatelessWidget { @@ -28,7 +28,7 @@ class PgcRankItem extends StatelessWidget { } }, onLongPress: onLongPress, - onSecondaryTap: Utils.isMobile ? null : onLongPress, + onSecondaryTap: PlatformUtils.isMobile ? null : onLongPress, child: Padding( padding: const EdgeInsets.symmetric( horizontal: StyleString.safeSpace, diff --git a/lib/pages/save_panel/view.dart b/lib/pages/save_panel/view.dart index 5cb5a2141..194447c03 100644 --- a/lib/pages/save_panel/view.dart +++ b/lib/pages/save_panel/view.dart @@ -13,9 +13,10 @@ import 'package:PiliPlus/pages/music/controller.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_utils.dart'; +import 'package:PiliPlus/utils/extension/context_ext.dart'; import 'package:PiliPlus/utils/image_utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/material.dart'; @@ -286,7 +287,7 @@ class _SavePanelState extends State { } Future _onSaveOrSharePic([bool isShare = false]) async { - if (!isShare && Utils.isMobile) { + if (!isShare && PlatformUtils.isMobile) { if (mounted && !await ImageUtils.checkPermissionDependOnSdkInt(context)) { return; } @@ -589,7 +590,7 @@ class _SavePanelState extends State { showBottom = !showBottom; }), ), - if (Utils.isMobile) + if (PlatformUtils.isMobile) iconButton( size: 42, tooltip: '分享', diff --git a/lib/pages/search/controller.dart b/lib/pages/search/controller.dart index bf5eceff9..f4edb0f15 100644 --- a/lib/pages/search/controller.dart +++ b/lib/pages/search/controller.dart @@ -6,11 +6,12 @@ import 'package:PiliPlus/http/search.dart'; import 'package:PiliPlus/models/search/suggest.dart'; import 'package:PiliPlus/models_new/search/search_rcmd/data.dart'; import 'package:PiliPlus/models_new/search/search_trending/data.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/get_ext.dart'; +import 'package:PiliPlus/utils/extension/string_ext.dart'; import 'package:PiliPlus/utils/id_utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/storage_pref.dart'; -import 'package:PiliPlus/utils/utils.dart'; import 'package:flutter/material.dart'; import 'package:flutter/scheduler.dart'; import 'package:get/get.dart'; @@ -190,7 +191,7 @@ class SSearchController extends GetxController }, ); searchFocusNode.requestFocus(); - if (Utils.isDesktop) { + if (PlatformUtils.isDesktop) { SchedulerBinding.instance.addPostFrameCallback((_) { controller.selection = TextSelection.collapsed( offset: controller.text.length, diff --git a/lib/pages/search/view.dart b/lib/pages/search/view.dart index 2c009c6dc..77821ce54 100644 --- a/lib/pages/search/view.dart +++ b/lib/pages/search/view.dart @@ -9,7 +9,7 @@ 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/em.dart' show Em; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/size_ext.dart'; import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/storage_key.dart'; import 'package:PiliPlus/utils/utils.dart'; diff --git a/lib/pages/search/widgets/hot_keyword.dart b/lib/pages/search/widgets/hot_keyword.dart index 86a46dc1c..b95921fb9 100644 --- a/lib/pages/search/widgets/hot_keyword.dart +++ b/lib/pages/search/widgets/hot_keyword.dart @@ -1,5 +1,5 @@ import 'package:PiliPlus/models_new/search/search_trending/list.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/string_ext.dart'; import 'package:PiliPlus/utils/image_utils.dart'; import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/material.dart'; diff --git a/lib/pages/search/widgets/search_text.dart b/lib/pages/search/widgets/search_text.dart index 4556e3660..4883c8470 100644 --- a/lib/pages/search/widgets/search_text.dart +++ b/lib/pages/search/widgets/search_text.dart @@ -1,4 +1,4 @@ -import 'package:PiliPlus/utils/utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:flutter/material.dart'; class SearchText extends StatelessWidget { @@ -33,7 +33,7 @@ class SearchText extends StatelessWidget { child: InkWell( onTap: () => onTap?.call(text), onLongPress: hasLongPress ? () => onLongPress!(text) : null, - onSecondaryTap: hasLongPress && !Utils.isMobile + onSecondaryTap: hasLongPress && !PlatformUtils.isMobile ? () => onLongPress!(text) : null, borderRadius: const BorderRadius.all(Radius.circular(6)), diff --git a/lib/pages/search_panel/all/widgets/pgc_card_v_search.dart b/lib/pages/search_panel/all/widgets/pgc_card_v_search.dart index ad0172753..41c0a0708 100644 --- a/lib/pages/search_panel/all/widgets/pgc_card_v_search.dart +++ b/lib/pages/search_panel/all/widgets/pgc_card_v_search.dart @@ -4,7 +4,7 @@ import 'package:PiliPlus/common/widgets/image/image_save.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/models/search/result.dart'; import 'package:PiliPlus/utils/page_utils.dart'; -import 'package:PiliPlus/utils/utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:flutter/material.dart'; // 视频卡片 - 垂直布局 @@ -27,7 +27,7 @@ class PgcCardVSearch extends StatelessWidget { child: InkWell( borderRadius: StyleString.mdRadius, onLongPress: onLongPress, - onSecondaryTap: Utils.isMobile ? null : onLongPress, + onSecondaryTap: PlatformUtils.isMobile ? null : onLongPress, onTap: () => PageUtils.viewPgc(seasonId: item.seasonId), child: Column( crossAxisAlignment: CrossAxisAlignment.start, diff --git a/lib/pages/search_panel/article/controller.dart b/lib/pages/search_panel/article/controller.dart index b282aee28..57969dd6c 100644 --- a/lib/pages/search_panel/article/controller.dart +++ b/lib/pages/search_panel/article/controller.dart @@ -4,7 +4,7 @@ import 'package:PiliPlus/models/common/search/article_search_type.dart'; 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:PiliPlus/utils/extension/context_ext.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart' hide ContextExtensionss; diff --git a/lib/pages/search_panel/article/widgets/item.dart b/lib/pages/search_panel/article/widgets/item.dart index 7fa43db6e..e5d725429 100644 --- a/lib/pages/search_panel/article/widgets/item.dart +++ b/lib/pages/search_panel/article/widgets/item.dart @@ -3,7 +3,7 @@ import 'package:PiliPlus/common/widgets/image/image_save.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/models/search/result.dart'; import 'package:PiliPlus/utils/date_utils.dart'; -import 'package:PiliPlus/utils/utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; @@ -34,7 +34,7 @@ class SearchArticleItem extends StatelessWidget { }, ), onLongPress: onLongPress, - onSecondaryTap: Utils.isMobile ? null : onLongPress, + onSecondaryTap: PlatformUtils.isMobile ? null : onLongPress, child: Padding( padding: const EdgeInsets.symmetric( horizontal: StyleString.safeSpace, diff --git a/lib/pages/search_panel/controller.dart b/lib/pages/search_panel/controller.dart index d5b8a48ce..b2b8aee16 100644 --- a/lib/pages/search_panel/controller.dart +++ b/lib/pages/search_panel/controller.dart @@ -7,7 +7,7 @@ import 'package:PiliPlus/models/common/search/video_search_type.dart'; import 'package:PiliPlus/models/search/result.dart'; import 'package:PiliPlus/pages/common/common_list_controller.dart'; import 'package:PiliPlus/pages/search_result/controller.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/scroll_controller_ext.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; diff --git a/lib/pages/search_panel/live/widgets/item.dart b/lib/pages/search_panel/live/widgets/item.dart index a686686fa..ac559a1db 100644 --- a/lib/pages/search_panel/live/widgets/item.dart +++ b/lib/pages/search_panel/live/widgets/item.dart @@ -4,7 +4,7 @@ import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/models/search/result.dart'; import 'package:PiliPlus/utils/num_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; -import 'package:PiliPlus/utils/utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:flutter/material.dart'; class LiveItem extends StatelessWidget { @@ -24,7 +24,7 @@ class LiveItem extends StatelessWidget { child: InkWell( onTap: () => PageUtils.toLiveRoom(liveItem.roomid), onLongPress: onLongPress, - onSecondaryTap: Utils.isMobile ? null : onLongPress, + onSecondaryTap: PlatformUtils.isMobile ? null : onLongPress, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ diff --git a/lib/pages/search_panel/pgc/widgets/item.dart b/lib/pages/search_panel/pgc/widgets/item.dart index 75a7e8f39..7cdc7600d 100644 --- a/lib/pages/search_panel/pgc/widgets/item.dart +++ b/lib/pages/search_panel/pgc/widgets/item.dart @@ -5,7 +5,7 @@ import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/models/search/result.dart'; import 'package:PiliPlus/utils/date_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; -import 'package:PiliPlus/utils/utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:flutter/material.dart'; class SearchPgcItem extends StatelessWidget { @@ -29,7 +29,7 @@ class SearchPgcItem extends StatelessWidget { child: InkWell( onTap: () => PageUtils.viewPgc(seasonId: item.seasonId), onLongPress: onLongPress, - onSecondaryTap: Utils.isMobile ? null : onLongPress, + onSecondaryTap: PlatformUtils.isMobile ? null : onLongPress, child: Padding( padding: const EdgeInsets.symmetric( horizontal: StyleString.safeSpace, diff --git a/lib/pages/search_panel/user/controller.dart b/lib/pages/search_panel/user/controller.dart index e4026ff93..b80079bda 100644 --- a/lib/pages/search_panel/user/controller.dart +++ b/lib/pages/search_panel/user/controller.dart @@ -4,7 +4,7 @@ import 'package:PiliPlus/models/common/search/user_search_type.dart'; 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:PiliPlus/utils/extension/context_ext.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart' hide ContextExtensionss; diff --git a/lib/pages/search_panel/video/controller.dart b/lib/pages/search_panel/video/controller.dart index 0c0755f90..60a256938 100644 --- a/lib/pages/search_panel/video/controller.dart +++ b/lib/pages/search_panel/video/controller.dart @@ -7,8 +7,8 @@ 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_utils.dart'; +import 'package:PiliPlus/utils/extension/context_ext.dart'; import 'package:PiliPlus/utils/id_utils.dart'; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; diff --git a/lib/pages/search_trending/view.dart b/lib/pages/search_trending/view.dart index 1139d2173..89c1a03c9 100644 --- a/lib/pages/search_trending/view.dart +++ b/lib/pages/search_trending/view.dart @@ -7,8 +7,9 @@ import 'package:PiliPlus/common/widgets/loading_widget/loading_widget.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models_new/search/search_trending/list.dart'; import 'package:PiliPlus/pages/search_trending/controller.dart'; -import 'package:PiliPlus/utils/context_ext.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/context_ext.dart'; +import 'package:PiliPlus/utils/extension/get_ext.dart'; +import 'package:PiliPlus/utils/extension/size_ext.dart'; import 'package:PiliPlus/utils/image_utils.dart'; import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/foundation.dart'; diff --git a/lib/pages/setting/models/extra_settings.dart b/lib/pages/setting/models/extra_settings.dart index 30bac8de7..65832beda 100644 --- a/lib/pages/setting/models/extra_settings.dart +++ b/lib/pages/setting/models/extra_settings.dart @@ -30,6 +30,7 @@ import 'package:PiliPlus/utils/cache_manager.dart'; import 'package:PiliPlus/utils/feed_back.dart'; import 'package:PiliPlus/utils/image_utils.dart'; import 'package:PiliPlus/utils/path_utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/storage_key.dart'; import 'package:PiliPlus/utils/storage_pref.dart'; @@ -45,7 +46,7 @@ import 'package:get/get.dart'; import 'package:material_design_icons_flutter/material_design_icons_flutter.dart'; List get extraSettings => [ - if (Utils.isDesktop) ...[ + if (PlatformUtils.isDesktop) ...[ SwitchModel( title: '退出时最小化', leading: const Icon(Icons.exit_to_app), diff --git a/lib/pages/setting/models/play_settings.dart b/lib/pages/setting/models/play_settings.dart index da415a2b0..52aa6da6a 100644 --- a/lib/pages/setting/models/play_settings.dart +++ b/lib/pages/setting/models/play_settings.dart @@ -10,10 +10,10 @@ import 'package:PiliPlus/plugin/pl_player/models/fullscreen_mode.dart'; import 'package:PiliPlus/plugin/pl_player/utils/fullscreen.dart' show allowRotateScreen; import 'package:PiliPlus/services/service_locator.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/storage_key.dart'; import 'package:PiliPlus/utils/storage_pref.dart'; -import 'package:PiliPlus/utils/utils.dart'; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; @@ -27,7 +27,7 @@ List get playSettings => [ setKey: SettingBoxKey.enableShowDanmaku, defaultVal: true, ), - if (Utils.isMobile) + if (PlatformUtils.isMobile) const SwitchModel( title: '启用点击弹幕', subtitle: '点击弹幕悬停,支持点赞、复制、举报操作', @@ -64,7 +64,7 @@ List get playSettings => [ title: '全屏显示电池电量', leading: const Icon(Icons.battery_3_bar), setKey: SettingBoxKey.showBatteryLevel, - defaultVal: Utils.isMobile, + defaultVal: PlatformUtils.isMobile, ), const SwitchModel( title: '双击快退/快进', @@ -139,7 +139,7 @@ List get playSettings => [ } }, ), - if (Utils.isDesktop) + if (PlatformUtils.isDesktop) SwitchModel( title: '最小化时暂停/还原时播放', leading: const Icon(Icons.pause_circle_outline), @@ -295,7 +295,7 @@ List get playSettings => [ } }, ), - if (Utils.isMobile) + if (PlatformUtils.isMobile) SwitchModel( title: '后台音频服务', subtitle: '避免画中画没有播放暂停功能', diff --git a/lib/pages/setting/models/style_settings.dart b/lib/pages/setting/models/style_settings.dart index a2758a2a9..f9de4f850 100644 --- a/lib/pages/setting/models/style_settings.dart +++ b/lib/pages/setting/models/style_settings.dart @@ -23,10 +23,10 @@ import 'package:PiliPlus/pages/setting/widgets/select_dialog.dart'; import 'package:PiliPlus/pages/setting/widgets/slide_dialog.dart'; import 'package:PiliPlus/plugin/pl_player/utils/fullscreen.dart'; import 'package:PiliPlus/utils/global_data.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/storage_key.dart'; import 'package:PiliPlus/utils/storage_pref.dart'; -import 'package:PiliPlus/utils/utils.dart'; import 'package:auto_orientation/auto_orientation.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; @@ -35,7 +35,7 @@ import 'package:get/get.dart'; import 'package:material_design_icons_flutter/material_design_icons_flutter.dart'; List get styleSettings => [ - if (Utils.isDesktop) ...[ + if (PlatformUtils.isDesktop) ...[ const SwitchModel( title: '显示窗口标题栏', leading: Icon(Icons.window), diff --git a/lib/pages/setting/pages/play_speed_set.dart b/lib/pages/setting/pages/play_speed_set.dart index 81402f890..0c3cf2b30 100644 --- a/lib/pages/setting/pages/play_speed_set.dart +++ b/lib/pages/setting/pages/play_speed_set.dart @@ -3,7 +3,7 @@ import 'dart:math'; import 'package:PiliPlus/common/widgets/flutter/list_tile.dart'; import 'package:PiliPlus/common/widgets/view_safe_area.dart'; import 'package:PiliPlus/pages/setting/widgets/switch_item.dart'; -import 'package:PiliPlus/utils/context_ext.dart'; +import 'package:PiliPlus/utils/extension/context_ext.dart'; import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/storage_key.dart'; import 'package:PiliPlus/utils/storage_pref.dart'; diff --git a/lib/pages/setting/view.dart b/lib/pages/setting/view.dart index d55b7746d..a39ad2b8d 100644 --- a/lib/pages/setting/view.dart +++ b/lib/pages/setting/view.dart @@ -14,7 +14,8 @@ 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/extension.dart'; +import 'package:PiliPlus/utils/extension/iterable_ext.dart'; +import 'package:PiliPlus/utils/extension/size_ext.dart'; import 'package:flutter/material.dart' hide ListTile; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart' hide ContextExtensionss; diff --git a/lib/pages/share/view.dart b/lib/pages/share/view.dart index 82661486f..01e1c6b88 100644 --- a/lib/pages/share/view.dart +++ b/lib/pages/share/view.dart @@ -3,7 +3,7 @@ import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/common/widgets/self_sized_horizontal_list.dart'; import 'package:PiliPlus/models/common/image_type.dart'; import 'package:PiliPlus/pages/contact/view.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/scroll_controller_ext.dart'; import 'package:PiliPlus/utils/request_utils.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart' show LengthLimitingTextInputFormatter; diff --git a/lib/pages/subscription/widgets/item.dart b/lib/pages/subscription/widgets/item.dart index 5985038ac..28d72ee4f 100644 --- a/lib/pages/subscription/widgets/item.dart +++ b/lib/pages/subscription/widgets/item.dart @@ -4,6 +4,7 @@ import 'package:PiliPlus/common/widgets/image/image_save.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/models_new/sub/sub/list.dart'; import 'package:PiliPlus/pages/subscription_detail/view.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; @@ -55,7 +56,7 @@ class SubItem extends StatelessWidget { } }, onLongPress: onLongPress, - onSecondaryTap: Utils.isMobile ? null : onLongPress, + onSecondaryTap: PlatformUtils.isMobile ? null : onLongPress, child: Padding( padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 5), child: Row( diff --git a/lib/pages/subscription_detail/widget/sub_video_card.dart b/lib/pages/subscription_detail/widget/sub_video_card.dart index b0efa48cd..911c63515 100644 --- a/lib/pages/subscription_detail/widget/sub_video_card.dart +++ b/lib/pages/subscription_detail/widget/sub_video_card.dart @@ -10,7 +10,7 @@ import 'package:PiliPlus/models_new/sub/sub_detail/media.dart'; import 'package:PiliPlus/utils/date_utils.dart'; import 'package:PiliPlus/utils/duration_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; -import 'package:PiliPlus/utils/utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:flutter/material.dart'; // 收藏视频卡片 - 水平布局 @@ -46,7 +46,7 @@ class SubVideoCardH extends StatelessWidget { } }, onLongPress: onLongPress, - onSecondaryTap: Utils.isMobile ? null : onLongPress, + onSecondaryTap: PlatformUtils.isMobile ? null : onLongPress, child: Padding( padding: const EdgeInsets.symmetric( horizontal: StyleString.safeSpace, diff --git a/lib/pages/video/controller.dart b/lib/pages/video/controller.dart index ada6bad7f..5620314b5 100644 --- a/lib/pages/video/controller.dart +++ b/lib/pages/video/controller.dart @@ -54,10 +54,12 @@ import 'package:PiliPlus/plugin/pl_player/models/heart_beat_type.dart'; import 'package:PiliPlus/plugin/pl_player/models/play_status.dart'; import 'package:PiliPlus/services/download/download_service.dart'; import 'package:PiliPlus/utils/accounts.dart'; -import 'package:PiliPlus/utils/context_ext.dart'; import 'package:PiliPlus/utils/duration_utils.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/context_ext.dart'; +import 'package:PiliPlus/utils/extension/iterable_ext.dart'; +import 'package:PiliPlus/utils/extension/size_ext.dart'; import 'package:PiliPlus/utils/page_utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/storage_pref.dart'; import 'package:PiliPlus/utils/utils.dart'; @@ -1606,7 +1608,7 @@ class VideoDetailController extends GetxController subtitles.first.lan.startsWith('ai') ? 0 : 1, SubtitlePrefType.auto => !subtitles.first.lan.startsWith('ai') || - (Utils.isMobile && + (PlatformUtils.isMobile && (await FlutterVolumeController.getVolume() ?? 0.0) <= 0.0) ? 1 @@ -1889,7 +1891,9 @@ class VideoDetailController extends GetxController (e) => e.cid == (seasonCid ?? cid.value), ); final size = context.mediaQuerySize; - final maxChildSize = Utils.isMobile && !size.isPortrait ? 1.0 : 0.7; + final maxChildSize = PlatformUtils.isMobile && !size.isPortrait + ? 1.0 + : 0.7; showModalBottomSheet( context: context, useSafeArea: true, diff --git a/lib/pages/video/introduction/local/controller.dart b/lib/pages/video/introduction/local/controller.dart index 7afff6d30..c7af976e6 100644 --- a/lib/pages/video/introduction/local/controller.dart +++ b/lib/pages/video/introduction/local/controller.dart @@ -4,7 +4,7 @@ import 'package:PiliPlus/pages/common/common_intro_controller.dart'; import 'package:PiliPlus/pages/download/controller.dart'; import 'package:PiliPlus/plugin/pl_player/models/play_repeat.dart'; import 'package:PiliPlus/services/service_locator.dart'; -import 'package:PiliPlus/utils/utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:extended_nested_scroll_view/extended_nested_scroll_view.dart'; import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/scheduler.dart' show SchedulerBinding; @@ -65,7 +65,7 @@ class LocalIntroController extends CommonIntroController { final currCid = videoDetailCtr.cid.value; final index = list.indexWhere((e) => e.cid == currCid); this.index.value = index; - if (Utils.isMobile) { + if (PlatformUtils.isMobile) { onVideoDetailChange(list[index]); } if (index != 0) { @@ -141,7 +141,7 @@ class LocalIntroController extends CommonIntroController { ..value.title = entry.showTitle ..refresh(); this.index.value = index; - if (Utils.isMobile) { + if (PlatformUtils.isMobile) { onVideoDetailChange(entry); } } diff --git a/lib/pages/video/introduction/local/view.dart b/lib/pages/video/introduction/local/view.dart index 932e07e38..c12a2fc43 100644 --- a/lib/pages/video/introduction/local/view.dart +++ b/lib/pages/video/introduction/local/view.dart @@ -8,7 +8,7 @@ import 'package:PiliPlus/models/common/video/video_quality.dart'; import 'package:PiliPlus/models_new/download/bili_download_entry_info.dart'; import 'package:PiliPlus/pages/video/introduction/local/controller.dart'; import 'package:PiliPlus/utils/duration_utils.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/num_ext.dart'; import 'package:PiliPlus/utils/path_utils.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; diff --git a/lib/pages/video/introduction/pgc/controller.dart b/lib/pages/video/introduction/pgc/controller.dart index a322cb2e7..6faa8ea16 100644 --- a/lib/pages/video/introduction/pgc/controller.dart +++ b/lib/pages/video/introduction/pgc/controller.dart @@ -24,6 +24,7 @@ import 'package:PiliPlus/utils/feed_back.dart'; import 'package:PiliPlus/utils/global_data.dart'; import 'package:PiliPlus/utils/id_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/material.dart'; @@ -170,7 +171,7 @@ class PgcIntroController extends CommonIntroController { PageUtils.launchURL(videoUrl); }, ), - if (Utils.isMobile) + if (PlatformUtils.isMobile) ListTile( dense: true, title: const Text( diff --git a/lib/pages/video/introduction/pgc/view.dart b/lib/pages/video/introduction/pgc/view.dart index 82cd30c70..227fb0c75 100644 --- a/lib/pages/video/introduction/pgc/view.dart +++ b/lib/pages/video/introduction/pgc/view.dart @@ -14,7 +14,7 @@ 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/extension/get_ext.dart'; import 'package:PiliPlus/utils/num_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:flutter/material.dart'; diff --git a/lib/pages/video/introduction/pgc/widgets/intro_detail.dart b/lib/pages/video/introduction/pgc/widgets/intro_detail.dart index cee99ed1e..14e95f8fd 100644 --- a/lib/pages/video/introduction/pgc/widgets/intro_detail.dart +++ b/lib/pages/video/introduction/pgc/widgets/intro_detail.dart @@ -9,7 +9,7 @@ import 'package:PiliPlus/pages/common/slide/common_slide_page.dart'; import 'package:PiliPlus/pages/pgc_review/view.dart'; import 'package:PiliPlus/pages/search/widgets/search_text.dart'; import 'package:PiliPlus/pages/video/introduction/ugc/widgets/selectable_text.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/scroll_controller_ext.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:flutter/material.dart' hide TabBarView; import 'package:get/get.dart'; diff --git a/lib/pages/video/introduction/pgc/widgets/pgc_panel.dart b/lib/pages/video/introduction/pgc/widgets/pgc_panel.dart index e43cfbcbc..ac1d4d69d 100644 --- a/lib/pages/video/introduction/pgc/widgets/pgc_panel.dart +++ b/lib/pages/video/introduction/pgc/widgets/pgc_panel.dart @@ -5,7 +5,7 @@ import 'package:PiliPlus/models_new/pgc/pgc_info_model/new_ep.dart'; import 'package:PiliPlus/models_new/video/video_detail/episode.dart' hide EpisodeItem; import 'package:PiliPlus/pages/video/controller.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/theme_ext.dart'; import 'package:PiliPlus/utils/storage_pref.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:flutter/material.dart'; diff --git a/lib/pages/video/introduction/ugc/controller.dart b/lib/pages/video/introduction/ugc/controller.dart index dfeaa1382..9b2f17f37 100644 --- a/lib/pages/video/introduction/ugc/controller.dart +++ b/lib/pages/video/introduction/ugc/controller.dart @@ -28,12 +28,13 @@ 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/accounts.dart'; -import 'package:PiliPlus/utils/context_ext.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/iterable_ext.dart'; +import 'package:PiliPlus/utils/extension/string_ext.dart'; import 'package:PiliPlus/utils/feed_back.dart'; import 'package:PiliPlus/utils/global_data.dart'; import 'package:PiliPlus/utils/id_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/request_utils.dart'; import 'package:PiliPlus/utils/storage_pref.dart'; import 'package:PiliPlus/utils/utils.dart'; @@ -41,7 +42,7 @@ import 'package:expandable/expandable.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' hide ContextExtensionss; +import 'package:get/get.dart'; class UgcIntroController extends CommonIntroController with ReloadMixin { late ExpandableController expandableCtr; @@ -332,7 +333,7 @@ class UgcIntroController extends CommonIntroController with ReloadMixin { PageUtils.launchURL(videoUrl); }, ), - if (Utils.isMobile) + if (PlatformUtils.isMobile) ListTile( dense: true, title: const Text( diff --git a/lib/pages/video/introduction/ugc/view.dart b/lib/pages/video/introduction/ugc/view.dart index ef2221315..fc0b686bc 100644 --- a/lib/pages/video/introduction/ugc/view.dart +++ b/lib/pages/video/introduction/ugc/view.dart @@ -21,11 +21,15 @@ import 'package:PiliPlus/pages/video/introduction/ugc/widgets/selectable_text.da import 'package:PiliPlus/utils/app_scheme.dart'; import 'package:PiliPlus/utils/date_utils.dart'; import 'package:PiliPlus/utils/duration_utils.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/get_ext.dart'; +import 'package:PiliPlus/utils/extension/iterable_ext.dart'; +import 'package:PiliPlus/utils/extension/string_ext.dart'; +import 'package:PiliPlus/utils/extension/theme_ext.dart'; import 'package:PiliPlus/utils/feed_back.dart'; import 'package:PiliPlus/utils/id_utils.dart'; import 'package:PiliPlus/utils/num_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/request_utils.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:expandable/expandable.dart'; @@ -174,7 +178,7 @@ class _UgcIntroPanelState extends State { const SizedBox(height: 8), if (isLoading) _buildVideoTitle(theme, videoDetail) - else if (isHorizontal && Utils.isDesktop) + else if (isHorizontal && PlatformUtils.isDesktop) SelectionArea( child: _buildVideoTitle( theme, @@ -223,7 +227,7 @@ class _UgcIntroPanelState extends State { ), ), ], - if (isHorizontal && Utils.isDesktop) + if (isHorizontal && PlatformUtils.isDesktop) ..._infos(theme, videoDetail) else ExpandablePanel( diff --git a/lib/pages/video/introduction/ugc/widgets/action_item.dart b/lib/pages/video/introduction/ugc/widgets/action_item.dart index 7f62c9634..9eb8fe250 100644 --- a/lib/pages/video/introduction/ugc/widgets/action_item.dart +++ b/lib/pages/video/introduction/ugc/widgets/action_item.dart @@ -1,6 +1,6 @@ import 'dart:math' show pi; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/theme_ext.dart'; import 'package:flutter/material.dart'; class ActionItem extends StatelessWidget { diff --git a/lib/pages/video/introduction/ugc/widgets/selectable_text.dart b/lib/pages/video/introduction/ugc/widgets/selectable_text.dart index be92da753..231d0e77e 100644 --- a/lib/pages/video/introduction/ugc/widgets/selectable_text.dart +++ b/lib/pages/video/introduction/ugc/widgets/selectable_text.dart @@ -1,11 +1,11 @@ -import 'package:PiliPlus/utils/utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:flutter/material.dart'; Widget selectableText( String text, { TextStyle? style, }) { - if (Utils.isDesktop) { + if (PlatformUtils.isDesktop) { return SelectionArea( child: Text( style: style, @@ -23,7 +23,7 @@ Widget selectableRichText( TextSpan textSpan, { TextStyle? style, }) { - if (Utils.isDesktop) { + if (PlatformUtils.isDesktop) { return SelectionArea( child: Text.rich( style: style, diff --git a/lib/pages/video/introduction/ugc/widgets/triple_mixin.dart b/lib/pages/video/introduction/ugc/widgets/triple_mixin.dart index c77d863d7..d56cf9eef 100644 --- a/lib/pages/video/introduction/ugc/widgets/triple_mixin.dart +++ b/lib/pages/video/introduction/ugc/widgets/triple_mixin.dart @@ -1,7 +1,7 @@ import 'dart:async'; import 'dart:math' show pi; -import 'package:PiliPlus/utils/utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; @@ -45,7 +45,7 @@ mixin TripleMixin on GetxController, TickerProvider { _timer = null; } - static final _duration = Utils.isMobile + static final _duration = PlatformUtils.isMobile ? const Duration(milliseconds: 200) : const Duration(milliseconds: 255); diff --git a/lib/pages/video/medialist/view.dart b/lib/pages/video/medialist/view.dart index f92cb7a5e..0484174ec 100644 --- a/lib/pages/video/medialist/view.dart +++ b/lib/pages/video/medialist/view.dart @@ -11,7 +11,7 @@ import 'package:PiliPlus/models_new/media_list/media_list.dart'; import 'package:PiliPlus/models_new/video/video_detail/episode.dart'; import 'package:PiliPlus/pages/common/slide/common_slide_page.dart'; import 'package:PiliPlus/utils/duration_utils.dart'; -import 'package:PiliPlus/utils/utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:flutter/material.dart' hide RefreshCallback; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; @@ -179,7 +179,7 @@ class _MediaListPanelState extends State widget.onChangeEpisode(item); }, onLongPress: onLongPress, - onSecondaryTap: Utils.isMobile ? null : onLongPress, + onSecondaryTap: PlatformUtils.isMobile ? null : onLongPress, child: Stack( clipBehavior: Clip.none, children: [ diff --git a/lib/pages/video/member/controller.dart b/lib/pages/video/member/controller.dart index 880ad72ec..0cfb92041 100644 --- a/lib/pages/video/member/controller.dart +++ b/lib/pages/video/member/controller.dart @@ -6,7 +6,7 @@ import 'package:PiliPlus/models_new/space/space_archive/data.dart'; import 'package:PiliPlus/models_new/space/space_archive/item.dart'; import 'package:PiliPlus/pages/common/common_list_controller.dart'; import 'package:PiliPlus/utils/accounts.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/scroll_controller_ext.dart'; import 'package:get/get.dart'; class HorizontalMemberPageController diff --git a/lib/pages/video/member/view.dart b/lib/pages/video/member/view.dart index 66fb53765..5205e80e8 100644 --- a/lib/pages/video/member/view.dart +++ b/lib/pages/video/member/view.dart @@ -17,7 +17,7 @@ import 'package:PiliPlus/pages/video/controller.dart'; import 'package:PiliPlus/pages/video/introduction/ugc/controller.dart'; import 'package:PiliPlus/pages/video/member/controller.dart'; import 'package:PiliPlus/utils/accounts.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/theme_ext.dart'; import 'package:PiliPlus/utils/num_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/request_utils.dart'; diff --git a/lib/pages/video/note/view.dart b/lib/pages/video/note/view.dart index 39ebf367b..0e3d5469d 100644 --- a/lib/pages/video/note/view.dart +++ b/lib/pages/video/note/view.dart @@ -9,7 +9,7 @@ import 'package:PiliPlus/pages/common/slide/common_slide_page.dart'; import 'package:PiliPlus/pages/video/note/controller.dart'; import 'package:PiliPlus/pages/webview/view.dart'; import 'package:PiliPlus/utils/accounts.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/theme_ext.dart'; import 'package:extended_nested_scroll_view/extended_nested_scroll_view.dart'; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; diff --git a/lib/pages/video/pay_coins/view.dart b/lib/pages/video/pay_coins/view.dart index 137c56e99..1371db3c1 100644 --- a/lib/pages/video/pay_coins/view.dart +++ b/lib/pages/video/pay_coins/view.dart @@ -2,7 +2,8 @@ import 'dart:async'; import 'dart:math' as math; import 'dart:math' show max; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/size_ext.dart'; +import 'package:PiliPlus/utils/extension/widget_ext.dart'; import 'package:PiliPlus/utils/global_data.dart'; import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/storage_key.dart'; diff --git a/lib/pages/video/post_panel/view.dart b/lib/pages/video/post_panel/view.dart index 2352432d7..fa3a41206 100644 --- a/lib/pages/video/post_panel/view.dart +++ b/lib/pages/video/post_panel/view.dart @@ -13,7 +13,7 @@ import 'package:PiliPlus/pages/video/controller.dart'; import 'package:PiliPlus/pages/video/post_panel/popup_menu_text.dart'; import 'package:PiliPlus/plugin/pl_player/controller.dart'; import 'package:PiliPlus/utils/duration_utils.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/iterable_ext.dart'; import 'package:extended_nested_scroll_view/extended_nested_scroll_view.dart'; import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/material.dart'; diff --git a/lib/pages/video/related/view.dart b/lib/pages/video/related/view.dart index 8a5747032..41b0a39c0 100644 --- a/lib/pages/video/related/view.dart +++ b/lib/pages/video/related/view.dart @@ -3,7 +3,7 @@ import 'package:PiliPlus/common/widgets/video_card/video_card_h.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models/model_hot_video_item.dart'; import 'package:PiliPlus/pages/video/related/controller.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/get_ext.dart'; import 'package:PiliPlus/utils/grid.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; diff --git a/lib/pages/video/reply/widgets/reply_item_grpc.dart b/lib/pages/video/reply/widgets/reply_item_grpc.dart index cdcb17b13..9df563cb2 100644 --- a/lib/pages/video/reply/widgets/reply_item_grpc.dart +++ b/lib/pages/video/reply/widgets/reply_item_grpc.dart @@ -18,13 +18,15 @@ 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_utils.dart'; import 'package:PiliPlus/utils/duration_utils.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/context_ext.dart'; +import 'package:PiliPlus/utils/extension/string_ext.dart'; +import 'package:PiliPlus/utils/extension/theme_ext.dart'; import 'package:PiliPlus/utils/feed_back.dart'; import 'package:PiliPlus/utils/image_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/storage_pref.dart'; import 'package:PiliPlus/utils/url_utils.dart'; import 'package:PiliPlus/utils/utils.dart'; @@ -77,7 +79,7 @@ class ReplyItemGrpc extends StatelessWidget { Widget build(BuildContext context) { final ThemeData theme = Theme.of(context); - final isMobile = Utils.isMobile; + final isMobile = PlatformUtils.isMobile; void showMore() => showModalBottomSheet( context: context, useSafeArea: true, @@ -465,7 +467,7 @@ class ReplyItemGrpc extends StatelessWidget { feedBack(); showMore(); }, - onSecondaryTap: Utils.isMobile ? null : showMore, + onSecondaryTap: PlatformUtils.isMobile ? null : showMore, child: Padding( padding: padding, child: Text.rich( diff --git a/lib/pages/video/reply_new/view.dart b/lib/pages/video/reply_new/view.dart index 80a26a11a..5f7c30b64 100644 --- a/lib/pages/video/reply_new/view.dart +++ b/lib/pages/video/reply_new/view.dart @@ -17,8 +17,8 @@ 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_utils.dart'; +import 'package:PiliPlus/utils/extension/context_ext.dart'; import 'package:PiliPlus/utils/grid.dart'; import 'package:PiliPlus/utils/path_utils.dart'; import 'package:PiliPlus/utils/storage_pref.dart'; diff --git a/lib/pages/video/reply_reply/view.dart b/lib/pages/video/reply_reply/view.dart index a30be5a57..35a826494 100644 --- a/lib/pages/video/reply_reply/view.dart +++ b/lib/pages/video/reply_reply/view.dart @@ -10,7 +10,7 @@ import 'package:PiliPlus/pages/common/slide/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/app_scheme.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/widget_ext.dart'; import 'package:PiliPlus/utils/num_utils.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:extended_nested_scroll_view/extended_nested_scroll_view.dart'; diff --git a/lib/pages/video/reply_search_item/child/widgets/item.dart b/lib/pages/video/reply_search_item/child/widgets/item.dart index f0fe37e2b..0095bd58c 100644 --- a/lib/pages/video/reply_search_item/child/widgets/item.dart +++ b/lib/pages/video/reply_search_item/child/widgets/item.dart @@ -7,7 +7,7 @@ import 'package:PiliPlus/grpc/bilibili/main/community/reply/v1.pb.dart' import 'package:PiliPlus/models/common/badge_type.dart'; import 'package:PiliPlus/models/common/reply/reply_search_type.dart'; import 'package:PiliPlus/utils/duration_utils.dart'; -import 'package:PiliPlus/utils/utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; @@ -57,7 +57,7 @@ class ReplySearchItem extends StatelessWidget { child: InkWell( onTap: () => Get.back(result: (title: title, url: item.url)), onLongPress: onLongPress, - onSecondaryTap: Utils.isMobile ? null : onLongPress, + onSecondaryTap: PlatformUtils.isMobile ? null : onLongPress, child: Padding( padding: const EdgeInsets.symmetric( horizontal: StyleString.safeSpace, diff --git a/lib/pages/video/reply_search_item/controller.dart b/lib/pages/video/reply_search_item/controller.dart index 96e537de6..dbc49df17 100644 --- a/lib/pages/video/reply_search_item/controller.dart +++ b/lib/pages/video/reply_search_item/controller.dart @@ -1,6 +1,6 @@ import 'package:PiliPlus/models/common/reply/reply_search_type.dart'; import 'package:PiliPlus/pages/video/reply_search_item/child/controller.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/scroll_controller_ext.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; diff --git a/lib/pages/video/view.dart b/lib/pages/video/view.dart index b7c2e1794..46b82e1b4 100644 --- a/lib/pages/video/view.dart +++ b/lib/pages/video/view.dart @@ -48,13 +48,14 @@ 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/extension.dart'; +import 'package:PiliPlus/utils/extension/scroll_controller_ext.dart'; +import 'package:PiliPlus/utils/extension/theme_ext.dart'; import 'package:PiliPlus/utils/image_utils.dart'; import 'package:PiliPlus/utils/num_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/storage_key.dart'; -import 'package:PiliPlus/utils/utils.dart'; import 'package:auto_orientation/auto_orientation.dart'; import 'package:extended_nested_scroll_view/extended_nested_scroll_view.dart'; import 'package:floating/floating.dart'; @@ -364,7 +365,7 @@ class _VideoDetailPageVState extends State } PageUtils.routeObserver.unsubscribe(this); WidgetsBinding.instance.removeObserver(this); - if (Utils.isMobile) { + if (PlatformUtils.isMobile) { showStatusBar(); } super.dispose(); @@ -529,7 +530,7 @@ class _VideoDetailPageVState extends State videoDetailController.animationController ..removeListener(animListener) ..addListener(animListener); - if (Utils.isMobile && mounted && isShowing && !isFullScreen) { + if (PlatformUtils.isMobile && mounted && isShowing && !isFullScreen) { if (isPortrait) { if (!videoDetailController.imageview) { showStatusBar(); @@ -538,7 +539,7 @@ class _VideoDetailPageVState extends State hideStatusBar(); } } - if (Utils.isMobile) { + if (PlatformUtils.isMobile) { if (!isPortrait && !isFullScreen && plPlayerController != null && diff --git a/lib/pages/video/widgets/header_control.dart b/lib/pages/video/widgets/header_control.dart index 8fb5787aa..1214124c1 100644 --- a/lib/pages/video/widgets/header_control.dart +++ b/lib/pages/video/widgets/header_control.dart @@ -38,9 +38,10 @@ import 'package:PiliPlus/plugin/pl_player/utils/fullscreen.dart'; import 'package:PiliPlus/services/service_locator.dart'; import 'package:PiliPlus/utils/accounts.dart'; import 'package:PiliPlus/utils/accounts/account.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/string_ext.dart'; import 'package:PiliPlus/utils/image_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/storage_key.dart'; import 'package:PiliPlus/utils/storage_pref.dart'; @@ -2534,7 +2535,7 @@ class HeaderControlState extends State plPlayerController.exitDesktopPip(); } else if (isFullScreen) { plPlayerController.triggerFullScreen(status: false); - } else if (Utils.isMobile && + } else if (PlatformUtils.isMobile && !horizontalScreen && !isPortrait) { verticalScreenForTwoSeconds(); @@ -2567,7 +2568,7 @@ class HeaderControlState extends State title, // show current datetime ...?timeBatteryWidgets, - if (Utils.isDesktop && !plPlayerController.isDesktopPip) + if (PlatformUtils.isDesktop && !plPlayerController.isDesktopPip) Obx(() { final isAlwaysOnTop = plPlayerController.isAlwaysOnTop.value; return SizedBox( @@ -2680,7 +2681,7 @@ class HeaderControlState extends State : const SizedBox.shrink(), ), ], - if (isFullScreen || Utils.isDesktop) ...[ + if (isFullScreen || PlatformUtils.isDesktop) ...[ SizedBox( width: 42, height: 34, @@ -2735,7 +2736,8 @@ class HeaderControlState extends State ), ), ], - if (Platform.isAndroid || (Utils.isDesktop && !isFullScreen)) + if (Platform.isAndroid || + (PlatformUtils.isDesktop && !isFullScreen)) SizedBox( width: 42, height: 34, @@ -2745,7 +2747,7 @@ class HeaderControlState extends State padding: WidgetStatePropertyAll(EdgeInsets.zero), ), onPressed: () async { - if (Utils.isDesktop) { + if (PlatformUtils.isDesktop) { plPlayerController.toggleDesktopPip(); return; } diff --git a/lib/pages/video/widgets/player_focus.dart b/lib/pages/video/widgets/player_focus.dart index 28f6f2b82..5f5990877 100644 --- a/lib/pages/video/widgets/player_focus.dart +++ b/lib/pages/video/widgets/player_focus.dart @@ -4,9 +4,9 @@ import 'dart:math' as math; import 'package:PiliPlus/pages/common/common_intro_controller.dart'; import 'package:PiliPlus/pages/video/introduction/ugc/controller.dart'; import 'package:PiliPlus/plugin/pl_player/controller.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; 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:flutter/services.dart' show KeyDownEvent, KeyUpEvent, LogicalKeyboardKey, HardwareKeyboard; @@ -184,7 +184,7 @@ class PlayerFocus extends StatelessWidget { return true; case LogicalKeyboardKey.keyP: - if (Utils.isDesktop && hasPlayer && !isFullScreen) { + if (PlatformUtils.isDesktop && hasPlayer && !isFullScreen) { plPlayerController ..toggleDesktopPip() ..controlsLock.value = false diff --git a/lib/pages/webdav/webdav.dart b/lib/pages/webdav/webdav.dart index e5d55ccf1..c18bb32a5 100644 --- a/lib/pages/webdav/webdav.dart +++ b/lib/pages/webdav/webdav.dart @@ -2,10 +2,10 @@ import 'dart:convert'; import 'package:PiliPlus/common/constants.dart'; import 'package:PiliPlus/common/widgets/pair.dart'; -import 'package:PiliPlus/utils/context_ext.dart'; +import 'package:PiliPlus/utils/extension/context_ext.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/storage_pref.dart'; -import 'package:PiliPlus/utils/utils.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart' hide ContextExtensionss; import 'package:webdav_client/webdav_client.dart' as webdav; @@ -53,7 +53,7 @@ class WebDav { } String _getFileName() { - final type = Utils.isDesktop + final type = PlatformUtils.isDesktop ? 'desktop' : Get.context!.isTablet ? 'pad' diff --git a/lib/pages/whisper/view.dart b/lib/pages/whisper/view.dart index bb7b37b9c..16d84593b 100644 --- a/lib/pages/whisper/view.dart +++ b/lib/pages/whisper/view.dart @@ -5,7 +5,7 @@ import 'package:PiliPlus/grpc/bilibili/app/im/v1.pb.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/pages/whisper/controller.dart'; import 'package:PiliPlus/pages/whisper/widgets/item.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/three_dot_ext.dart'; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; diff --git a/lib/pages/whisper/widgets/item.dart b/lib/pages/whisper/widgets/item.dart index 8e55fe0f6..29de0ac79 100644 --- a/lib/pages/whisper/widgets/item.dart +++ b/lib/pages/whisper/widgets/item.dart @@ -9,8 +9,9 @@ import 'package:PiliPlus/grpc/bilibili/app/im/v1.pb.dart' import 'package:PiliPlus/models/common/badge_type.dart'; import 'package:PiliPlus/pages/whisper_secondary/view.dart'; import 'package:PiliPlus/utils/date_utils.dart'; -import 'package:PiliPlus/utils/extension.dart'; -import 'package:PiliPlus/utils/utils.dart'; +import 'package:PiliPlus/utils/extension/iterable_ext.dart'; +import 'package:PiliPlus/utils/extension/theme_ext.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:fixnum/fixnum.dart'; import 'package:flutter/material.dart' hide ListTile; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; @@ -101,7 +102,7 @@ class WhisperSessionItem extends StatelessWidget { ) : null, onLongPress: onLongPress, - onSecondaryTap: Utils.isMobile ? null : onLongPress, + onSecondaryTap: PlatformUtils.isMobile ? null : onLongPress, onTap: () { if (item.hasUnread()) { item.clearUnread(); diff --git a/lib/pages/whisper_detail/controller.dart b/lib/pages/whisper_detail/controller.dart index 767dfe542..1a6e843da 100644 --- a/lib/pages/whisper_detail/controller.dart +++ b/lib/pages/whisper_detail/controller.dart @@ -9,7 +9,7 @@ import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/http/msg.dart'; import 'package:PiliPlus/pages/common/common_list_controller.dart'; import 'package:PiliPlus/utils/accounts.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/scroll_controller_ext.dart'; import 'package:PiliPlus/utils/feed_back.dart'; import 'package:fixnum/fixnum.dart'; import 'package:flutter/material.dart'; diff --git a/lib/pages/whisper_detail/view.dart b/lib/pages/whisper_detail/view.dart index f5b5bad80..c6fa670a7 100644 --- a/lib/pages/whisper_detail/view.dart +++ b/lib/pages/whisper_detail/view.dart @@ -14,8 +14,11 @@ import 'package:PiliPlus/pages/emote/view.dart'; import 'package:PiliPlus/pages/whisper_detail/controller.dart'; import 'package:PiliPlus/pages/whisper_detail/widget/chat_item.dart'; import 'package:PiliPlus/pages/whisper_link_setting/view.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/file_ext.dart'; +import 'package:PiliPlus/utils/extension/iterable_ext.dart'; +import 'package:PiliPlus/utils/extension/widget_ext.dart'; import 'package:PiliPlus/utils/feed_back.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:flutter/material.dart' hide TextField; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; @@ -333,7 +336,7 @@ class _WhisperDetailPageState onClearText: editController.clear, ) .whenComplete(() { - if (Utils.isMobile) { + if (PlatformUtils.isMobile) { File(path).tryDel(); } }); diff --git a/lib/pages/whisper_detail/widget/chat_item.dart b/lib/pages/whisper_detail/widget/chat_item.dart index 26e217ba3..62c89214e 100644 --- a/lib/pages/whisper_detail/widget/chat_item.dart +++ b/lib/pages/whisper_detail/widget/chat_item.dart @@ -13,11 +13,11 @@ import 'package:PiliPlus/models/common/image_type.dart'; import 'package:PiliPlus/utils/app_scheme.dart'; import 'package:PiliPlus/utils/date_utils.dart'; import 'package:PiliPlus/utils/duration_utils.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/widget_ext.dart'; import 'package:PiliPlus/utils/id_utils.dart'; import 'package:PiliPlus/utils/image_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; -import 'package:PiliPlus/utils/utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; @@ -89,7 +89,9 @@ class ChatItem extends StatelessWidget { Feedback.forLongPress(context); onLongPress!(); }, - onSecondaryTap: Utils.isMobile ? null : onLongPress, + onSecondaryTap: PlatformUtils.isMobile + ? null + : onLongPress, child: Row( mainAxisAlignment: isOwner ? MainAxisAlignment.end diff --git a/lib/pages/whisper_link_setting/view.dart b/lib/pages/whisper_link_setting/view.dart index efb7e3f8d..081a8a360 100644 --- a/lib/pages/whisper_link_setting/view.dart +++ b/lib/pages/whisper_link_setting/view.dart @@ -4,7 +4,7 @@ import 'package:PiliPlus/models_new/msg/im_user_infos/datum.dart'; import 'package:PiliPlus/models_new/msg/msg_dnd/uid_setting.dart'; import 'package:PiliPlus/models_new/msg/session_ss/data.dart'; import 'package:PiliPlus/pages/whisper_link_setting/controller.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/theme_ext.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; diff --git a/lib/pages/whisper_secondary/view.dart b/lib/pages/whisper_secondary/view.dart index 7c3e11700..2dc5f4b82 100644 --- a/lib/pages/whisper_secondary/view.dart +++ b/lib/pages/whisper_secondary/view.dart @@ -5,7 +5,8 @@ import 'package:PiliPlus/grpc/bilibili/app/im/v1.pb.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/pages/whisper/widgets/item.dart'; import 'package:PiliPlus/pages/whisper_secondary/controller.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/three_dot_ext.dart'; +import 'package:PiliPlus/utils/extension/widget_ext.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; diff --git a/lib/plugin/pl_player/controller.dart b/lib/plugin/pl_player/controller.dart index 251e69d22..ceb021e44 100644 --- a/lib/plugin/pl_player/controller.dart +++ b/lib/plugin/pl_player/controller.dart @@ -32,11 +32,12 @@ import 'package:PiliPlus/plugin/pl_player/models/video_fit_type.dart'; import 'package:PiliPlus/plugin/pl_player/utils/fullscreen.dart'; import 'package:PiliPlus/services/service_locator.dart'; import 'package:PiliPlus/utils/accounts.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/string_ext.dart'; import 'package:PiliPlus/utils/feed_back.dart'; import 'package:PiliPlus/utils/image_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart' show PageUtils; import 'package:PiliPlus/utils/path_utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/storage_key.dart'; import 'package:PiliPlus/utils/storage_pref.dart'; @@ -105,7 +106,7 @@ class PlPlayerController { /// 音量控制条 final RxDouble volume = RxDouble( - Utils.isDesktop ? Pref.desktopVolume : 1.0, + PlatformUtils.isDesktop ? Pref.desktopVolume : 1.0, ); final setSystemBrightness = Pref.setSystemBrightness; @@ -223,7 +224,7 @@ class PlPlayerController { late final bool autoPiP = Pref.autoPiP; bool get isPipMode => (Platform.isAndroid && Floating().isPipMode) || - (Utils.isDesktop && isDesktopPip); + (PlatformUtils.isDesktop && isDesktopPip); late bool isDesktopPip = false; late Rect _lastWindowBounds; @@ -320,7 +321,7 @@ class PlPlayerController { } /// 弹幕权重 - late final enableTapDm = Utils.isMobile && Pref.enableTapDm; + late final enableTapDm = PlatformUtils.isMobile && Pref.enableTapDm; late int danmakuWeight = Pref.danmakuWeight; late RuleFilter filters = Pref.danmakuFilterRule; // 关联弹幕控制器 @@ -402,7 +403,7 @@ class PlPlayerController { late final bool tempPlayerConf = Pref.tempPlayerConf; - late int? cacheVideoQa = Utils.isMobile ? null : Pref.defaultVideoQa; + late int? cacheVideoQa = PlatformUtils.isMobile ? null : Pref.defaultVideoQa; late int cacheAudioQa = Pref.defaultAudioQa; bool enableHeart = true; @@ -797,7 +798,7 @@ class PlPlayerController { ); final pp = player.platform!; if (_videoPlayerController == null) { - if (Utils.isDesktop) { + if (PlatformUtils.isDesktop) { pp.setVolume(this.volume.value * 100); } if (isAnim) { @@ -1339,7 +1340,7 @@ class PlPlayerController { if (this.volume.value != volume) { this.volume.value = volume; try { - if (Utils.isDesktop) { + if (PlatformUtils.isDesktop) { _videoPlayerController!.setVolume(volume * 100); } else { FlutterVolumeController.updateShowSystemUI(false); @@ -1355,7 +1356,7 @@ class PlPlayerController { volumeTimer = Timer(const Duration(milliseconds: 200), () { volumeIndicator.value = false; volumeInterceptEventStream.value = false; - if (Utils.isDesktop) { + if (PlatformUtils.isDesktop) { setting.put(SettingBoxKey.desktopVolume, volume.toPrecision(3)); } }); @@ -1548,7 +1549,7 @@ class PlPlayerController { this.isManualFS = isManualFS; if (status) { - if (Utils.isMobile) { + if (PlatformUtils.isMobile) { hideStatusBar(); if (mode == FullScreenMode.none) { return; @@ -1570,7 +1571,7 @@ class PlPlayerController { await enterDesktopFullscreen(inAppFullScreen: inAppFullScreen); } } else { - if (Utils.isMobile) { + if (PlatformUtils.isMobile) { showStatusBar(); if (mode == FullScreenMode.none) { return; @@ -1737,7 +1738,7 @@ class PlPlayerController { // playerStatus.close(); // dataStatus.status.close(); - if (Utils.isDesktop && isAlwaysOnTop.value) { + if (PlatformUtils.isDesktop && isAlwaysOnTop.value) { windowManager.setAlwaysOnTop(false); } diff --git a/lib/plugin/pl_player/utils/fullscreen.dart b/lib/plugin/pl_player/utils/fullscreen.dart index d1e6b995f..ccaea960f 100644 --- a/lib/plugin/pl_player/utils/fullscreen.dart +++ b/lib/plugin/pl_player/utils/fullscreen.dart @@ -1,6 +1,7 @@ import 'dart:async'; import 'dart:io'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/storage_pref.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:auto_orientation/auto_orientation.dart'; @@ -49,7 +50,7 @@ Future verticalScreenForTwoSeconds() async { //全向 bool allowRotateScreen = Pref.allowRotateScreen; Future autoScreen() async { - if (Utils.isMobile && allowRotateScreen) { + if (PlatformUtils.isMobile && allowRotateScreen) { await SystemChrome.setPreferredOrientations([ DeviceOrientation.portraitUp, // DeviceOrientation.portraitDown, diff --git a/lib/plugin/pl_player/view.dart b/lib/plugin/pl_player/view.dart index 666bc6173..d0968db02 100644 --- a/lib/plugin/pl_player/view.dart +++ b/lib/plugin/pl_player/view.dart @@ -49,10 +49,11 @@ import 'package:PiliPlus/plugin/pl_player/widgets/forward_seek.dart'; import 'package:PiliPlus/plugin/pl_player/widgets/mpv_convert_webp.dart'; import 'package:PiliPlus/plugin/pl_player/widgets/play_pause_btn.dart'; import 'package:PiliPlus/utils/duration_utils.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/theme_ext.dart'; import 'package:PiliPlus/utils/id_utils.dart'; import 'package:PiliPlus/utils/image_utils.dart'; import 'package:PiliPlus/utils/path_utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/storage_key.dart'; import 'package:PiliPlus/utils/utils.dart'; @@ -185,7 +186,7 @@ class _PLVideoPlayerState extends State ); videoController = plPlayerController.videoController!; - if (Utils.isMobile) { + if (PlatformUtils.isMobile) { Future.microtask(() async { try { FlutterVolumeController.updateShowSystemUI(true); @@ -312,7 +313,7 @@ class _PLVideoPlayerState extends State _listener?.cancel(); _controlsListener?.cancel(); animationController.dispose(); - if (Utils.isMobile) { + if (PlatformUtils.isMobile) { FlutterVolumeController.removeListener(); } transformationController.dispose(); @@ -505,7 +506,7 @@ class _PLVideoPlayerState extends State videoDetailController.showVP.value = !videoDetailController.showVP.value; }, - onSecondaryTap: Utils.isMobile + onSecondaryTap: PlatformUtils.isMobile ? null : () => videoDetailController.showVP.value = !videoDetailController.showVP.value, @@ -981,7 +982,7 @@ class _PLVideoPlayerState extends State final double tapPosition = details.localFocalPoint.dx; final double sectionWidth = maxWidth / 3; if (tapPosition < sectionWidth) { - if (Utils.isDesktop || + if (PlatformUtils.isDesktop || !plPlayerController.enableSlideVolumeBrightness) { return; } @@ -1182,7 +1183,7 @@ class _PLVideoPlayerState extends State void _onTapUp(TapUpDetails details) { switch (details.kind) { - case ui.PointerDeviceKind.mouse when Utils.isDesktop: + case ui.PointerDeviceKind.mouse when PlatformUtils.isDesktop: onTapDesktop(); break; default: @@ -1218,7 +1219,7 @@ class _PLVideoPlayerState extends State void _onDoubleTapDown(TapDownDetails details) { switch (details.kind) { - case ui.PointerDeviceKind.mouse when Utils.isDesktop: + case ui.PointerDeviceKind.mouse when PlatformUtils.isDesktop: onDoubleTapDesktop(); break; default: @@ -1244,7 +1245,7 @@ class _PLVideoPlayerState extends State StreamSubscription? _danmakuListener; void _onPointerDown(PointerDownEvent event) { - if (Utils.isDesktop) { + if (PlatformUtils.isDesktop) { final buttons = event.buttons; final isSecondaryBtn = buttons == kSecondaryMouseButton; if (isSecondaryBtn || buttons == kMiddleMouseButton) { @@ -1827,7 +1828,7 @@ class _PLVideoPlayerState extends State ), ), ), - if (Utils.isMobile) + if (PlatformUtils.isMobile) buildViewPointWidget( videoDetailController, plPlayerController, @@ -2049,7 +2050,7 @@ class _PLVideoPlayerState extends State }), ], ); - if (Utils.isDesktop) { + if (PlatformUtils.isDesktop) { return Obx( () => MouseRegion( cursor: !plPlayerController.showControls.value && isFullScreen @@ -2554,7 +2555,7 @@ Widget buildSeekPreviewWidget( final double scale = plPlayerController.isFullScreen.value && - (Utils.isDesktop || !plPlayerController.isVertical) + (PlatformUtils.isDesktop || !plPlayerController.isVertical) ? 4 : 3; double height = 27 * scale; diff --git a/lib/plugin/pl_player/widgets/bottom_control.dart b/lib/plugin/pl_player/widgets/bottom_control.dart index c3b9a15b5..ad88157c4 100644 --- a/lib/plugin/pl_player/widgets/bottom_control.dart +++ b/lib/plugin/pl_player/widgets/bottom_control.dart @@ -3,9 +3,9 @@ import 'package:PiliPlus/common/widgets/progress_bar/segment_progress_bar.dart'; import 'package:PiliPlus/pages/video/controller.dart'; import 'package:PiliPlus/plugin/pl_player/controller.dart'; import 'package:PiliPlus/plugin/pl_player/view.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/theme_ext.dart'; import 'package:PiliPlus/utils/feed_back.dart'; -import 'package:PiliPlus/utils/utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; @@ -79,7 +79,7 @@ class BottomControl extends StatelessWidget { onSeek: (e) => onSeek(e, max), ); }); - if (Utils.isDesktop) { + if (PlatformUtils.isDesktop) { return MouseRegion( cursor: SystemMouseCursors.click, child: child, @@ -140,7 +140,7 @@ class BottomControl extends StatelessWidget { ), ), ), - if (!Utils.isMobile) + if (!PlatformUtils.isMobile) buildViewPointWidget( videoDetailController, controller, diff --git a/lib/services/download/download_manager.dart b/lib/services/download/download_manager.dart index 96f2526d2..3ec8cbc04 100644 --- a/lib/services/download/download_manager.dart +++ b/lib/services/download/download_manager.dart @@ -3,7 +3,8 @@ import 'dart:io'; import 'package:PiliPlus/http/init.dart'; import 'package:PiliPlus/models_new/download/bili_download_entry_info.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/file_ext.dart'; +import 'package:PiliPlus/utils/extension/string_ext.dart'; import 'package:dio/dio.dart'; class DownloadManager { diff --git a/lib/services/download/download_service.dart b/lib/services/download/download_service.dart index 9ffbaa3c4..60a8a5cf4 100644 --- a/lib/services/download/download_service.dart +++ b/lib/services/download/download_service.dart @@ -15,7 +15,8 @@ import 'package:PiliPlus/models_new/video/video_detail/episode.dart' as ugc; import 'package:PiliPlus/models_new/video/video_detail/page.dart'; import 'package:PiliPlus/pages/danmaku/controller.dart'; import 'package:PiliPlus/services/download/download_manager.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/file_ext.dart'; +import 'package:PiliPlus/utils/extension/string_ext.dart'; import 'package:PiliPlus/utils/id_utils.dart'; import 'package:PiliPlus/utils/path_utils.dart'; import 'package:flutter/foundation.dart'; diff --git a/lib/services/logger.dart b/lib/services/logger.dart index 60bcd48ab..e08794864 100644 --- a/lib/services/logger.dart +++ b/lib/services/logger.dart @@ -1,6 +1,6 @@ import 'dart:io'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/file_ext.dart'; import 'package:PiliPlus/utils/json_file_handler.dart'; import 'package:PiliPlus/utils/storage_pref.dart'; import 'package:catcher_2/catcher_2.dart'; diff --git a/lib/utils/accounts/account_manager/account_mgr.dart b/lib/utils/accounts/account_manager/account_mgr.dart index a39751cf6..aac2bf39d 100644 --- a/lib/utils/accounts/account_manager/account_mgr.dart +++ b/lib/utils/accounts/account_manager/account_mgr.dart @@ -8,9 +8,9 @@ import 'package:PiliPlus/models/common/account_type.dart'; import 'package:PiliPlus/utils/accounts.dart'; import 'package:PiliPlus/utils/accounts/account.dart'; import 'package:PiliPlus/utils/app_sign.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/string_ext.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/storage_pref.dart'; -import 'package:PiliPlus/utils/utils.dart'; import 'package:connectivity_plus/connectivity_plus.dart'; import 'package:dio/dio.dart'; import 'package:flutter/foundation.dart' show kDebugMode; @@ -363,7 +363,7 @@ class AccountManager extends Interceptor { case DioExceptionType.unknown: String desc; try { - desc = Utils.isMobile + desc = PlatformUtils.isMobile ? (await Connectivity().checkConnectivity()).first.desc : ''; } catch (_) { diff --git a/lib/utils/accounts/account_type_adapter.dart b/lib/utils/accounts/account_type_adapter.dart index cb6de1a96..328af3479 100644 --- a/lib/utils/accounts/account_type_adapter.dart +++ b/lib/utils/accounts/account_type_adapter.dart @@ -1,5 +1,5 @@ import 'package:PiliPlus/models/common/account_type.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/iterable_ext.dart'; import 'package:hive/hive.dart'; class AccountTypeAdapter extends TypeAdapter { diff --git a/lib/utils/app_scheme.dart b/lib/utils/app_scheme.dart index 9ed4800e0..39a16af40 100644 --- a/lib/utils/app_scheme.dart +++ b/lib/utils/app_scheme.dart @@ -14,7 +14,7 @@ import 'package:PiliPlus/pages/live/view.dart'; import 'package:PiliPlus/pages/rank/view.dart'; import 'package:PiliPlus/pages/subscription_detail/view.dart'; import 'package:PiliPlus/pages/video/reply_reply/view.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/iterable_ext.dart'; import 'package:PiliPlus/utils/id_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/request_utils.dart'; diff --git a/lib/utils/cache_manager.dart b/lib/utils/cache_manager.dart index ab0a2d137..d4555eaf1 100644 --- a/lib/utils/cache_manager.dart +++ b/lib/utils/cache_manager.dart @@ -1,9 +1,9 @@ import 'dart:async'; import 'dart:io'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/iterable_ext.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/storage_pref.dart'; -import 'package:PiliPlus/utils/utils.dart'; import 'package:path_provider/path_provider.dart'; abstract class CacheManager { @@ -14,7 +14,7 @@ abstract class CacheManager { ]) async { try { final Directory tempDirectory = await getTemporaryDirectory(); - if (Utils.isDesktop) { + if (PlatformUtils.isDesktop) { final dir = Directory('${tempDirectory.path}/libCachedImageData'); if (dir.existsSync()) { return await getTotalSizeOfFilesInDir(dir, maxSize); @@ -62,7 +62,7 @@ abstract class CacheManager { static Future clearLibraryCache() async { try { final Directory tempDirectory = await getTemporaryDirectory(); - if (Utils.isDesktop) { + if (PlatformUtils.isDesktop) { final dir = Directory('${tempDirectory.path}/libCachedImageData'); if (dir.existsSync()) { await dir.delete(recursive: true); diff --git a/lib/utils/extension.dart b/lib/utils/extension.dart deleted file mode 100644 index 2dbe88ffd..000000000 --- a/lib/utils/extension.dart +++ /dev/null @@ -1,291 +0,0 @@ -import 'dart:io'; - -import 'package:PiliPlus/common/widgets/dialog/dialog.dart'; -import 'package:PiliPlus/grpc/bilibili/app/im/v1.pb.dart' show ThreeDotItem; -import 'package:PiliPlus/grpc/bilibili/app/im/v1.pbenum.dart' - show IMSettingType, ThreeDotItemType; -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:floating/floating.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; -import 'package:get/get.dart' hide ContextExtensionss; -import 'package:material_design_icons_flutter/material_design_icons_flutter.dart'; - -extension ImageExtension on num { - int? cacheSize(BuildContext context) { - if (this == 0) { - return null; - } - return (this * MediaQuery.devicePixelRatioOf(context)).round(); - } -} - -extension IntExt on int? { - int? operator +(int other) => this == null ? null : this! + other; - int? operator -(int other) => this == null ? null : this! - other; -} - -extension ScrollControllerExt on ScrollController { - void animToTop() => animTo(0); - - void animTo( - double offset, { - Duration duration = const Duration(milliseconds: 500), - }) { - if (!hasClients) return; - if ((offset - this.offset).abs() >= position.viewportDimension * 7) { - jumpTo(offset); - } else { - animateTo( - offset, - duration: duration, - curve: Curves.easeInOut, - ); - } - } - - void jumpToTop() { - if (!hasClients) return; - jumpTo(0); - } -} - -extension IterableExt on Iterable? { - bool get isNullOrEmpty => this == null || this!.isEmpty; -} - -extension NonNullIterableExt on Iterable { - T? reduceOrNull(T Function(T value, T element) combine) { - Iterator iterator = this.iterator; - if (!iterator.moveNext()) { - return null; - } - T value = iterator.current; - while (iterator.moveNext()) { - value = combine(value, iterator.current); - } - return value; - } -} - -extension MapExt on Map { - Map fromCast() { - return Map.from(this); - } -} - -extension ListExt on List { - T? getOrNull(int index) { - if (index < 0 || index >= length) { - return null; - } - return this[index]; - } - - bool removeFirstWhere(bool Function(T) test) { - final index = indexWhere(test); - if (index != -1) { - removeAt(index); - return true; - } - return false; - } - - List fromCast() { - return List.from(this); - } - - T findClosestTarget( - bool Function(T) test, - T Function(T, T) combine, - ) { - return where(test).reduceOrNull(combine) ?? reduce(combine); - } -} - -final _regExp = RegExp("^(http:)?//", caseSensitive: false); - -extension StringExt on String? { - String get http2https => this?.replaceFirst(_regExp, "https://") ?? ''; - - bool get isNullOrEmpty => this == null || this!.isEmpty; -} - -extension ColorSchemeExt on ColorScheme { - Color get vipColor => - brightness.isLight ? const Color(0xFFFF6699) : const Color(0xFFD44E7D); - - Color get freeColor => - brightness.isLight ? const Color(0xFFFF7F24) : const Color(0xFFD66011); - - bool get isLight => brightness.isLight; - - bool get isDark => brightness.isDark; -} - -extension Unique on List { - List unique([Id Function(E element)? id, bool inplace = true]) { - final ids = {}; - return (inplace ? this : List.from(this)) - ..retainWhere((x) => ids.add(id != null ? id(x) : x as Id)); - } -} - -extension ColorExtension on Color { - Color darken([double amount = .5]) { - assert(amount >= 0 && amount <= 1, 'Amount must be between 0 and 1'); - return Color.lerp(this, Colors.black, amount)!; - } -} - -extension BrightnessExt on Brightness { - Brightness get reverse => isLight ? Brightness.dark : Brightness.light; - - bool get isLight => this == Brightness.light; - - bool get isDark => this == Brightness.dark; -} - -extension RationalExt on Rational { - /// Checks whether given [Rational] instance fits into Android requirements - /// or not. - /// - /// Android docs specified boundaries as inclusive. - bool get fitsInAndroidRequirements { - final aspectRatio = numerator / denominator; - const min = 1 / 2.39; - const max = 2.39; - return (min <= aspectRatio) && (aspectRatio <= max); - } -} - -extension ThreeDotItemTypeExt on ThreeDotItemType { - Icon get icon => switch (this) { - ThreeDotItemType.THREE_DOT_ITEM_TYPE_MSG_SETTING => const Icon( - Icons.settings, - size: 20, - ), - ThreeDotItemType.THREE_DOT_ITEM_TYPE_READ_ALL => const Icon( - Icons.cleaning_services, - size: 20, - ), - ThreeDotItemType.THREE_DOT_ITEM_TYPE_CLEAR_LIST => const Icon( - Icons.delete_forever_outlined, - size: 20, - ), - ThreeDotItemType.THREE_DOT_ITEM_TYPE_UP_HELPER => const Icon( - Icons.live_tv, - size: 20, - ), - ThreeDotItemType.THREE_DOT_ITEM_TYPE_CONTACTS => const Icon( - Icons.account_box_outlined, - size: 20, - ), - ThreeDotItemType.THREE_DOT_ITEM_TYPE_FANS_GROUP_HELPER => const Icon( - Icons.notifications_none, - size: 20, - ), - _ => const Icon(MdiIcons.circleMedium, size: 20), - }; - - void action({ - required BuildContext context, - required CommonWhisperController controller, - required ThreeDotItem item, - }) { - switch (this) { - case ThreeDotItemType.THREE_DOT_ITEM_TYPE_READ_ALL: - showConfirmDialog( - context: context, - title: '一键已读', - content: '是否清除全部新消息提醒?', - onConfirm: controller.onClearUnread, - ); - case ThreeDotItemType.THREE_DOT_ITEM_TYPE_CLEAR_LIST: - showConfirmDialog( - context: context, - title: '清空列表', - content: '清空后所有消息将被删除,无法恢复', - onConfirm: controller.onDeleteList, - ); - case ThreeDotItemType.THREE_DOT_ITEM_TYPE_MSG_SETTING: - Get.to( - const WhisperSettingsPage( - imSettingType: IMSettingType.SETTING_TYPE_NEED_ALL, - ), - ); - case ThreeDotItemType.THREE_DOT_ITEM_TYPE_UP_HELPER: - dynamic talkerId = RegExp(r'/(\d{3,})').firstMatch(item.url)?.group(1); - if (talkerId != null) { - talkerId = int.parse(talkerId); - Get.toNamed( - '/whisperDetail', - arguments: { - 'talkerId': talkerId, - 'name': item.title, - 'face': switch (talkerId) { - 844424930131966 => - 'https://message.biliimg.com/bfs/im/489a63efadfb202366c2f88853d2217b5ddc7a13.png', - 844424930131964 => - 'https://i0.hdslb.com/bfs/im_new/58eda511672db078466e7ab8db22a95c1503684976.png', - _ => item.icon, - }, - }, - ); - } - case ThreeDotItemType.THREE_DOT_ITEM_TYPE_CONTACTS: - Get.to(const ContactPage(isFromSelect: false)); - default: - SmartDialog.showToast('TODO: $name'); - } - } -} - -extension FileExt on File { - Future tryDel({bool recursive = false}) async { - try { - await delete(recursive: recursive); - } catch (_) {} - } -} - -extension DirectoryExt on Directory { - Future tryDel({bool recursive = false}) async { - try { - await delete(recursive: recursive); - } catch (_) {} - } - - Future lengthGte(int length) async { - int count = 0; - await for (var _ in list()) { - if (++count == length) return true; - } - return false; - } -} - -extension SizeExt on Size { - bool get isPortrait => width < 600 || height >= width; -} - -extension GetExt on GetInterface { - S putOrFind(InstanceBuilderCallback dep, {String? tag}) => - GetInstance().putOrFind(dep, tag: tag); -} - -extension WidgetExt on Widget { - Widget constraintWidth({ - BoxConstraints constraints = const BoxConstraints(maxWidth: 625), - }) { - return Align( - alignment: Alignment.topCenter, - child: ConstrainedBox( - constraints: constraints, - child: this, - ), - ); - } -} diff --git a/lib/utils/context_ext.dart b/lib/utils/extension/context_ext.dart similarity index 100% rename from lib/utils/context_ext.dart rename to lib/utils/extension/context_ext.dart diff --git a/lib/utils/extension/extension.dart b/lib/utils/extension/extension.dart new file mode 100644 index 000000000..086c4d898 --- /dev/null +++ b/lib/utils/extension/extension.dart @@ -0,0 +1,14 @@ +import 'package:floating/floating.dart'; + +extension RationalExt on Rational { + /// Checks whether given [Rational] instance fits into Android requirements + /// or not. + /// + /// Android docs specified boundaries as inclusive. + bool get fitsInAndroidRequirements { + final aspectRatio = numerator / denominator; + const min = 1 / 2.39; + const max = 2.39; + return (min <= aspectRatio) && (aspectRatio <= max); + } +} diff --git a/lib/utils/extension/file_ext.dart b/lib/utils/extension/file_ext.dart new file mode 100644 index 000000000..fdae77b8c --- /dev/null +++ b/lib/utils/extension/file_ext.dart @@ -0,0 +1,25 @@ +import 'dart:io'; + +extension FileExt on File { + Future tryDel({bool recursive = false}) async { + try { + await delete(recursive: recursive); + } catch (_) {} + } +} + +extension DirectoryExt on Directory { + Future tryDel({bool recursive = false}) async { + try { + await delete(recursive: recursive); + } catch (_) {} + } + + Future lengthGte(int length) async { + int count = 0; + await for (var _ in list()) { + if (++count == length) return true; + } + return false; + } +} diff --git a/lib/utils/extension/get_ext.dart b/lib/utils/extension/get_ext.dart new file mode 100644 index 000000000..b2a94aeb6 --- /dev/null +++ b/lib/utils/extension/get_ext.dart @@ -0,0 +1,6 @@ +import 'package:get/get.dart'; + +extension GetExt on GetInterface { + S putOrFind(InstanceBuilderCallback dep, {String? tag}) => + GetInstance().putOrFind(dep, tag: tag); +} diff --git a/lib/utils/extension/iterable_ext.dart b/lib/utils/extension/iterable_ext.dart new file mode 100644 index 000000000..a4d6bc3c9 --- /dev/null +++ b/lib/utils/extension/iterable_ext.dart @@ -0,0 +1,46 @@ +extension NullableIterableExt on Iterable? { + bool get isNullOrEmpty => this == null || this!.isEmpty; +} + +extension IterableExt on Iterable { + T? reduceOrNull(T Function(T value, T element) combine) { + Iterator iterator = this.iterator; + if (!iterator.moveNext()) { + return null; + } + T value = iterator.current; + while (iterator.moveNext()) { + value = combine(value, iterator.current); + } + return value; + } +} + +extension ListExt on List { + T? getOrNull(int index) { + if (index < 0 || index >= length) { + return null; + } + return this[index]; + } + + bool removeFirstWhere(bool Function(T) test) { + final index = indexWhere(test); + if (index != -1) { + removeAt(index); + return true; + } + return false; + } + + List fromCast() { + return List.from(this); + } + + T findClosestTarget( + bool Function(T) test, + T Function(T, T) combine, + ) { + return where(test).reduceOrNull(combine) ?? reduce(combine); + } +} diff --git a/lib/utils/extension/map_ext.dart b/lib/utils/extension/map_ext.dart new file mode 100644 index 000000000..cbd8f05ad --- /dev/null +++ b/lib/utils/extension/map_ext.dart @@ -0,0 +1,5 @@ +extension MapExt on Map { + Map fromCast() { + return Map.from(this); + } +} diff --git a/lib/utils/extension/num_ext.dart b/lib/utils/extension/num_ext.dart new file mode 100644 index 000000000..c2a9961fb --- /dev/null +++ b/lib/utils/extension/num_ext.dart @@ -0,0 +1,15 @@ +import 'package:flutter/widgets.dart'; + +extension ImageExtension on num { + int? cacheSize(BuildContext context) { + if (this == 0) { + return null; + } + return (this * MediaQuery.devicePixelRatioOf(context)).round(); + } +} + +extension IntExt on int? { + int? operator +(int other) => this == null ? null : this! + other; + int? operator -(int other) => this == null ? null : this! - other; +} diff --git a/lib/utils/extension/scroll_controller_ext.dart b/lib/utils/extension/scroll_controller_ext.dart new file mode 100644 index 000000000..5e2a7d2ac --- /dev/null +++ b/lib/utils/extension/scroll_controller_ext.dart @@ -0,0 +1,26 @@ +import 'package:flutter/widgets.dart'; + +extension ScrollControllerExt on ScrollController { + void animToTop() => animTo(0); + + void animTo( + double offset, { + Duration duration = const Duration(milliseconds: 500), + }) { + if (!hasClients) return; + if ((offset - this.offset).abs() >= position.viewportDimension * 7) { + jumpTo(offset); + } else { + animateTo( + offset, + duration: duration, + curve: Curves.easeInOut, + ); + } + } + + void jumpToTop() { + if (!hasClients) return; + jumpTo(0); + } +} diff --git a/lib/utils/extension/size_ext.dart b/lib/utils/extension/size_ext.dart new file mode 100644 index 000000000..31ac92f6a --- /dev/null +++ b/lib/utils/extension/size_ext.dart @@ -0,0 +1,5 @@ +import 'dart:ui' show Size; + +extension SizeExt on Size { + bool get isPortrait => width < 600 || height >= width; +} diff --git a/lib/utils/extension/string_ext.dart b/lib/utils/extension/string_ext.dart new file mode 100644 index 000000000..dc039ffd8 --- /dev/null +++ b/lib/utils/extension/string_ext.dart @@ -0,0 +1,7 @@ +final _regExp = RegExp("^(http:)?//", caseSensitive: false); + +extension StringExt on String? { + String get http2https => this?.replaceFirst(_regExp, "https://") ?? ''; + + bool get isNullOrEmpty => this == null || this!.isEmpty; +} diff --git a/lib/utils/extension/theme_ext.dart b/lib/utils/extension/theme_ext.dart new file mode 100644 index 000000000..28acde4ae --- /dev/null +++ b/lib/utils/extension/theme_ext.dart @@ -0,0 +1,28 @@ +import 'package:flutter/material.dart'; + +extension ColorSchemeExt on ColorScheme { + Color get vipColor => + brightness.isLight ? const Color(0xFFFF6699) : const Color(0xFFD44E7D); + + Color get freeColor => + brightness.isLight ? const Color(0xFFFF7F24) : const Color(0xFFD66011); + + bool get isLight => brightness.isLight; + + bool get isDark => brightness.isDark; +} + +extension ColorExtension on Color { + Color darken([double amount = .5]) { + assert(amount >= 0 && amount <= 1, 'Amount must be between 0 and 1'); + return Color.lerp(this, Colors.black, amount)!; + } +} + +extension BrightnessExt on Brightness { + Brightness get reverse => isLight ? Brightness.dark : Brightness.light; + + bool get isLight => this == Brightness.light; + + bool get isDark => this == Brightness.dark; +} diff --git a/lib/utils/extension/three_dot_ext.dart b/lib/utils/extension/three_dot_ext.dart new file mode 100644 index 000000000..6affdec98 --- /dev/null +++ b/lib/utils/extension/three_dot_ext.dart @@ -0,0 +1,92 @@ +import 'package:PiliPlus/common/widgets/dialog/dialog.dart'; +import 'package:PiliPlus/grpc/bilibili/app/im/v1.pb.dart' + show ThreeDotItem, ThreeDotItemType, IMSettingType; +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:flutter/material.dart'; +import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; +import 'package:get/get.dart'; +import 'package:material_design_icons_flutter/material_design_icons_flutter.dart'; + +extension ThreeDotItemTypeExt on ThreeDotItemType { + Icon get icon => switch (this) { + ThreeDotItemType.THREE_DOT_ITEM_TYPE_MSG_SETTING => const Icon( + Icons.settings, + size: 20, + ), + ThreeDotItemType.THREE_DOT_ITEM_TYPE_READ_ALL => const Icon( + Icons.cleaning_services, + size: 20, + ), + ThreeDotItemType.THREE_DOT_ITEM_TYPE_CLEAR_LIST => const Icon( + Icons.delete_forever_outlined, + size: 20, + ), + ThreeDotItemType.THREE_DOT_ITEM_TYPE_UP_HELPER => const Icon( + Icons.live_tv, + size: 20, + ), + ThreeDotItemType.THREE_DOT_ITEM_TYPE_CONTACTS => const Icon( + Icons.account_box_outlined, + size: 20, + ), + ThreeDotItemType.THREE_DOT_ITEM_TYPE_FANS_GROUP_HELPER => const Icon( + Icons.notifications_none, + size: 20, + ), + _ => const Icon(MdiIcons.circleMedium, size: 20), + }; + + void action({ + required BuildContext context, + required CommonWhisperController controller, + required ThreeDotItem item, + }) { + switch (this) { + case ThreeDotItemType.THREE_DOT_ITEM_TYPE_READ_ALL: + showConfirmDialog( + context: context, + title: '一键已读', + content: '是否清除全部新消息提醒?', + onConfirm: controller.onClearUnread, + ); + case ThreeDotItemType.THREE_DOT_ITEM_TYPE_CLEAR_LIST: + showConfirmDialog( + context: context, + title: '清空列表', + content: '清空后所有消息将被删除,无法恢复', + onConfirm: controller.onDeleteList, + ); + case ThreeDotItemType.THREE_DOT_ITEM_TYPE_MSG_SETTING: + Get.to( + const WhisperSettingsPage( + imSettingType: IMSettingType.SETTING_TYPE_NEED_ALL, + ), + ); + case ThreeDotItemType.THREE_DOT_ITEM_TYPE_UP_HELPER: + dynamic talkerId = RegExp(r'/(\d{3,})').firstMatch(item.url)?.group(1); + if (talkerId != null) { + talkerId = int.parse(talkerId); + Get.toNamed( + '/whisperDetail', + arguments: { + 'talkerId': talkerId, + 'name': item.title, + 'face': switch (talkerId) { + 844424930131966 => + 'https://message.biliimg.com/bfs/im/489a63efadfb202366c2f88853d2217b5ddc7a13.png', + 844424930131964 => + 'https://i0.hdslb.com/bfs/im_new/58eda511672db078466e7ab8db22a95c1503684976.png', + _ => item.icon, + }, + }, + ); + } + case ThreeDotItemType.THREE_DOT_ITEM_TYPE_CONTACTS: + Get.to(const ContactPage(isFromSelect: false)); + default: + SmartDialog.showToast('TODO: $name'); + } + } +} diff --git a/lib/utils/extension/widget_ext.dart b/lib/utils/extension/widget_ext.dart new file mode 100644 index 000000000..c42712adf --- /dev/null +++ b/lib/utils/extension/widget_ext.dart @@ -0,0 +1,15 @@ +import 'package:flutter/widgets.dart'; + +extension WidgetExt on Widget { + Widget constraintWidth({ + BoxConstraints constraints = const BoxConstraints(maxWidth: 625), + }) { + return Align( + alignment: Alignment.topCenter, + child: ConstrainedBox( + constraints: constraints, + child: this, + ), + ); + } +} diff --git a/lib/utils/image_utils.dart b/lib/utils/image_utils.dart index 733e0e0a5..05ffff1ad 100644 --- a/lib/utils/image_utils.dart +++ b/lib/utils/image_utils.dart @@ -3,10 +3,12 @@ import 'dart:typed_data'; import 'package:PiliPlus/common/constants.dart'; import 'package:PiliPlus/http/init.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/file_ext.dart'; +import 'package:PiliPlus/utils/extension/string_ext.dart'; import 'package:PiliPlus/utils/global_data.dart'; import 'package:PiliPlus/utils/path_utils.dart'; import 'package:PiliPlus/utils/permission_handler.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/storage_pref.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:dio/dio.dart'; @@ -109,7 +111,8 @@ abstract class ImageUtils { required int height, }) async { try { - if (Utils.isMobile && !await checkPermissionDependOnSdkInt(context)) { + if (PlatformUtils.isMobile && + !await checkPermissionDependOnSdkInt(context)) { return false; } if (!silentDownImg) SmartDialog.showLoading(msg: '正在下载'); @@ -168,7 +171,8 @@ abstract class ImageUtils { List imgList, [ CacheManager? manager, ]) async { - if (Utils.isMobile && !await checkPermissionDependOnSdkInt(context)) { + if (PlatformUtils.isMobile && + !await checkPermissionDependOnSdkInt(context)) { return false; } CancelToken? cancelToken; @@ -211,7 +215,7 @@ abstract class ImageUtils { } }); final result = await Future.wait(futures, eagerError: true); - if (Utils.isMobile) { + if (PlatformUtils.isMobile) { final delList = []; final saveList = []; for (var i in result) { @@ -292,7 +296,7 @@ abstract class ImageUtils { }) async { SaveResult? result; fileName += '.$ext'; - if (Utils.isMobile) { + if (PlatformUtils.isMobile) { SmartDialog.showLoading(msg: '正在保存'); result = await SaverGallery.saveImage( bytes, @@ -336,7 +340,7 @@ abstract class ImageUtils { return; } SaveResult? result; - if (Utils.isMobile) { + if (PlatformUtils.isMobile) { result = await SaverGallery.saveFile( filePath: filePath, fileName: fileName, diff --git a/lib/utils/page_utils.dart b/lib/utils/page_utils.dart index a45ce5c89..eb3e38b54 100644 --- a/lib/utils/page_utils.dart +++ b/lib/utils/page_utils.dart @@ -18,8 +18,9 @@ import 'package:PiliPlus/pages/share/view.dart'; import 'package:PiliPlus/pages/video/introduction/ugc/widgets/menu_row.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/extension/context_ext.dart'; +import 'package:PiliPlus/utils/extension/extension.dart'; +import 'package:PiliPlus/utils/extension/string_ext.dart'; import 'package:PiliPlus/utils/feed_back.dart'; import 'package:PiliPlus/utils/global_data.dart'; import 'package:PiliPlus/utils/id_utils.dart'; @@ -423,10 +424,7 @@ abstract class PageUtils { } } // redirectUrl from jumpUrl - if (await UrlUtils.parseRedirectUrl( - archive.jumpUrl.http2https, - false, - ) + if (await UrlUtils.parseRedirectUrl(archive.jumpUrl.http2https, false) case final redirectUrl?) { if (viewPgcFromUri(redirectUrl)) { return; diff --git a/lib/utils/platform_utils.dart b/lib/utils/platform_utils.dart new file mode 100644 index 000000000..0ffa1a215 --- /dev/null +++ b/lib/utils/platform_utils.dart @@ -0,0 +1,10 @@ +import 'dart:io' show Platform; + +abstract final class PlatformUtils { + @pragma("vm:platform-const") + static final bool isMobile = Platform.isAndroid || Platform.isIOS; + + @pragma("vm:platform-const") + static final bool isDesktop = + Platform.isWindows || Platform.isMacOS || Platform.isLinux; +} diff --git a/lib/utils/reply_utils.dart b/lib/utils/reply_utils.dart index 61fe64306..6f85a90e5 100644 --- a/lib/utils/reply_utils.dart +++ b/lib/utils/reply_utils.dart @@ -9,7 +9,7 @@ import 'package:PiliPlus/models/common/reply/reply_sort_type.dart'; import 'package:PiliPlus/models_new/reply/data.dart'; import 'package:PiliPlus/utils/accounts.dart'; import 'package:PiliPlus/utils/accounts/account.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/iterable_ext.dart'; import 'package:PiliPlus/utils/id_utils.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:flutter/foundation.dart' show kDebugMode; diff --git a/lib/utils/request_utils.dart b/lib/utils/request_utils.dart index 05885f12a..b85d67a2a 100644 --- a/lib/utils/request_utils.dart +++ b/lib/utils/request_utils.dart @@ -24,9 +24,10 @@ import 'package:PiliPlus/pages/group_panel/view.dart'; import 'package:PiliPlus/pages/later/controller.dart'; import 'package:PiliPlus/pages/login/geetest/geetest_webview_dialog.dart'; import 'package:PiliPlus/utils/accounts.dart'; -import 'package:PiliPlus/utils/context_ext.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/context_ext.dart'; +import 'package:PiliPlus/utils/extension/string_ext.dart'; import 'package:PiliPlus/utils/feed_back.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/storage_key.dart'; import 'package:PiliPlus/utils/storage_pref.dart'; @@ -542,7 +543,7 @@ abstract final class RequestUtils { } } - if (Utils.isDesktop) { + if (PlatformUtils.isDesktop) { final json = await Get.dialog>( GeetestWebviewDialog(gt!, challenge!), ); diff --git a/lib/utils/storage_pref.dart b/lib/utils/storage_pref.dart index 9a066cbad..771bc03b0 100644 --- a/lib/utils/storage_pref.dart +++ b/lib/utils/storage_pref.dart @@ -24,13 +24,13 @@ 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/hwdec_type.dart'; import 'package:PiliPlus/plugin/pl_player/models/play_repeat.dart'; -import 'package:PiliPlus/utils/context_ext.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/context_ext.dart'; +import 'package:PiliPlus/utils/extension/iterable_ext.dart'; import 'package:PiliPlus/utils/global_data.dart'; import 'package:PiliPlus/utils/login_utils.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; 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' hide ContextExtensionss; import 'package:hive/hive.dart'; @@ -277,7 +277,7 @@ abstract class Pref { static double get refreshDisplacement => _setting.get( SettingBoxKey.refreshDisplacement, - defaultValue: Utils.isMobile ? 20.0 : 40.0, + defaultValue: PlatformUtils.isMobile ? 20.0 : 40.0, ); static String get blockUserID { @@ -878,7 +878,7 @@ abstract class Pref { static bool get showBatteryLevel => _setting.get( SettingBoxKey.showBatteryLevel, - defaultValue: Utils.isMobile, + defaultValue: PlatformUtils.isMobile, ); static FollowOrderType get followOrderType => diff --git a/lib/utils/theme_utils.dart b/lib/utils/theme_utils.dart index fc52b118b..2614611a7 100644 --- a/lib/utils/theme_utils.dart +++ b/lib/utils/theme_utils.dart @@ -1,6 +1,6 @@ import 'package:PiliPlus/common/constants.dart'; import 'package:PiliPlus/main.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/theme_ext.dart'; import 'package:PiliPlus/utils/storage_pref.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; diff --git a/lib/utils/update.dart b/lib/utils/update.dart index 8858593e4..257e8ef51 100644 --- a/lib/utils/update.dart +++ b/lib/utils/update.dart @@ -6,7 +6,7 @@ import 'package:PiliPlus/http/api.dart'; import 'package:PiliPlus/http/init.dart'; import 'package:PiliPlus/http/ua_type.dart'; import 'package:PiliPlus/utils/accounts/account.dart'; -import 'package:PiliPlus/utils/extension.dart'; +import 'package:PiliPlus/utils/extension/string_ext.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/storage_key.dart'; diff --git a/lib/utils/utils.dart b/lib/utils/utils.dart index 3a841d5ad..e0dd5f467 100644 --- a/lib/utils/utils.dart +++ b/lib/utils/utils.dart @@ -4,6 +4,7 @@ import 'dart:io'; import 'dart:math' show Random; import 'package:PiliPlus/common/constants.dart'; +import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:catcher_2/catcher_2.dart'; import 'package:connectivity_plus/connectivity_plus.dart'; import 'package:device_info_plus/device_info_plus.dart'; @@ -18,13 +19,6 @@ abstract class Utils { static const channel = MethodChannel(Constants.appName); - @pragma("vm:platform-const") - static final bool isMobile = Platform.isAndroid || Platform.isIOS; - - @pragma("vm:platform-const") - static final bool isDesktop = - Platform.isWindows || Platform.isMacOS || Platform.isLinux; - static const jsonEncoder = JsonEncoder.withIndent(' '); static Future saveBytes2File({ @@ -38,13 +32,13 @@ abstract class Utils { allowedExtensions: allowedExtensions, type: type, fileName: name, - bytes: Utils.isDesktop ? null : bytes, + bytes: PlatformUtils.isDesktop ? null : bytes, ); if (path == null) { SmartDialog.showToast("取消保存"); return; } - if (Utils.isDesktop) { + if (PlatformUtils.isDesktop) { await File(path).writeAsBytes(bytes); } SmartDialog.showToast("已保存"); @@ -62,7 +56,7 @@ abstract class Utils { static Future get isWiFi async { try { - return Utils.isMobile && + return PlatformUtils.isMobile && (await Connectivity().checkConnectivity()).contains( ConnectivityResult.wifi, ); @@ -96,7 +90,7 @@ abstract class Utils { } static Future shareText(String text) async { - if (Utils.isDesktop) { + if (PlatformUtils.isDesktop) { copyText(text); return; }