diff --git a/lib/common/widgets/flutter/text_field/controller.dart b/lib/common/widgets/flutter/text_field/controller.dart index 6e72d3952..49cec8776 100644 --- a/lib/common/widgets/flutter/text_field/controller.dart +++ b/lib/common/widgets/flutter/text_field/controller.dart @@ -85,11 +85,9 @@ class RichTextEditingDeltaInsertion extends TextEditingDeltaInsertion this.emote, this.id, this.rawText, - }) { - this.type = - type ?? - (composing.isValid ? RichTextType.composing : RichTextType.text); - } + }) : type = + type ?? + (composing.isValid ? RichTextType.composing : RichTextType.text); @override late final RichTextType type; @@ -116,11 +114,9 @@ class RichTextEditingDeltaReplacement extends TextEditingDeltaReplacement this.emote, this.id, this.rawText, - }) { - this.type = - type ?? - (composing.isValid ? RichTextType.composing : RichTextType.text); - } + }) : type = + type ?? + (composing.isValid ? RichTextType.composing : RichTextType.text); @override late final RichTextType type; @@ -158,9 +154,7 @@ class RichTextItem { required this.range, this.emote, this.id, - }) { - _rawText = rawText; - } + }) : _rawText = rawText; RichTextItem.fromStart( this.text, { @@ -168,10 +162,8 @@ class RichTextItem { this.type = RichTextType.text, this.emote, this.id, - }) { - range = TextRange(start: 0, end: text.length); - _rawText = rawText; - } + }) : range = TextRange(start: 0, end: text.length), + _rawText = rawText; List? onInsert( TextEditingDeltaInsertion delta, diff --git a/lib/common/widgets/progress_bar/segment_progress_bar.dart b/lib/common/widgets/progress_bar/segment_progress_bar.dart index cac3bfe76..76ffa0bb8 100644 --- a/lib/common/widgets/progress_bar/segment_progress_bar.dart +++ b/lib/common/widgets/progress_bar/segment_progress_bar.dart @@ -20,20 +20,22 @@ import 'package:flutter/gestures.dart' show TapGestureRecognizer; import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart' show BoxHitTestEntry; +@immutable sealed class BaseSegment { final double start; final double end; - BaseSegment({ + const BaseSegment({ required this.start, required this.end, }); } +@immutable class Segment extends BaseSegment { final Color color; - Segment({ + const Segment({ required super.start, required super.end, required this.color, @@ -54,13 +56,14 @@ class Segment extends BaseSegment { int get hashCode => Object.hash(start, end, color); } +@immutable class ViewPointSegment extends BaseSegment { final String? title; final String? url; final int? from; final int? to; - ViewPointSegment({ + const ViewPointSegment({ required super.start, required super.end, this.title, diff --git a/lib/common/widgets/scale_app.dart b/lib/common/widgets/scale_app.dart index 308567ffb..57f7db0f1 100644 --- a/lib/common/widgets/scale_app.dart +++ b/lib/common/widgets/scale_app.dart @@ -18,7 +18,7 @@ class ScaledWidgetsFlutterBinding extends WidgetsFlutterBinding { double _scaleFactor; /// Update scaleFactor callback, then rebuild layout - void setScaleFactor(double scaleFactor) { + set scaleFactor(double scaleFactor) { if (_scaleFactor == scaleFactor) return; _scaleFactor = scaleFactor; handleMetricsChanged(); diff --git a/lib/http/loading_state.dart b/lib/http/loading_state.dart index 0719448b5..1876e69e2 100644 --- a/lib/http/loading_state.dart +++ b/lib/http/loading_state.dart @@ -1,3 +1,4 @@ +import 'package:flutter/foundation.dart' show immutable; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; sealed class LoadingState { @@ -29,6 +30,7 @@ class Loading extends LoadingState { } } +@immutable class Success extends LoadingState { final T response; const Success(this.response); @@ -48,6 +50,7 @@ class Success extends LoadingState { int get hashCode => response.hashCode; } +@immutable class Error extends LoadingState { final int? code; final String? errMsg; diff --git a/lib/main.dart b/lib/main.dart index 87d385e53..c4cd456a0 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -94,7 +94,7 @@ void main() async { if (kDebugMode) debugPrint('GStorage init error: $e'); exit(0); } - ScaledWidgetsFlutterBinding.instance.setScaleFactor(Pref.uiScale); + ScaledWidgetsFlutterBinding.instance.scaleFactor = Pref.uiScale; await Future.wait([_initDownPath(), _initTmpPath()]); Get ..lazyPut(AccountService.new) diff --git a/lib/models_new/dynamic/dyn_mention/item.dart b/lib/models_new/dynamic/dyn_mention/item.dart index 022a629a2..7d3572f4e 100644 --- a/lib/models_new/dynamic/dyn_mention/item.dart +++ b/lib/models_new/dynamic/dyn_mention/item.dart @@ -1,11 +1,11 @@ import 'package:PiliPlus/pages/common/multi_select/base.dart'; class MentionItem with MultiSelectData { - String? face; - int? fans; - String? name; - int? officialVerifyType; - String? uid; + final String? face; + final int? fans; + final String? name; + final int? officialVerifyType; + final String? uid; MentionItem({ this.face, 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 a2986fc18..d571d8318 100644 --- a/lib/models_new/live/live_area_list/area_item.dart +++ b/lib/models_new/live/live_area_list/area_item.dart @@ -1,11 +1,14 @@ -class AreaItem { - dynamic id; - String? name; - String? pic; - dynamic parentId; - String? parentName; +import 'package:flutter/foundation.dart' show immutable; - AreaItem({ +@immutable +class AreaItem { + final dynamic id; + final String? name; + final String? pic; + final dynamic parentId; + final String? parentName; + + const AreaItem({ this.id, this.name, this.pic, diff --git a/lib/models_new/space/space/tab2.dart b/lib/models_new/space/space/tab2.dart index b6c2fa889..5a2810908 100644 --- a/lib/models_new/space/space/tab2.dart +++ b/lib/models_new/space/space/tab2.dart @@ -1,3 +1,5 @@ +import 'package:flutter/foundation.dart' show immutable; + class SpaceTab2 { final String? title; final String? param; @@ -72,6 +74,7 @@ class SpaceTab2SubItem { ); } +@immutable class SpaceTabFilter { final String? text; final String meta; diff --git a/lib/pages/dynamics_create_reserve/view.dart b/lib/pages/dynamics_create_reserve/view.dart index fb77fe480..fc54f12e3 100644 --- a/lib/pages/dynamics_create_reserve/view.dart +++ b/lib/pages/dynamics_create_reserve/view.dart @@ -18,12 +18,18 @@ class CreateReservePage extends StatefulWidget { } class _CreateReservePageState extends State { - late final _controller = Get.put( - CreateReserveController(widget.sid), - tag: Utils.generateRandomString(6), - ); + late final CreateReserveController _controller; late TextStyle _leadingStyle; + @override + void initState() { + super.initState(); + _controller = Get.put( + CreateReserveController(widget.sid), + tag: Utils.generateRandomString(6), + ); + } + @override Widget build(BuildContext context) { final theme = Theme.of(context); diff --git a/lib/pages/dynamics_create_vote/view.dart b/lib/pages/dynamics_create_vote/view.dart index e911814cd..ece157d37 100644 --- a/lib/pages/dynamics_create_vote/view.dart +++ b/lib/pages/dynamics_create_vote/view.dart @@ -26,14 +26,20 @@ class CreateVotePage extends StatefulWidget { } class _CreateVotePageState extends State { - late final _controller = Get.put( - CreateVoteController(widget.voteId), - tag: Utils.generateRandomString(8), - ); + late final CreateVoteController _controller; late final imagePicker = ImagePicker(); late TextStyle _leadingStyle; + @override + void initState() { + super.initState(); + _controller = Get.put( + CreateVoteController(widget.voteId), + tag: Utils.generateRandomString(8), + ); + } + @override Widget build(BuildContext context) { final theme = Theme.of(context); diff --git a/lib/pages/fan/view.dart b/lib/pages/fan/view.dart index c8a8a2be1..81df03c1f 100644 --- a/lib/pages/fan/view.dart +++ b/lib/pages/fan/view.dart @@ -38,12 +38,18 @@ class FansPage extends StatefulWidget { class _FansPageState extends FollowTypePageState { @override - late final FansController controller = Get.put( - FansController(widget.showName), - tag: Get.arguments?['mid']?.toString() ?? Utils.generateRandomString(8), - ); + late final FansController controller; late final flag = widget.onSelect == null && controller.isOwner; + @override + void initState() { + super.initState(); + controller = Get.put( + FansController(widget.showName), + tag: Get.arguments?['mid']?.toString() ?? Utils.generateRandomString(8), + ); + } + @override PreferredSizeWidget? get appBar => widget.showName ? AppBar( diff --git a/lib/pages/fav/note/child_view.dart b/lib/pages/fav/note/child_view.dart index e509c7466..7a42cbba7 100644 --- a/lib/pages/fav/note/child_view.dart +++ b/lib/pages/fav/note/child_view.dart @@ -21,10 +21,16 @@ class FavNoteChildPage extends StatefulWidget { class _FavNoteChildPageState extends State with AutomaticKeepAliveClientMixin, GridMixin { - late final FavNoteController _favNoteController = Get.put( - FavNoteController(widget.isPublish), - tag: '${widget.isPublish}', - ); + late final FavNoteController _favNoteController; + + @override + void initState() { + super.initState(); + _favNoteController = Get.put( + FavNoteController(widget.isPublish), + tag: widget.isPublish.toString(), + ); + } @override Widget build(BuildContext context) { diff --git a/lib/pages/fav/pgc/child_view.dart b/lib/pages/fav/pgc/child_view.dart index fa4db41bb..0f0f43e65 100644 --- a/lib/pages/fav/pgc/child_view.dart +++ b/lib/pages/fav/pgc/child_view.dart @@ -27,10 +27,16 @@ class FavPgcChildPage extends StatefulWidget { class _FavPgcChildPageState extends State with AutomaticKeepAliveClientMixin, GridMixin { - late final FavPgcController _favPgcController = Get.put( - FavPgcController(widget.type, widget.followStatus), - tag: '${widget.type}${widget.followStatus}', - ); + late final FavPgcController _favPgcController; + + @override + void initState() { + super.initState(); + _favPgcController = Get.put( + FavPgcController(widget.type, widget.followStatus), + tag: '${widget.type}${widget.followStatus}', + ); + } @override Widget build(BuildContext context) { diff --git a/lib/pages/fav_detail/view.dart b/lib/pages/fav_detail/view.dart index 2d8331a2a..8ae5e0d57 100644 --- a/lib/pages/fav_detail/view.dart +++ b/lib/pages/fav_detail/view.dart @@ -28,16 +28,17 @@ class FavDetailPage extends StatefulWidget { } class _FavDetailPageState extends State with GridMixin { - late final FavDetailController _favDetailController = Get.put( - FavDetailController(), - tag: Utils.makeHeroTag(mediaId), - ); + late final FavDetailController _favDetailController; late String mediaId; @override void initState() { super.initState(); mediaId = Get.parameters['mediaId']!; + _favDetailController = Get.put( + FavDetailController(), + tag: Utils.makeHeroTag(mediaId), + ); } late EdgeInsets padding; diff --git a/lib/pages/follow/child/child_view.dart b/lib/pages/follow/child/child_view.dart index 0cf78b1b6..649bb6d8d 100644 --- a/lib/pages/follow/child/child_view.dart +++ b/lib/pages/follow/child/child_view.dart @@ -38,10 +38,16 @@ class FollowChildPage extends StatefulWidget { class _FollowChildPageState extends State with AutomaticKeepAliveClientMixin { - late final _followController = Get.put( - FollowChildController(widget.controller, widget.mid, widget.tagid), - tag: '${widget.tag ?? Utils.generateRandomString(8)}${widget.tagid}', - ); + late final FollowChildController _followController; + + @override + void initState() { + super.initState(); + _followController = Get.put( + FollowChildController(widget.controller, widget.mid, widget.tagid), + tag: '${widget.tag ?? Utils.generateRandomString(8)}${widget.tagid}', + ); + } @override Widget build(BuildContext context) { diff --git a/lib/pages/follow/view.dart b/lib/pages/follow/view.dart index 018b37283..eacb2e9d6 100644 --- a/lib/pages/follow/view.dart +++ b/lib/pages/follow/view.dart @@ -33,10 +33,13 @@ class FollowPage extends StatefulWidget { class _FollowPageState extends State { final _tag = Utils.generateRandomString(8); - late final FollowController _followController = Get.put( - FollowController(), - tag: _tag, - ); + late final FollowController _followController; + + @override + void initState() { + super.initState(); + _followController = Get.put(FollowController(), tag: _tag); + } @override Widget build(BuildContext context) { diff --git a/lib/pages/follow_search/view.dart b/lib/pages/follow_search/view.dart index aed6e6223..23f4d2047 100644 --- a/lib/pages/follow_search/view.dart +++ b/lib/pages/follow_search/view.dart @@ -25,10 +25,16 @@ class _FollowSearchPageState extends CommonSearchPageState { @override - late final FollowSearchController controller = Get.put( - FollowSearchController(widget.mid ?? Get.arguments['mid']), - tag: Utils.generateRandomString(8), - ); + late final FollowSearchController controller; + + @override + void initState() { + super.initState(); + controller = Get.put( + FollowSearchController(widget.mid ?? Get.arguments['mid']), + tag: Utils.generateRandomString(8), + ); + } @override Widget buildList(List list) { diff --git a/lib/pages/history/view.dart b/lib/pages/history/view.dart index 9aa8926fc..9c88bba7f 100644 --- a/lib/pages/history/view.dart +++ b/lib/pages/history/view.dart @@ -26,10 +26,16 @@ class HistoryPage extends StatefulWidget { class _HistoryPageState extends State with AutomaticKeepAliveClientMixin, GridMixin { - late final _historyController = Get.put( - HistoryController(widget.type), - tag: widget.type ?? 'all', - ); + late final HistoryController _historyController; + + @override + void initState() { + super.initState(); + _historyController = Get.put( + HistoryController(widget.type), + tag: widget.type ?? 'all', + ); + } HistoryController currCtr([int? index]) { try { diff --git a/lib/pages/later/child_view.dart b/lib/pages/later/child_view.dart index 24d7db22b..02b84140e 100644 --- a/lib/pages/later/child_view.dart +++ b/lib/pages/later/child_view.dart @@ -27,12 +27,18 @@ class LaterViewChildPage extends StatefulWidget { class _LaterViewChildPageState extends State with AutomaticKeepAliveClientMixin, GridMixin { - late final LaterController _laterController = Get.put( - LaterController(widget.laterViewType), - tag: widget.laterViewType.type.toString(), - ); + late final LaterController _laterController; late final _baseCtr = Get.putOrFind(LaterBaseController.new); + @override + void initState() { + super.initState(); + _laterController = Get.put( + LaterController(widget.laterViewType), + tag: widget.laterViewType.type.toString(), + ); + } + @override Widget build(BuildContext context) { super.build(context); diff --git a/lib/pages/live_area_detail/child/view.dart b/lib/pages/live_area_detail/child/view.dart index c1b4da111..510be10c9 100644 --- a/lib/pages/live_area_detail/child/view.dart +++ b/lib/pages/live_area_detail/child/view.dart @@ -28,10 +28,16 @@ class LiveAreaChildPage extends StatefulWidget { class _LiveAreaChildPageState extends State with AutomaticKeepAliveClientMixin { - late final _controller = Get.put( - LiveAreaChildController(widget.areaId, widget.parentAreaId), - tag: '${widget.areaId}${widget.parentAreaId}', - ); + late final LiveAreaChildController _controller; + + @override + void initState() { + super.initState(); + _controller = Get.put( + LiveAreaChildController(widget.areaId, widget.parentAreaId), + tag: '${widget.areaId}${widget.parentAreaId}', + ); + } @override Widget build(BuildContext context) { diff --git a/lib/pages/live_area_detail/view.dart b/lib/pages/live_area_detail/view.dart index 3ee89e4b3..cc828b3d3 100644 --- a/lib/pages/live_area_detail/view.dart +++ b/lib/pages/live_area_detail/view.dart @@ -28,9 +28,15 @@ class LiveAreaDetailPage extends StatefulWidget { } class _LiveAreaDetailPageState extends State { - late final _controller = Get.put( - LiveAreaDetailController(widget.areaId?.toString(), widget.parentAreaId), - ); + late final LiveAreaDetailController _controller; + + @override + void initState() { + super.initState(); + _controller = Get.put( + LiveAreaDetailController(widget.areaId?.toString(), widget.parentAreaId), + ); + } @override Widget build(BuildContext context) { diff --git a/lib/pages/live_emote/view.dart b/lib/pages/live_emote/view.dart index 13398e044..e5f2bd83f 100644 --- a/lib/pages/live_emote/view.dart +++ b/lib/pages/live_emote/view.dart @@ -29,10 +29,16 @@ class LiveEmotePanel extends StatefulWidget { class _LiveEmotePanelState extends State with AutomaticKeepAliveClientMixin { - late final LiveEmotePanelController _emotePanelController = Get.put( - LiveEmotePanelController(widget.roomId), - tag: widget.roomId.toString(), - ); + late final LiveEmotePanelController _emotePanelController; + + @override + void initState() { + super.initState(); + _emotePanelController = Get.put( + LiveEmotePanelController(widget.roomId), + tag: widget.roomId.toString(), + ); + } @override bool get wantKeepAlive => true; diff --git a/lib/pages/live_room/contribution_rank/view.dart b/lib/pages/live_room/contribution_rank/view.dart index 4a7282f81..339f61a83 100644 --- a/lib/pages/live_room/contribution_rank/view.dart +++ b/lib/pages/live_room/contribution_rank/view.dart @@ -107,14 +107,20 @@ class _ContributionRankType extends StatefulWidget { class _ContributionRankTypeState extends State<_ContributionRankType> with AutomaticKeepAliveClientMixin { - late final _controller = Get.put( - ContributionRankController( - ruid: widget.ruid, - roomId: widget.roomId, - type: widget.type, - ), - tag: '${widget.roomId}${widget.type.name}', - ); + late final ContributionRankController _controller; + + @override + void initState() { + super.initState(); + _controller = Get.put( + ContributionRankController( + ruid: widget.ruid, + roomId: widget.roomId, + type: widget.type, + ), + tag: '${widget.roomId}${widget.type.name}', + ); + } @override Widget build(BuildContext context) { diff --git a/lib/pages/live_room/controller.dart b/lib/pages/live_room/controller.dart index 5ab5f63a3..3edfbe6d5 100644 --- a/lib/pages/live_room/controller.dart +++ b/lib/pages/live_room/controller.dart @@ -410,7 +410,7 @@ class LiveRoomController extends GetxController { } // 修改画质 - FutureOr changeQn(int qn) { + Future? changeQn(int qn) { if (currentQn == qn) { return null; } diff --git a/lib/pages/live_room/view.dart b/lib/pages/live_room/view.dart index f7e72a28d..3d229254e 100644 --- a/lib/pages/live_room/view.dart +++ b/lib/pages/live_room/view.dart @@ -215,6 +215,7 @@ class _LiveRoomPageState extends State child = PlayerFocus( plPlayerController: plPlayerController, onSendDanmaku: _liveRoomController.onSendDanmaku, + onRefresh: _liveRoomController.queryLiveUrl, child: child, ); } diff --git a/lib/pages/member_article/view.dart b/lib/pages/member_article/view.dart index be9baa66b..ef04dac70 100644 --- a/lib/pages/member_article/view.dart +++ b/lib/pages/member_article/view.dart @@ -27,10 +27,16 @@ class _MemberArticleState extends State @override bool get wantKeepAlive => true; - late final _controller = Get.put( - MemberArticleCtr(mid: widget.mid), - tag: widget.heroTag, - ); + late final MemberArticleCtr _controller; + + @override + void initState() { + super.initState(); + _controller = Get.put( + MemberArticleCtr(mid: widget.mid), + tag: widget.heroTag, + ); + } @override Widget build(BuildContext context) { diff --git a/lib/pages/member_audio/view.dart b/lib/pages/member_audio/view.dart index 870a5e1ee..3c53df03c 100644 --- a/lib/pages/member_audio/view.dart +++ b/lib/pages/member_audio/view.dart @@ -27,10 +27,16 @@ class MemberAudio extends StatefulWidget { class _MemberAudioState extends State with AutomaticKeepAliveClientMixin { - late final _controller = Get.put( - MemberAudioController(widget.mid), - tag: widget.heroTag, - ); + late final MemberAudioController _controller; + + @override + void initState() { + super.initState(); + _controller = Get.put( + MemberAudioController(widget.mid), + tag: widget.heroTag, + ); + } @override Widget build(BuildContext context) { diff --git a/lib/pages/member_cheese/view.dart b/lib/pages/member_cheese/view.dart index 52475cc8e..543924f9a 100644 --- a/lib/pages/member_cheese/view.dart +++ b/lib/pages/member_cheese/view.dart @@ -24,10 +24,16 @@ class MemberCheese extends StatefulWidget { class _MemberCheeseState extends State with AutomaticKeepAliveClientMixin, GridMixin { - late final _controller = Get.put( - MemberCheeseController(widget.mid), - tag: widget.heroTag, - ); + late final MemberCheeseController _controller; + + @override + void initState() { + super.initState(); + _controller = Get.put( + MemberCheeseController(widget.mid), + tag: widget.heroTag, + ); + } @override Widget build(BuildContext context) { diff --git a/lib/pages/member_coin_arc/view.dart b/lib/pages/member_coin_arc/view.dart index 3c36f1a8c..1c30638eb 100644 --- a/lib/pages/member_coin_arc/view.dart +++ b/lib/pages/member_coin_arc/view.dart @@ -28,10 +28,16 @@ class MemberCoinArcPage extends StatefulWidget { class _MemberCoinArcPageState extends State { late final mid = Accounts.main.mid; - late final _ctr = Get.put( - MemberCoinArcController(mid: widget.mid), - tag: Utils.makeHeroTag(widget.mid), - ); + late final MemberCoinArcController _ctr; + + @override + void initState() { + super.initState(); + _ctr = Get.put( + MemberCoinArcController(mid: widget.mid), + tag: Utils.makeHeroTag(widget.mid), + ); + } @override Widget build(BuildContext context) { diff --git a/lib/pages/member_comic/view.dart b/lib/pages/member_comic/view.dart index 40cc8a021..d1a177b0b 100644 --- a/lib/pages/member_comic/view.dart +++ b/lib/pages/member_comic/view.dart @@ -24,10 +24,16 @@ class MemberComic extends StatefulWidget { class _MemberComicState extends State with AutomaticKeepAliveClientMixin, GridMixin { - late final _controller = Get.put( - MemberComicController(widget.mid), - tag: widget.heroTag, - ); + late final MemberComicController _controller; + + @override + void initState() { + super.initState(); + _controller = Get.put( + MemberComicController(widget.mid), + tag: widget.heroTag, + ); + } @override Widget build(BuildContext context) { diff --git a/lib/pages/member_favorite/view.dart b/lib/pages/member_favorite/view.dart index 767f41910..75fe2d4fd 100644 --- a/lib/pages/member_favorite/view.dart +++ b/lib/pages/member_favorite/view.dart @@ -29,10 +29,16 @@ class _MemberFavoriteState extends State @override bool get wantKeepAlive => true; - late final _controller = Get.put( - MemberFavoriteCtr(mid: widget.mid), - tag: widget.heroTag, - ); + late final MemberFavoriteCtr _controller; + + @override + void initState() { + super.initState(); + _controller = Get.put( + MemberFavoriteCtr(mid: widget.mid), + tag: widget.heroTag, + ); + } @override Widget build(BuildContext context) { diff --git a/lib/pages/member_like_arc/view.dart b/lib/pages/member_like_arc/view.dart index 80adac94b..6bc9f9d36 100644 --- a/lib/pages/member_like_arc/view.dart +++ b/lib/pages/member_like_arc/view.dart @@ -28,10 +28,16 @@ class MemberLikeArcPage extends StatefulWidget { class _MemberLikeArcPageState extends State { late final mid = Accounts.main.mid; - late final _ctr = Get.put( - MemberLikeArcController(mid: widget.mid), - tag: Utils.makeHeroTag(widget.mid), - ); + late final MemberLikeArcController _ctr; + + @override + void initState() { + super.initState(); + _ctr = Get.put( + MemberLikeArcController(mid: widget.mid), + tag: Utils.makeHeroTag(widget.mid), + ); + } @override Widget build(BuildContext context) { diff --git a/lib/pages/member_opus/view.dart b/lib/pages/member_opus/view.dart index 1f4bc7b6e..0232c127c 100644 --- a/lib/pages/member_opus/view.dart +++ b/lib/pages/member_opus/view.dart @@ -31,16 +31,22 @@ class MemberOpus extends StatefulWidget { class _MemberOpusState extends State with AutomaticKeepAliveClientMixin { - late final _controller = Get.put( - MemberOpusController( - mid: widget.mid, - heroTag: widget.heroTag, - ), - tag: widget.heroTag, - ); + late final MemberOpusController _controller; late double _maxWidth; + @override + void initState() { + super.initState(); + _controller = Get.put( + MemberOpusController( + mid: widget.mid, + heroTag: widget.heroTag, + ), + tag: widget.heroTag, + ); + } + @override Widget build(BuildContext context) { super.build(context); diff --git a/lib/pages/member_pgc/view.dart b/lib/pages/member_pgc/view.dart index 4b567eff8..c38be8de9 100644 --- a/lib/pages/member_pgc/view.dart +++ b/lib/pages/member_pgc/view.dart @@ -28,13 +28,19 @@ class _MemberBangumiState extends State @override bool get wantKeepAlive => true; - late final _controller = Get.put( - MemberBangumiCtr( - heroTag: widget.heroTag, - mid: widget.mid, - ), - tag: widget.heroTag, - ); + late final MemberBangumiCtr _controller; + + @override + void initState() { + super.initState(); + _controller = Get.put( + MemberBangumiCtr( + heroTag: widget.heroTag, + mid: widget.mid, + ), + tag: widget.heroTag, + ); + } @override Widget build(BuildContext context) { diff --git a/lib/pages/member_season_series/view.dart b/lib/pages/member_season_series/view.dart index ce369a2f4..9e3439fae 100644 --- a/lib/pages/member_season_series/view.dart +++ b/lib/pages/member_season_series/view.dart @@ -27,10 +27,16 @@ class SeasonSeriesPage extends StatefulWidget { class _SeasonSeriesPageState extends State with AutomaticKeepAliveClientMixin, GridMixin { - late final _controller = Get.put( - SeasonSeriesController(widget.mid), - tag: widget.heroTag, - ); + late final SeasonSeriesController _controller; + + @override + void initState() { + super.initState(); + _controller = Get.put( + SeasonSeriesController(widget.mid), + tag: widget.heroTag, + ); + } @override bool get wantKeepAlive => true; diff --git a/lib/pages/member_shop/view.dart b/lib/pages/member_shop/view.dart index 5b36fcc62..b22081904 100644 --- a/lib/pages/member_shop/view.dart +++ b/lib/pages/member_shop/view.dart @@ -29,10 +29,16 @@ class MemberShop extends StatefulWidget { class _MemberShopState extends State with AutomaticKeepAliveClientMixin { - late final _controller = Get.put( - MemberShopController(widget.mid), - tag: widget.heroTag, - ); + late final MemberShopController _controller; + + @override + void initState() { + super.initState(); + _controller = Get.put( + MemberShopController(widget.mid), + tag: widget.heroTag, + ); + } @override Widget build(BuildContext context) { diff --git a/lib/pages/member_video/view.dart b/lib/pages/member_video/view.dart index 31fda443b..5d2e27fd6 100644 --- a/lib/pages/member_video/view.dart +++ b/lib/pages/member_video/view.dart @@ -44,18 +44,7 @@ class _MemberVideoState extends State @override bool get wantKeepAlive => true; - late final _controller = Get.put( - MemberVideoCtr( - type: widget.type, - mid: widget.mid, - seasonId: widget.seasonId, - seriesId: widget.seriesId, - username: Get.find(tag: widget.heroTag).username, - title: widget.title, - ), - tag: - '${widget.heroTag}${widget.type.name}${widget.seasonId}${widget.seriesId}', - ); + late final MemberVideoCtr _controller; int? _index; late ExtendedNestedScrollController _scrollController; @@ -74,6 +63,23 @@ class _MemberVideoState extends State } } + @override + void initState() { + super.initState(); + _controller = Get.put( + MemberVideoCtr( + type: widget.type, + mid: widget.mid, + seasonId: widget.seasonId, + seriesId: widget.seriesId, + username: Get.find(tag: widget.heroTag).username, + title: widget.title, + ), + tag: + '${widget.heroTag}${widget.type.name}${widget.seasonId}${widget.seriesId}', + ); + } + @override Widget build(BuildContext context) { super.build(context); diff --git a/lib/pages/msg_feed_top/at_me/view.dart b/lib/pages/msg_feed_top/at_me/view.dart index 509a168ab..dc3f1028f 100644 --- a/lib/pages/msg_feed_top/at_me/view.dart +++ b/lib/pages/msg_feed_top/at_me/view.dart @@ -25,7 +25,7 @@ class AtMePage extends StatefulWidget { } class _AtMePageState extends State { - late final AtMeController _atMeController = Get.put(AtMeController()); + final AtMeController _atMeController = Get.put(AtMeController()); @override Widget build(BuildContext context) { diff --git a/lib/pages/msg_feed_top/like_me/view.dart b/lib/pages/msg_feed_top/like_me/view.dart index a9801ebd3..53c710fe3 100644 --- a/lib/pages/msg_feed_top/like_me/view.dart +++ b/lib/pages/msg_feed_top/like_me/view.dart @@ -26,7 +26,7 @@ class LikeMePage extends StatefulWidget { } class _LikeMePageState extends State { - late final LikeMeController _likeMeController = Get.put(LikeMeController()); + final LikeMeController _likeMeController = Get.put(LikeMeController()); @override Widget build(BuildContext context) { diff --git a/lib/pages/msg_feed_top/reply_me/view.dart b/lib/pages/msg_feed_top/reply_me/view.dart index 32932c7a6..40fec0936 100644 --- a/lib/pages/msg_feed_top/reply_me/view.dart +++ b/lib/pages/msg_feed_top/reply_me/view.dart @@ -25,7 +25,7 @@ class ReplyMePage extends StatefulWidget { } class _ReplyMePageState extends State { - late final _replyMeController = Get.put(ReplyMeController()); + final _replyMeController = Get.put(ReplyMeController()); @override Widget build(BuildContext context) { diff --git a/lib/pages/msg_feed_top/sys_msg/view.dart b/lib/pages/msg_feed_top/sys_msg/view.dart index 0108df03a..9d9b3d1af 100644 --- a/lib/pages/msg_feed_top/sys_msg/view.dart +++ b/lib/pages/msg_feed_top/sys_msg/view.dart @@ -23,8 +23,9 @@ class SysMsgPage extends StatefulWidget { } class _SysMsgPageState extends State { - late final _sysMsgController = Get.put(SysMsgController()); - late final RegExp urlRegExp = RegExp( + final _sysMsgController = Get.put(SysMsgController()); + + static final RegExp _urlRegExp = RegExp( r'#\{([^}]*)\}\{([^}]*)\}|https?:\/\/[^\s/\$.?#].[^\s]*|www\.[^\s/\$.?#].[^\s]*|【(.*?)】|((\d+))', ); @@ -135,7 +136,7 @@ class _SysMsgPageState extends State { InlineSpan _buildContent(ThemeData theme, String content) { final List spanChildren = []; content.splitMapJoin( - urlRegExp, + _urlRegExp, onMatch: (Match match) { final matchStr = match[0]!; if (matchStr.startsWith('#')) { diff --git a/lib/pages/pgc/view.dart b/lib/pages/pgc/view.dart index 2d1f88e44..88a4f68ba 100644 --- a/lib/pages/pgc/view.dart +++ b/lib/pages/pgc/view.dart @@ -40,10 +40,16 @@ class PgcPage extends StatefulWidget { class _PgcPageState extends CommonPageState with AutomaticKeepAliveClientMixin { @override - late PgcController controller = Get.put( - PgcController(tabType: widget.tabType), - tag: widget.tabType.name, - ); + late final PgcController controller; + + @override + void initState() { + super.initState(); + controller = Get.put( + PgcController(tabType: widget.tabType), + tag: widget.tabType.name, + ); + } @override bool get wantKeepAlive => true; diff --git a/lib/pages/pgc_index/view.dart b/lib/pages/pgc_index/view.dart index e63d8923a..31bffe0ae 100644 --- a/lib/pages/pgc_index/view.dart +++ b/lib/pages/pgc_index/view.dart @@ -25,10 +25,16 @@ class PgcIndexPage extends StatefulWidget { class _PgcIndexPageState extends State with AutomaticKeepAliveClientMixin { - late final _ctr = Get.put( - PgcIndexController(widget.indexType), - tag: '${widget.indexType}', - ); + late final PgcIndexController _ctr; + + @override + void initState() { + super.initState(); + _ctr = Get.put( + PgcIndexController(widget.indexType), + tag: widget.indexType.toString(), + ); + } @override bool get wantKeepAlive => widget.indexType != null; @@ -141,7 +147,7 @@ class _PgcIndexPageState extends State ..onReload(), ); } - throw UnsupportedError(item.runtimeType.toString()); + throw UnsupportedError(item.toString()); } Widget _buildSortsWidget( diff --git a/lib/pages/pgc_review/child/view.dart b/lib/pages/pgc_review/child/view.dart index a3e47ca98..84eea7084 100644 --- a/lib/pages/pgc_review/child/view.dart +++ b/lib/pages/pgc_review/child/view.dart @@ -40,13 +40,20 @@ class PgcReviewChildPage extends StatefulWidget { class _PgcReviewChildPageState extends State with AutomaticKeepAliveClientMixin { - late final _tag = '${widget.mediaId}${widget.type.name}'; - late final _controller = Get.put( - PgcReviewController(type: widget.type, mediaId: widget.mediaId), - tag: _tag, - ); + late final String _tag; + late final PgcReviewController _controller; late final isLongReview = widget.type == PgcReviewType.long; + @override + void initState() { + super.initState(); + _tag = '${widget.mediaId}${widget.type.name}'; + _controller = Get.put( + PgcReviewController(type: widget.type, mediaId: widget.mediaId), + tag: _tag, + ); + } + @override void dispose() { Get.delete(tag: _tag); diff --git a/lib/pages/pgc_review/post/view.dart b/lib/pages/pgc_review/post/view.dart index e60d6be3b..0e908f815 100644 --- a/lib/pages/pgc_review/post/view.dart +++ b/lib/pages/pgc_review/post/view.dart @@ -46,7 +46,7 @@ class _PgcReviewPostPanelState extends State { } void _onScore(double dx) { - int index = (dx / 50).toInt().clamp(0, 4); + int index = (dx ~/ 50).clamp(0, 4); _enablePost.value = true; _score.value = index + 1; } diff --git a/lib/pages/rank/zone/view.dart b/lib/pages/rank/zone/view.dart index 70427b751..1f55d7729 100644 --- a/lib/pages/rank/zone/view.dart +++ b/lib/pages/rank/zone/view.dart @@ -23,10 +23,16 @@ class ZonePage extends StatefulWidget { class _ZonePageState extends CommonPageState with AutomaticKeepAliveClientMixin, GridMixin { @override - late ZoneController controller = Get.put( - ZoneController(rid: widget.rid, seasonType: widget.seasonType), - tag: '${widget.rid}${widget.seasonType}', - ); + late final ZoneController controller; + + @override + void initState() { + super.initState(); + controller = Get.put( + ZoneController(rid: widget.rid, seasonType: widget.seasonType), + tag: '${widget.rid}${widget.seasonType}', + ); + } @override bool get wantKeepAlive => true; diff --git a/lib/pages/rcmd/view.dart b/lib/pages/rcmd/view.dart index 40cb0261c..6fefb8310 100644 --- a/lib/pages/rcmd/view.dart +++ b/lib/pages/rcmd/view.dart @@ -21,7 +21,7 @@ class RcmdPage extends StatefulWidget { class _RcmdPageState extends CommonPageState with AutomaticKeepAliveClientMixin { @override - late RcmdController controller = Get.put(RcmdController()); + final RcmdController controller = Get.put(RcmdController()); @override bool get wantKeepAlive => true; diff --git a/lib/pages/search/view.dart b/lib/pages/search/view.dart index fcef7dd55..58b002437 100644 --- a/lib/pages/search/view.dart +++ b/lib/pages/search/view.dart @@ -25,10 +25,16 @@ class SearchPage extends StatefulWidget { class _SearchPageState extends State { final _tag = Utils.generateRandomString(6); - late final SSearchController _searchController = Get.put( - SSearchController(_tag), - tag: _tag, - ); + late final SSearchController _searchController; + + @override + void initState() { + super.initState(); + _searchController = Get.put( + SSearchController(_tag), + tag: _tag, + ); + } @override Widget build(BuildContext context) { diff --git a/lib/pages/search_panel/all/view.dart b/lib/pages/search_panel/all/view.dart index fc1c5fd38..1a4c5f73e 100644 --- a/lib/pages/search_panel/all/view.dart +++ b/lib/pages/search_panel/all/view.dart @@ -29,14 +29,20 @@ class SearchAllPanel extends CommonSearchPanel { class _SearchAllPanelState extends CommonSearchPanelState { @override - late final SearchAllController controller = Get.put( - SearchAllController( - keyword: widget.keyword, - searchType: widget.searchType, - tag: widget.tag, - ), - tag: widget.searchType.name + widget.tag, - ); + late final SearchAllController controller; + + @override + void initState() { + super.initState(); + controller = Get.put( + SearchAllController( + keyword: widget.keyword, + searchType: widget.searchType, + tag: widget.tag, + ), + tag: widget.searchType.name + widget.tag, + ); + } @override Widget buildList(ThemeData theme, List list) { diff --git a/lib/pages/search_panel/article/view.dart b/lib/pages/search_panel/article/view.dart index ce16e8993..c65086a93 100644 --- a/lib/pages/search_panel/article/view.dart +++ b/lib/pages/search_panel/article/view.dart @@ -28,14 +28,20 @@ class _SearchArticlePanelState > with GridMixin { @override - late final SearchArticleController controller = Get.put( - SearchArticleController( - keyword: widget.keyword, - searchType: widget.searchType, - tag: widget.tag, - ), - tag: widget.searchType.name + widget.tag, - ); + late final SearchArticleController controller; + + @override + void initState() { + super.initState(); + controller = Get.put( + SearchArticleController( + keyword: widget.keyword, + searchType: widget.searchType, + tag: widget.tag, + ), + tag: widget.searchType.name + widget.tag, + ); + } @override Widget buildHeader(ThemeData theme) { diff --git a/lib/pages/search_panel/live/view.dart b/lib/pages/search_panel/live/view.dart index 78546daf9..d47f20ad6 100644 --- a/lib/pages/search_panel/live/view.dart +++ b/lib/pages/search_panel/live/view.dart @@ -28,14 +28,21 @@ class _SearchLivePanelState SearchLiveItemModel > { @override - late final controller = Get.put( - SearchPanelController( - keyword: widget.keyword, - searchType: widget.searchType, - tag: widget.tag, - ), - tag: widget.searchType.name + widget.tag, - ); + late final SearchPanelController + controller; + + @override + void initState() { + super.initState(); + controller = Get.put( + SearchPanelController( + keyword: widget.keyword, + searchType: widget.searchType, + tag: widget.tag, + ), + tag: widget.searchType.name + widget.tag, + ); + } late final gridDelegate = SliverGridDelegateWithExtentAndRatio( maxCrossAxisExtent: Grid.smallCardWidth, diff --git a/lib/pages/search_panel/pgc/view.dart b/lib/pages/search_panel/pgc/view.dart index ee12cd7b6..fe15e2628 100644 --- a/lib/pages/search_panel/pgc/view.dart +++ b/lib/pages/search_panel/pgc/view.dart @@ -29,14 +29,21 @@ class _SearchPgcPanelState SearchPgcItemModel > { @override - late final controller = Get.put( - SearchPanelController( - keyword: widget.keyword, - searchType: widget.searchType, - tag: widget.tag, - ), - tag: widget.searchType.name + widget.tag, - ); + late final SearchPanelController + controller; + + @override + void initState() { + super.initState(); + controller = Get.put( + SearchPanelController( + keyword: widget.keyword, + searchType: widget.searchType, + tag: widget.tag, + ), + tag: widget.searchType.name + widget.tag, + ); + } late final gridDelegate = SliverGridDelegateWithMaxCrossAxisExtent( maxCrossAxisExtent: Grid.smallCardWidth * 2, diff --git a/lib/pages/search_panel/user/view.dart b/lib/pages/search_panel/user/view.dart index dd207c753..65c1aa8d4 100644 --- a/lib/pages/search_panel/user/view.dart +++ b/lib/pages/search_panel/user/view.dart @@ -29,14 +29,20 @@ class _SearchUserPanelState SearchUserItemModel > { @override - late final SearchUserController controller = Get.put( - SearchUserController( - keyword: widget.keyword, - searchType: widget.searchType, - tag: widget.tag, - ), - tag: widget.searchType.name + widget.tag, - ); + late final SearchUserController controller; + + @override + void initState() { + super.initState(); + controller = Get.put( + SearchUserController( + keyword: widget.keyword, + searchType: widget.searchType, + tag: widget.tag, + ), + tag: widget.searchType.name + widget.tag, + ); + } @override Widget buildHeader(ThemeData theme) { diff --git a/lib/pages/search_panel/video/view.dart b/lib/pages/search_panel/video/view.dart index 58e4bf6bc..14265c5f8 100644 --- a/lib/pages/search_panel/video/view.dart +++ b/lib/pages/search_panel/video/view.dart @@ -30,14 +30,20 @@ class _SearchVideoPanelState > with GridMixin { @override - late final SearchVideoController controller = Get.put( - SearchVideoController( - keyword: widget.keyword, - searchType: widget.searchType, - tag: widget.tag, - ), - tag: widget.searchType.name + widget.tag, - ); + late final SearchVideoController controller; + + @override + void initState() { + super.initState(); + controller = Get.put( + SearchVideoController( + keyword: widget.keyword, + searchType: widget.searchType, + tag: widget.tag, + ), + tag: widget.searchType.name + widget.tag, + ); + } @override Widget buildHeader(ThemeData theme) { diff --git a/lib/pages/setting/models/style_settings.dart b/lib/pages/setting/models/style_settings.dart index 71803bba9..0afb20f48 100644 --- a/lib/pages/setting/models/style_settings.dart +++ b/lib/pages/setting/models/style_settings.dart @@ -461,7 +461,7 @@ void _showUiScaleDialog( GStorage.setting.delete(SettingBoxKey.uiScale).whenComplete(() { setState(); Get.appUpdate(); - ScaledWidgetsFlutterBinding.instance.setScaleFactor(1.0); + ScaledWidgetsFlutterBinding.instance.scaleFactor = 1.0; }); }, child: const Text('重置'), @@ -480,7 +480,7 @@ void _showUiScaleDialog( () { setState(); Get.appUpdate(); - ScaledWidgetsFlutterBinding.instance.setScaleFactor(uiScale); + ScaledWidgetsFlutterBinding.instance.scaleFactor = uiScale; }, ); }, diff --git a/lib/pages/subscription_detail/view.dart b/lib/pages/subscription_detail/view.dart index 1c0c19be0..2e76c4df0 100644 --- a/lib/pages/subscription_detail/view.dart +++ b/lib/pages/subscription_detail/view.dart @@ -35,10 +35,16 @@ class SubDetailPage extends StatefulWidget { } class _SubDetailPageState extends State with GridMixin { - late final SubDetailController _subDetailController = Get.put( - SubDetailController(), - tag: Utils.makeHeroTag(Get.parameters['id']), - ); + late final SubDetailController _subDetailController; + + @override + void initState() { + super.initState(); + _subDetailController = Get.put( + SubDetailController(), + tag: Utils.makeHeroTag(Get.parameters['id']), + ); + } @override Widget build(BuildContext context) { diff --git a/lib/pages/video/controller.dart b/lib/pages/video/controller.dart index ca07d344b..f180d6e25 100644 --- a/lib/pages/video/controller.dart +++ b/lib/pages/video/controller.dart @@ -1120,7 +1120,7 @@ class VideoDetailController extends GetxController playerInit(); } - FutureOr _initPlayerIfNeeded() { + Future? _initPlayerIfNeeded() { if (autoPlay.value || (plPlayerController.preInitPlayer && !plPlayerController.processing) && (isFileSource @@ -1128,6 +1128,7 @@ class VideoDetailController extends GetxController : videoPlayerKey.currentState?.mounted == true)) { return playerInit(); } + return null; } Future playerInit({ diff --git a/lib/pages/video/note/view.dart b/lib/pages/video/note/view.dart index dcd621d39..f8ac82f27 100644 --- a/lib/pages/video/note/view.dart +++ b/lib/pages/video/note/view.dart @@ -38,10 +38,16 @@ class NoteListPage extends CommonSlidePage { class _NoteListPageState extends State with SingleTickerProviderStateMixin, CommonSlideMixin { - late final _controller = Get.put( - NoteListPageCtr(oid: widget.oid), - tag: widget.heroTag, - ); + late final NoteListPageCtr _controller; + + @override + void initState() { + super.initState(); + _controller = Get.put( + NoteListPageCtr(oid: widget.oid), + tag: widget.heroTag, + ); + } @override void dispose() { diff --git a/lib/pages/video/reply_search_item/view.dart b/lib/pages/video/reply_search_item/view.dart index b514601d2..7120a608e 100644 --- a/lib/pages/video/reply_search_item/view.dart +++ b/lib/pages/video/reply_search_item/view.dart @@ -22,10 +22,16 @@ class ReplySearchPage extends StatefulWidget { } class _ReplySearchPageState extends State { - late final _controller = Get.put( - ReplySearchController(widget.type, widget.oid), - tag: Utils.generateRandomString(8), - ); + late final ReplySearchController _controller; + + @override + void initState() { + super.initState(); + _controller = Get.put( + ReplySearchController(widget.type, widget.oid), + tag: Utils.generateRandomString(8), + ); + } @override Widget build(BuildContext context) { diff --git a/lib/pages/video/widgets/player_focus.dart b/lib/pages/video/widgets/player_focus.dart index 70147515f..6c685d90e 100644 --- a/lib/pages/video/widgets/player_focus.dart +++ b/lib/pages/video/widgets/player_focus.dart @@ -22,6 +22,7 @@ class PlayerFocus extends StatelessWidget { required this.onSendDanmaku, this.canPlay, this.onSkipSegment, + this.onRefresh, }); final Widget child; @@ -30,6 +31,7 @@ class PlayerFocus extends StatelessWidget { final VoidCallback onSendDanmaku; final ValueGetter? canPlay; final ValueGetter? onSkipSegment; + final VoidCallback? onRefresh; static bool _shouldHandle(LogicalKeyboardKey logicalKey) { return logicalKey == LogicalKeyboardKey.tab || @@ -93,12 +95,14 @@ class PlayerFocus extends StatelessWidget { if (HardwareKeyboard.instance.isMetaPressed) { return true; } - if (!plPlayerController.isLive) { - if (event is KeyDownEvent) { + if (event is KeyDownEvent) { + if (plPlayerController.isLive) { + onRefresh?.call(); + } else { introController!.onStartTriple(); - } else if (event is KeyUpEvent) { - introController!.onCancelTriple(isKeyQ); } + } else if (event is KeyUpEvent && !plPlayerController.isLive) { + introController!.onCancelTriple(isKeyQ); } return true; } diff --git a/lib/pages/whisper_link_setting/view.dart b/lib/pages/whisper_link_setting/view.dart index 3510c17f2..5696f4d6d 100644 --- a/lib/pages/whisper_link_setting/view.dart +++ b/lib/pages/whisper_link_setting/view.dart @@ -22,10 +22,16 @@ class WhisperLinkSettingPage extends StatefulWidget { } class _WhisperLinkSettingPageState extends State { - late final WhisperLinkSettingController _controller = Get.put( - WhisperLinkSettingController(talkerUid: widget.talkerUid), - tag: Utils.generateRandomString(8), - ); + late final WhisperLinkSettingController _controller; + + @override + void initState() { + super.initState(); + _controller = Get.put( + WhisperLinkSettingController(talkerUid: widget.talkerUid), + tag: Utils.generateRandomString(8), + ); + } @override Widget build(BuildContext context) { diff --git a/lib/pages/whisper_secondary/view.dart b/lib/pages/whisper_secondary/view.dart index 248a30099..cabab1358 100644 --- a/lib/pages/whisper_secondary/view.dart +++ b/lib/pages/whisper_secondary/view.dart @@ -24,10 +24,16 @@ class WhisperSecPage extends StatefulWidget { } class _WhisperSecPageState extends State { - late final WhisperSecController _controller = Get.put( - WhisperSecController(sessionPageType: widget.sessionPageType), - tag: widget.sessionPageType.name, - ); + late final WhisperSecController _controller; + + @override + void initState() { + super.initState(); + _controller = Get.put( + WhisperSecController(sessionPageType: widget.sessionPageType), + tag: widget.sessionPageType.name, + ); + } @override Widget build(BuildContext context) { diff --git a/lib/pages/whisper_settings/view.dart b/lib/pages/whisper_settings/view.dart index 61dd9d7a6..070a983f6 100644 --- a/lib/pages/whisper_settings/view.dart +++ b/lib/pages/whisper_settings/view.dart @@ -25,10 +25,15 @@ class WhisperSettingsPage extends StatefulWidget { } class _WhisperSettingsPageState extends State { - late final WhisperSettingsController _controller = Get.put( - WhisperSettingsController(imSettingType: widget.imSettingType), - tag: widget.imSettingType.name, - ); + late final WhisperSettingsController _controller; + @override + void initState() { + super.initState(); + _controller = Get.put( + WhisperSettingsController(imSettingType: widget.imSettingType), + tag: widget.imSettingType.name, + ); + } @override Widget build(BuildContext context) { diff --git a/lib/plugin/pl_player/view.dart b/lib/plugin/pl_player/view.dart index d687f0a87..dbae30463 100644 --- a/lib/plugin/pl_player/view.dart +++ b/lib/plugin/pl_player/view.dart @@ -2247,7 +2247,7 @@ class _PLVideoPlayerState extends State Widget _dmActionItem( Widget child, { - required FutureOr Function() onTap, + required Future? Function() onTap, }) { return GestureDetector( behavior: HitTestBehavior.opaque, diff --git a/lib/utils/accounts.dart b/lib/utils/accounts.dart index a6fffc537..923291755 100644 --- a/lib/utils/accounts.dart +++ b/lib/utils/accounts.dart @@ -108,7 +108,7 @@ abstract final class Accounts { static Future set(AccountType key, Account account) async { final oldAccount = accountMode[key.index]..type.remove(key); accountMode[key.index] = account..type.add(key); - await Future.wait([account.onChange(), oldAccount.onChange()]); + await Future.wait([?account.onChange(), ?oldAccount.onChange()]); if (!account.activated) await Request.buvidActive(account); switch (key) { case AccountType.main: diff --git a/lib/utils/accounts/account.dart b/lib/utils/accounts/account.dart index f4b690092..b1420439c 100644 --- a/lib/utils/accounts/account.dart +++ b/lib/utils/accounts/account.dart @@ -9,7 +9,7 @@ import 'package:hive/hive.dart'; sealed class Account { Map? toJson() => null; - Future onChange() => Future.syncValue(null); + Future? onChange() => null; Set get type => const {}; diff --git a/lib/utils/page_utils.dart b/lib/utils/page_utils.dart index 1797e982b..615497c36 100644 --- a/lib/utils/page_utils.dart +++ b/lib/utils/page_utils.dart @@ -579,17 +579,15 @@ abstract final class PageUtils { vsync: state, duration: Duration.zero, reverseDuration: Duration.zero, - )..forward(); + ); state.showBottomSheet( constraints: const BoxConstraints(), - (context) { - return InteractiveviewerGallery( - sources: imgList, - initIndex: index, - quality: GlobalData().imgQuality, - onClose: animController.dispose, - ); - }, + (context) => InteractiveviewerGallery( + sources: imgList, + initIndex: index, + quality: GlobalData().imgQuality, + onClose: animController.dispose, + ), enableDrag: false, elevation: 0.0, backgroundColor: Colors.transparent, diff --git a/lib/utils/permission_handler.dart b/lib/utils/permission_handler.dart index 4025997eb..6a219b9ec 100644 --- a/lib/utils/permission_handler.dart +++ b/lib/utils/permission_handler.dart @@ -24,55 +24,55 @@ Future openAppSettings() => _handler.openAppSettings(); /// Actions that can be executed on a permission. extension PermissionActions on Permission { /// Callback for when permission is denied. - static FutureOr? Function()? _onDenied; + static Future? Function()? _onDenied; /// Callback for when permission is granted. - static FutureOr? Function()? _onGranted; + static Future? Function()? _onGranted; /// Callback for when permission is permanently denied. - static FutureOr? Function()? _onPermanentlyDenied; + static Future? Function()? _onPermanentlyDenied; /// Callback for when permission is restricted. - static FutureOr? Function()? _onRestricted; + static Future? Function()? _onRestricted; /// Callback for when permission is limited. - static FutureOr? Function()? _onLimited; + static Future? Function()? _onLimited; /// Callback for when permission is Provisional. - static FutureOr? Function()? _onProvisional; + static Future? Function()? _onProvisional; /// Method to set a callback for when permission is denied. - Permission onDeniedCallback(FutureOr? Function()? callback) { + Permission onDeniedCallback(Future? Function()? callback) { _onDenied = callback; return this; } /// Method to set a callback for when permission is granted. - Permission onGrantedCallback(FutureOr? Function()? callback) { + Permission onGrantedCallback(Future? Function()? callback) { _onGranted = callback; return this; } /// Method to set a callback for when permission is permanently denied. - Permission onPermanentlyDeniedCallback(FutureOr? Function()? callback) { + Permission onPermanentlyDeniedCallback(Future? Function()? callback) { _onPermanentlyDenied = callback; return this; } /// Method to set a callback for when permission is restricted. - Permission onRestrictedCallback(FutureOr? Function()? callback) { + Permission onRestrictedCallback(Future? Function()? callback) { _onRestricted = callback; return this; } /// Method to set a callback for when permission is limited. - Permission onLimitedCallback(FutureOr? Function()? callback) { + Permission onLimitedCallback(Future? Function()? callback) { _onLimited = callback; return this; } /// Method to set a callback for when permission is provisional. - Permission onProvisionalCallback(FutureOr? Function()? callback) { + Permission onProvisionalCallback(Future? Function()? callback) { _onProvisional = callback; return this; }