diff --git a/lib/pages/main/view.dart b/lib/pages/main/view.dart index fc5f2498b..8017f61a7 100644 --- a/lib/pages/main/view.dart +++ b/lib/pages/main/view.dart @@ -65,12 +65,19 @@ class _MainAppState extends State @override void didPopNext() { + WidgetsBinding.instance.addObserver(this); _mainController.checkUnreadDynamic(); _checkDefaultSearch(true); _checkUnread(context.orientation == Orientation.portrait); super.didPopNext(); } + @override + void didPushNext() { + WidgetsBinding.instance.removeObserver(this); + super.didPushNext(); + } + @override void didChangeAppLifecycleState(AppLifecycleState state) { if (state == AppLifecycleState.resumed) { diff --git a/lib/pages/video/detail/introduction/view.dart b/lib/pages/video/detail/introduction/view.dart index 0bd64d28d..9a6287858 100644 --- a/lib/pages/video/detail/introduction/view.dart +++ b/lib/pages/video/detail/introduction/view.dart @@ -1003,7 +1003,7 @@ class _VideoInfoState extends State with TickerProviderStateMixin { case 1: final List spanChildren = []; final RegExp urlRegExp = RegExp( - '${Constants.urlPattern}|av\\d+|bv\\S+\\b', + '${Constants.urlPattern}|av\\d+|bv[a-z\\d]{10}', caseSensitive: false, ); @@ -1030,7 +1030,7 @@ class _VideoInfoState extends State with TickerProviderStateMixin { } catch (e) { spanChildren.add(TextSpan(text: matchStr)); } - } else if (RegExp(r'^bv\S+\b$', caseSensitive: false) + } else if (RegExp(r'^bv[a-z\d]{10}$', caseSensitive: false) .hasMatch(matchStr)) { try { // validate diff --git a/lib/pages/video/detail/view.dart b/lib/pages/video/detail/view.dart index 53ded2562..fc894d90c 100644 --- a/lib/pages/video/detail/view.dart +++ b/lib/pages/video/detail/view.dart @@ -393,6 +393,8 @@ class _VideoDetailPageState extends State return; } + WidgetsBinding.instance.removeObserver(this); + ScreenBrightness().resetApplicationScreenBrightness(); videoDetailController.positionSubscription?.cancel(); @@ -426,6 +428,8 @@ class _VideoDetailPageState extends State return; } + WidgetsBinding.instance.addObserver(this); + if (videoDetailController.plPlayerController.playerStatus.status.value == PlayerStatus.playing && videoDetailController.playerStatus != PlayerStatus.playing) {