From 0cf3b0ed72f0fc1228e5b397a22e769ef84373ff Mon Sep 17 00:00:00 2001 From: flemming-it Date: Sat, 23 May 2026 17:47:23 +0200 Subject: [PATCH] fix(welcome): defer doc-load to didChangeDependencies _DocReaderSheetState.initState() called _load(), which synchronously calls Localizations.localeOf(context) before any await. That triggers dependOnInheritedWidgetOfExactType< _LocalizationsScope>() in initState(), which Flutter forbids because InheritedWidget wiring is not finished yet. Symptom (clicking a doc card in Welcome): dependOnInheritedWidgetOfExactType<_LocalizationsScope>() or dependOnInheritedElement() was called before _DocReaderSheetState.initState() completed. Fix: defer _load() to didChangeDependencies(), which runs after initState() and after InheritedWidget hookup. Gate on _content == null so it runs exactly once per widget lifetime (didChangeDependencies can also fire on later dependency changes; we only want the first load). Signed-off-by: flemming-it --- lib/pages/welcome.dart | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/lib/pages/welcome.dart b/lib/pages/welcome.dart index 017fedc..db2d6a3 100644 --- a/lib/pages/welcome.dart +++ b/lib/pages/welcome.dart @@ -935,12 +935,16 @@ class _DocReaderSheet extends StatefulWidget { } class _DocReaderSheetState extends State<_DocReaderSheet> { - late final Future _content; + Future? _content; @override - void initState() { - super.initState(); - _content = _load(); + void didChangeDependencies() { + super.didChangeDependencies(); + // `_load()` needs `Localizations.localeOf(context)`. That call + // touches InheritedWidgets which aren't safe to read in + // initState() — must wait until didChangeDependencies. We + // gate on `_content == null` so it runs exactly once. + _content ??= _load(); } Future _load() async {