Crash: Scaffold.of() called with a context that does not contain a Scaffold. #397

Closed
opened 2026-06-04 01:16:20 +00:00 by guettli · 1 comment
guettli commented 2026-06-04 01:16:20 +00:00 (Migrated from codeberg.org)

App Version: 0.1.1+1780534970
Build Mode: release
Git Commit: 09e20dd
Platform: android S1RXS32.50-13-25
Dart: 3.12.0 (stable) (Fri May 8 01:51:14 2026 -0700) on "android_arm64"
Timestamp: 2026-06-04T01:15:43.565673Z

Error:

Scaffold.of() called with a context that does not contain a Scaffold.

Stack Trace:

#0      Scaffold.of (package:flutter/src/material/scaffold.dart:2051)
#1      MailboxListScreen.build.<anonymous closure> (package:sharedinbox/ui/screens/mailbox_list_screen.dart:57)
#2      _InkResponseState.handleTap (package:flutter/src/material/ink_well.dart:1224)
#3      GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:345)
#4      TapGestureRecognizer.handleTapUp (package:flutter/src/gestures/tap.dart:758)
#5      BaseTapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:383)
#6      BaseTapGestureRecognizer.acceptGesture (package:flutter/src/gestures/tap.dart:353)
#7      GestureArenaManager.sweep (package:flutter/src/gestures/arena.dart:173)
#8      GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:532)
#9      GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:498)
#10     RendererBinding.dispatchEvent (package:flutter/src/rendering/binding.dart:473)
#11     GestureBinding._handlePointerEventImmediately (package:flutter/src/gestures/binding.dart:437)
#12     GestureBinding.handlePointerEvent (package:flutter/src/gestures/binding.dart:394)
#13     GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:341)
#14     GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:308)
#15     _rootRunUnary (dart:async/zone_root.dart:56)
#16     _CustomZone.runUnary (dart:async/zone.dart:733)
#17     _CustomZone.runUnaryGuarded (dart:async/zone.dart:633)
#18     _invoke1 (dart:ui/hooks.dart:441)
#19     PlatformDispatcher._dispatchPointerDataPacket (dart:ui/platform_dispatcher.dart:470)
#20     _dispatchPointerDataPacket (dart:ui/hooks.dart:374)

App Version: [0.1.1+1780534970](https://codeberg.org/guettli/sharedinbox/commit/09e20dd) Build Mode: release Git Commit: [09e20dd](https://codeberg.org/guettli/sharedinbox/commit/09e20dd) Platform: android S1RXS32.50-13-25 Dart: 3.12.0 (stable) (Fri May 8 01:51:14 2026 -0700) on "android_arm64" Timestamp: 2026-06-04T01:15:43.565673Z Error: ``` Scaffold.of() called with a context that does not contain a Scaffold. ``` Stack Trace: ``` #0 Scaffold.of (package:flutter/src/material/scaffold.dart:2051) #1 MailboxListScreen.build.<anonymous closure> (package:sharedinbox/ui/screens/mailbox_list_screen.dart:57) #2 _InkResponseState.handleTap (package:flutter/src/material/ink_well.dart:1224) #3 GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:345) #4 TapGestureRecognizer.handleTapUp (package:flutter/src/gestures/tap.dart:758) #5 BaseTapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:383) #6 BaseTapGestureRecognizer.acceptGesture (package:flutter/src/gestures/tap.dart:353) #7 GestureArenaManager.sweep (package:flutter/src/gestures/arena.dart:173) #8 GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:532) #9 GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:498) #10 RendererBinding.dispatchEvent (package:flutter/src/rendering/binding.dart:473) #11 GestureBinding._handlePointerEventImmediately (package:flutter/src/gestures/binding.dart:437) #12 GestureBinding.handlePointerEvent (package:flutter/src/gestures/binding.dart:394) #13 GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:341) #14 GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:308) #15 _rootRunUnary (dart:async/zone_root.dart:56) #16 _CustomZone.runUnary (dart:async/zone.dart:733) #17 _CustomZone.runUnaryGuarded (dart:async/zone.dart:633) #18 _invoke1 (dart:ui/hooks.dart:441) #19 PlatformDispatcher._dispatchPointerDataPacket (dart:ui/platform_dispatcher.dart:470) #20 _dispatchPointerDataPacket (dart:ui/hooks.dart:374) ```
guettlibot commented 2026-06-04 02:10:03 +00:00 (Migrated from codeberg.org)

PR created: https://codeberg.org/guettli/sharedinbox/pulls/403


What I did:

The crash at mailbox_list_screen.dart:57 was caused by calling Scaffold.of(context) with the widget's own build context. When build returns the Scaffold, that Scaffold is a child of the current context — so Scaffold.of(context) finds no ancestor Scaffold and throws.

Fix: Wrapped the IconButton in a Builder widget, which provides a new ctx that is a descendant of the Scaffold. Scaffold.of(ctx) then correctly resolves to the enclosing Scaffold and opens the drawer.

This is a one-line-of-logic change in lib/ui/screens/mailbox_list_screen.dart.

PR created: https://codeberg.org/guettli/sharedinbox/pulls/403 --- **What I did:** The crash at `mailbox_list_screen.dart:57` was caused by calling `Scaffold.of(context)` with the widget's own `build` context. When `build` returns the `Scaffold`, that `Scaffold` is a *child* of the current context — so `Scaffold.of(context)` finds no ancestor `Scaffold` and throws. **Fix:** Wrapped the `IconButton` in a `Builder` widget, which provides a new `ctx` that is a descendant of the `Scaffold`. `Scaffold.of(ctx)` then correctly resolves to the enclosing `Scaffold` and opens the drawer. This is a one-line-of-logic change in `lib/ui/screens/mailbox_list_screen.dart`.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: guettli/sharedinbox#397