修复:首页视频预览bug

This commit is contained in:
ivan 2026-03-29 20:10:12 +08:00
parent e86b001a27
commit 20d43b4ae4
2 changed files with 24 additions and 3 deletions

View File

@ -14,6 +14,7 @@ import '../../core/theme/app_spacing.dart';
import '../../core/theme/app_typography.dart'; import '../../core/theme/app_typography.dart';
import '../../core/user/account_refresh.dart'; import '../../core/user/account_refresh.dart';
import '../../core/user/user_state.dart'; import '../../core/user/user_state.dart';
import '../../features/home/home_playback_resume.dart';
import '../../features/home/models/task_item.dart'; import '../../features/home/models/task_item.dart';
import '../../shared/widgets/top_nav_bar.dart'; import '../../shared/widgets/top_nav_bar.dart';
@ -66,6 +67,13 @@ class _GenerateVideoScreenState extends State<GenerateVideoScreen> {
}); });
} }
@override
void dispose() {
// pop [RouteAware.didPopNext]
homePlaybackResumeNonce.value++;
super.dispose();
}
/// Click flow per docs/generate_video.md: tap Generate Video -> image picker /// Click flow per docs/generate_video.md: tap Generate Video -> image picker
/// (camera or gallery) -> after image selected -> proceed to API. /// (camera or gallery) -> after image selected -> proceed to API.
Future<void> _onGenerateButtonTap() async { Future<void> _onGenerateButtonTap() async {

View File

@ -42,13 +42,26 @@ class _HomeScreenState extends State<HomeScreen> {
final Map<int, double> _cardVisibleFraction = {}; final Map<int, double> _cardVisibleFraction = {};
bool _visibilityReconcileScheduled = false; bool _visibilityReconcileScheduled = false;
/// IndexedStack [homePlaybackResumeNonce] [VisibilityDetector] /// IndexedStack [homePlaybackResumeNonce] [VisibilityDetector]
/// [notifyNow] Modal / pop My Gallery +
void _scheduleVisibilityRefresh() { void _scheduleVisibilityRefresh() {
if (!widget.isActive) return; if (!mounted || !widget.isActive) return;
WidgetsBinding.instance.addPostFrameCallback((_) { void notify() {
if (!mounted || !widget.isActive) return; if (!mounted || !widget.isActive) return;
VisibilityDetectorController.instance.notifyNow(); VisibilityDetectorController.instance.notifyNow();
}
WidgetsBinding.instance.addPostFrameCallback((_) {
notify();
WidgetsBinding.instance.addPostFrameCallback((_) {
notify();
WidgetsBinding.instance.addPostFrameCallback((_) {
notify();
}); });
});
});
Future<void>.delayed(const Duration(milliseconds: 80), notify);
Future<void>.delayed(const Duration(milliseconds: 220), notify);
} }
@override @override