Skip to content

PageStorage.of(context) can return null in StreamBuilder #110

Open
@cornerman

Description

@cornerman

I have a ScrollablePositionedList in a StreamBuilder. When the stream triggers, I get an error:

I/flutter (20336): ══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
I/flutter (20336): The following NoSuchMethodError was thrown building StreamBuilder<Widget>(state:
I/flutter (20336): _StreamBuilderBaseState<Widget, AsyncSnapshot<Widget>>#5db9a):
I/flutter (20336): The method 'readState' was called on null.
I/flutter (20336): Receiver: null
I/flutter (20336): Tried calling: readState(Instance of 'StatefulElement')
I/flutter (20336): 
I/flutter (20336): The relevant error-causing widget was:
I/flutter (20336):   StreamBuilder<Widget> file:///home/cornerman/projects/listo/lib/util/stream_ext.dart:8:46
I/flutter (20336): 
I/flutter (20336): When the exception was thrown, this was the stack:
I/flutter (20336): #0      Object.noSuchMethod (dart:core-patch/object_patch.dart:53:5)
I/flutter (20336): #1      _ScrollablePositionedListState.initState (package:scrollable_positioned_list/src/scrollable_positioned_list.dart:221:60)
I/flutter (20336): #2      StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4355:58)
I/flutter (20336): #3      ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
I/flutter (20336): #4      Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (20336): #5      Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (20336): #6      SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5445:14)
I/flutter (20336): #7      Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
I/flutter (20336): #8      Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
I/flutter (20336): #9      ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
I/flutter (20336): #10     Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
I/flutter (20336): #11     BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2432:33)
I/flutter (20336): #12     WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:773:20)
I/flutter (20336): #13     RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:283:5)
I/flutter (20336): #14     SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1102:15)
I/flutter (20336): #15     SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1041:9)
I/flutter (20336): #16     SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:957:5)
I/flutter (20336): #20     _invoke (dart:ui/hooks.dart:259:10)
I/flutter (20336): #21     _drawFrame (dart:ui/hooks.dart:217:3)
I/flutter (20336): (elided 3 frames from package dart:async)
I/flutter (20336): 

Imho, PageStorage.of(context) can return null. What can we do about it? Should we just check for null and then use the default (that is already there in case readState returns null). Furthermore, writeState will fail in these cases.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions