Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use TabBarView with AutomaticKeepAliveClientMixin and with 4 or more pages will cause error #16502

Closed
debuggerx01 opened this issue Apr 12, 2018 · 10 comments
Labels
c: crash Stack traces logged to the console f: material design flutter/packages/flutter/material repository. framework flutter/packages/flutter repository. See also f: labels.

Comments

@debuggerx01
Copy link
Contributor

debuggerx01 commented Apr 12, 2018

What I Try to do

I use the AutomaticKeepAliveClientMixin in my widget , because I want to build a TabView with 4 pages and they can save self's state after scroll Automaticlly.
And I follow the issue #16445 , then switch my flutter channel to master , and yes , AutomaticKeepAlive works now , but I got a crush when I try to switch page 4 from page 1 directly after app launched.

Steps to Reproduce

Here is my demo code :
https://gist.github.com/debuggerx01/69668ff96926d4fddf7a51167045be5b

And I record a gif to show this problem:
tabbatview_issue

Logs

I/flutter ( 6641): ══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
I/flutter ( 6641): The following assertion was thrown building NotificationListener<KeepAliveNotification>:
I/flutter ( 6641): 'package:flutter/src/rendering/object.dart': Failed assertion: line 2732 pos 14:
I/flutter ( 6641): '_debugUltimatePreviousSiblingOf(after, equals: _firstChild)': is not true.
I/flutter ( 6641): 
I/flutter ( 6641): Either the assertion indicates an error in the framework itself, or we should provide substantially
I/flutter ( 6641): more information in this error message to help you determine and fix the underlying cause.
I/flutter ( 6641): In either case, please report this assertion by filing a bug on GitHub:
I/flutter ( 6641):   https://github.com/flutter/flutter/issues/new
I/flutter ( 6641): 
I/flutter ( 6641): When the exception was thrown, this was the stack:
I/flutter ( 6641): #2      _RenderSliverMultiBoxAdaptor&RenderSliver&ContainerRenderObjectMixin._insertIntoChildList (package:flutter/src/rendering/object.dart)
I/flutter ( 6641): #3      _RenderSliverMultiBoxAdaptor&RenderSliver&ContainerRenderObjectMixin.insert (package:flutter/src/rendering/object.dart:2766:5)
I/flutter ( 6641): #4      RenderSliverMultiBoxAdaptor.insert (package:flutter/src/rendering/sliver_multi_box_adaptor.dart:209:11)
I/flutter ( 6641): #5      SliverMultiBoxAdaptorElement.insertChildRenderObject (package:flutter/src/widgets/sliver.dart:849:18)
I/flutter ( 6641): #6      RenderObjectElement.attachRenderObject (package:flutter/src/widgets/framework.dart:4496:35)
I/flutter ( 6641): #7      RenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4262:5)
I/flutter ( 6641): #8      SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4636:11)
I/flutter ( 6641): #9      Element.inflateWidget (package:flutter/src/widgets/framework.dart:2890:14)
I/flutter ( 6641): #10     Element.updateChild (package:flutter/src/widgets/framework.dart:2693:12)
I/flutter ( 6641): #11     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3636:16)
I/flutter ( 6641): #12     Element.rebuild (package:flutter/src/widgets/framework.dart:3478:5)
I/flutter ( 6641): #13     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3605:5)
I/flutter ( 6641): #14     ComponentElement.mount (package:flutter/src/widgets/framework.dart:3600:5)
I/flutter ( 6641): #15     Element.inflateWidget (package:flutter/src/widgets/framework.dart:2890:14)
I/flutter ( 6641): #16     Element.updateChild (package:flutter/src/widgets/framework.dart:2693:12)
I/flutter ( 6641): #17     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3636:16)
I/flutter ( 6641): #18     Element.rebuild (package:flutter/src/widgets/framework.dart:3478:5)
I/flutter ( 6641): #19     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3605:5)
I/flutter ( 6641): #20     ComponentElement.mount (package:flutter/src/widgets/framework.dart:3600:5)
I/flutter ( 6641): #21     ParentDataElement.mount (package:flutter/src/widgets/framework.dart:3938:11)
I/flutter ( 6641): #22     Element.inflateWidget (package:flutter/src/widgets/framework.dart:2890:14)
I/flutter ( 6641): #23     Element.updateChild (package:flutter/src/widgets/framework.dart:2693:12)
I/flutter ( 6641): #24     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3636:16)
I/flutter ( 6641): #25     Element.rebuild (package:flutter/src/widgets/framework.dart:3478:5)
I/flutter ( 6641): #26     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3605:5)
I/flutter ( 6641): #27     StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:3752:11)
I/flutter ( 6641): #28     ComponentElement.mount (package:flutter/src/widgets/framework.dart:3600:5)
I/flutter ( 6641): #29     Element.inflateWidget (package:flutter/src/widgets/framework.dart:2890:14)
I/flutter ( 6641): #30     Element.updateChild (package:flutter/src/widgets/framework.dart:2693:12)
I/flutter ( 6641): #31     SliverMultiBoxAdaptorElement.performRebuild (package:flutter/src/widgets/sliver.dart:702:34)
I/flutter ( 6641): #32     SliverMultiBoxAdaptorElement.update (package:flutter/src/widgets/sliver.dart:671:7)
I/flutter ( 6641): #33     Element.updateChild (package:flutter/src/widgets/framework.dart:2682:15)
I/flutter ( 6641): #34     RenderObjectElement.updateChildren (package:flutter/src/widgets/framework.dart:4362:32)
I/flutter ( 6641): #35     MultiChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:4752:17)
I/flutter ( 6641): #36     _ViewportElement.update (package:flutter/src/widgets/viewport.dart:187:11)
I/flutter ( 6641): #37     Element.updateChild (package:flutter/src/widgets/framework.dart:2682:15)
I/flutter ( 6641): #38     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3636:16)
I/flutter ( 6641): #39     Element.rebuild (package:flutter/src/widgets/framework.dart:3478:5)
I/flutter ( 6641): #40     ProxyElement.update (package:flutter/src/widgets/framework.dart:3892:5)
I/flutter ( 6641): #41     Element.updateChild (package:flutter/src/widgets/framework.dart:2682:15)
I/flutter ( 6641): #42     SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:4644:14)
I/flutter ( 6641): #43     Element.updateChild (package:flutter/src/widgets/framework.dart:2682:15)
I/flutter ( 6641): #44     SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:4644:14)
I/flutter ( 6641): #45     Element.updateChild (package:flutter/src/widgets/framework.dart:2682:15)
I/flutter ( 6641): #46     SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:4644:14)
I/flutter ( 6641): #47     Element.updateChild (package:flutter/src/widgets/framework.dart:2682:15)
I/flutter ( 6641): #48     SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:4644:14)
I/flutter ( 6641): #49     Element.updateChild (package:flutter/src/widgets/framework.dart:2682:15)
I/flutter ( 6641): #50     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3636:16)
I/flutter ( 6641): #51     Element.rebuild (package:flutter/src/widgets/framework.dart:3478:5)
I/flutter ( 6641): #52     StatefulElement.update (package:flutter/src/widgets/framework.dart:3782:5)
I/flutter ( 6641): #53     Element.updateChild (package:flutter/src/widgets/framework.dart:2682:15)
I/flutter ( 6641): #54     SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:4644:14)
I/flutter ( 6641): #55     Element.updateChild (package:flutter/src/widgets/framework.dart:2682:15)
I/flutter ( 6641): #56     SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:4644:14)
I/flutter ( 6641): #57     Element.updateChild (package:flutter/src/widgets/framework.dart:2682:15)
I/flutter ( 6641): #58     SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:4644:14)
I/flutter ( 6641): #59     Element.updateChild (package:flutter/src/widgets/framework.dart:2682:15)
I/flutter ( 6641): #60     SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:4644:14)
I/flutter ( 6641): #61     Element.updateChild (package:flutter/src/widgets/framework.dart:2682:15)
I/flutter ( 6641): #62     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3636:16)
I/flutter ( 6641): #63     Element.rebuild (package:flutter/src/widgets/framework.dart:3478:5)
I/flutter ( 6641): #64     StatelessElement.update (package:flutter/src/widgets/framework.dart:3685:5)
I/flutter ( 6641): #65     Element.updateChild (package:flutter/src/widgets/framework.dart:2682:15)
I/flutter ( 6641): #66     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3636:16)
I/flutter ( 6641): #67     Element.rebuild (package:flutter/src/widgets/framework.dart:3478:5)
I/flutter ( 6641): #68     StatefulElement.update (package:flutter/src/widgets/framework.dart:3782:5)
I/flutter ( 6641): #69     Element.updateChild (package:flutter/src/widgets/framework.dart:2682:15)
I/flutter ( 6641): #70     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3636:16)
I/flutter ( 6641): #71     Element.rebuild (package:flutter/src/widgets/framework.dart:3478:5)
I/flutter ( 6641): #72     StatefulElement.update (package:flutter/src/widgets/framework.dart:3782:5)
I/flutter ( 6641): #73     Element.updateChild (package:flutter/src/widgets/framework.dart:2682:15)
I/flutter ( 6641): #74     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3636:16)
I/flutter ( 6641): #75     Element.rebuild (package:flutter/src/widgets/framework.dart:3478:5)
I/flutter ( 6641): #76     StatelessElement.update (package:flutter/src/widgets/framework.dart:3685:5)
I/flutter ( 6641): #77     Element.updateChild (package:flutter/src/widgets/framework.dart:2682:15)
I/flutter ( 6641): #78     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3636:16)
I/flutter ( 6641): #79     Element.rebuild (package:flutter/src/widgets/framework.dart:3478:5)
I/flutter ( 6641): #80     StatefulElement.update (package:flutter/src/widgets/framework.dart:3782:5)
I/flutter ( 6641): #81     Element.updateChild (package:flutter/src/widgets/framework.dart:2682:15)
I/flutter ( 6641): #82     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3636:16)
I/flutter ( 6641): #83     Element.rebuild (package:flutter/src/widgets/framework.dart:3478:5)
I/flutter ( 6641): #84     StatelessElement.update (package:flutter/src/widgets/framework.dart:3685:5)
I/flutter ( 6641): #85     Element.updateChild (package:flutter/src/widgets/framework.dart:2682:15)
I/flutter ( 6641): #86     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3636:16)
I/flutter ( 6641): #87     Element.rebuild (package:flutter/src/widgets/framework.dart:3478:5)
I/flutter ( 6641): #88     BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2225:33)
I/flutter ( 6641): #89     _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&RendererBinding&WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:621:20)
I/flutter ( 6641): #90     _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:208:5)
I/flutter ( 6641): #91     _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:990:15)
I/flutter ( 6641): #92     _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:930:9)
I/flutter ( 6641): #93     _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:842:5)
I/flutter ( 6641): #94     _invoke (dart:ui/hooks.dart:120:13)
I/flutter ( 6641): #95     _drawFrame (dart:ui/hooks.dart:109:3)
I/flutter ( 6641): (elided 2 frames from class _AssertionError)
I/flutter ( 6641): ════════════════════════════════════════════════════════════════════════════════════════════════════
I/flutter ( 6641): Another exception was thrown: 'package:flutter/src/rendering/object.dart': Failed assertion: line 2732 pos 14: '_debugUltimatePreviousSiblingOf(after, equals: _firstChild)': is not true.
I/flutter ( 6641): Another exception was thrown: 'package:flutter/src/rendering/object.dart': Failed assertion: line 2732 pos 14: '_debugUltimatePreviousSiblingOf(after, equals: _firstChild)': is not true.
I/flutter ( 6641): Another exception was thrown: 'package:flutter/src/rendering/object.dart': Failed assertion: line 2732 pos 14: '_debugUltimatePreviousSiblingOf(after, equals: _firstChild)': is not true.
I/flutter ( 6641): Another exception was thrown: 'package:flutter/src/widgets/framework.dart': Failed assertion: line 3480 pos 14: 'owner._debugCurrentBuildTarget == this': is not true.
I/flutter ( 6641): Another exception was thrown: 'package:flutter/src/widgets/framework.dart': Failed assertion: line 3480 pos 14: 'owner._debugCurrentBuildTarget == this': is not true.
I/flutter ( 6641): Another exception was thrown: 'package:flutter/src/widgets/framework.dart': Failed assertion: line 3480 pos 14: 'owner._debugCurrentBuildTarget == this': is not true.
I/flutter ( 6641): Another exception was thrown: 'package:flutter/src/widgets/framework.dart': Failed assertion: line 3480 pos 14: 'owner._debugCurrentBuildTarget == this': is not true.
I/flutter ( 6641): Another exception was thrown: 'package:flutter/src/widgets/framework.dart': Failed assertion: line 3480 pos 14: 'owner._debugCurrentBuildTarget == this': is not true.
I/flutter ( 6641): Another exception was thrown: 'package:flutter/src/widgets/framework.dart': Failed assertion: line 3480 pos 14: 'owner._debugCurrentBuildTarget == this': is not true.
I/flutter ( 6641): Another exception was thrown: 'package:flutter/src/widgets/framework.dart': Failed assertion: line 3480 pos 14: 'owner._debugCurrentBuildTarget == this': is not true.
I/flutter ( 6641): Another exception was thrown: 'package:flutter/src/widgets/framework.dart': Failed assertion: line 3480 pos 14: 'owner._debugCurrentBuildTarget == this': is not true.
I/flutter ( 6641): Another exception was thrown: 'package:flutter/src/widgets/framework.dart': Failed assertion: line 3480 pos 14: 'owner._debugCurrentBuildTarget == this': is not true.
I/flutter ( 6641): Another exception was thrown: The _ScaffoldLayout custom multichild layout delegate forgot to lay out the following children:`

## Flutter Doctor
`flutter doctor -v
[✓] Flutter (Channel master, v0.2.12-pre.15, on Linux, locale zh_CN.UTF-8)
    • Flutter version 0.2.12-pre.15 at /home/debuggerx/flutter
    • Framework revision da9e1a4aca (3 小时前), 2018-04-11 20:50:25 -0700
    • Engine revision 4db7a00677
    • Dart version 2.0.0-dev.47.0.flutter-4126459025

[✓] Android toolchain - develop for Android devices (Android SDK 27.0.3)
    • Android SDK at /opt/android-sdk
    • Android NDK at /opt/android-sdk/ndk-bundle
    • Platform android-27, build-tools 27.0.3
    • ANDROID_HOME = /opt/android-sdk
    • Java binary at: /opt/android-studio/jre/bin/java
    • Java version openjdk version "1.8.0_152-release"
    • All Android licenses accepted.

[✓] Android Studio (version 3.1)
    • Android Studio at /opt/android-studio
    • Flutter plugin version 23.2.2
    • Dart plugin version 173.4700
    • Java version openjdk version "1.8.0_152-release"

[!] IntelliJ IDEA Ultimate Edition (version 2016.2)
    • IntelliJ at /home/debuggerx/idea
    ✗ Flutter plugin not installed; this adds Flutter specific functionality.
    ✗ Dart plugin not installed; this adds Dart specific functionality.
    • For information about installing plugins, see
      https://flutter.io/intellij-setup/#installing-the-plugins
    ✗ This install is older than the minimum recommended version of 2017.1.0.

[!] IntelliJ IDEA Ultimate Edition (version 2017.2)
    • IntelliJ at /opt/idea
    ✗ Flutter plugin not installed; this adds Flutter specific functionality.
    • Dart plugin version 172.4343.25
    • For information about installing plugins, see
      https://flutter.io/intellij-setup/#installing-the-plugins

[✓] Connected devices (1 available)
    • Custom Phone, 7 1 0, API 25, 768x1280 • 192.168.56.101:5555 • android-x86 • Android 7.1.1 (API 25)
@debuggerx01 debuggerx01 changed the title Use TabBarView with AutomaticKeepAliveClientMixin and with 4 and more pages will cause error Use TabBarView with AutomaticKeepAliveClientMixin and with 4 or more pages will cause error Apr 12, 2018
@debuggerx01
Copy link
Contributor Author

NOT fixed until now (Channel master, v0.3.1-pre.35)
@Hixie

@shitb
Copy link

shitb commented Apr 19, 2018

The same problem.

@Hixie
Copy link
Contributor

Hixie commented Apr 23, 2018

cc @goderbauer This way be related to your recent change?

@goderbauer
Copy link
Member

I just checked, the crash also happens before my change to keep alive (#16445). This is probably an unrelated issue. I can take a closer look once I have some free cycles...

@crazecoder
Copy link

Is there any solution?

@marekchen
Copy link

@Hixie The same problem happened to me.

@Hixie Hixie added c: crash Stack traces logged to the console framework flutter/packages/flutter repository. See also f: labels. f: material design flutter/packages/flutter/material repository. labels May 21, 2018
@Hixie Hixie added this to the Goals milestone May 21, 2018
@JakeyYe
Copy link

JakeyYe commented May 27, 2018

The same problem,me too.

@marekchen
Copy link

#17718

@Hixie
Copy link
Contributor

Hixie commented Jun 12, 2018

Duplicate of #11895.

@Hixie Hixie closed this as completed Jun 12, 2018
@github-actions
Copy link

This thread has been automatically locked since there has not been any recent activity after it was closed. If you are still experiencing a similar issue, please open a new bug, including the output of flutter doctor -v and a minimal reproduction of the issue.

@github-actions github-actions bot locked as resolved and limited conversation to collaborators Aug 15, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
c: crash Stack traces logged to the console f: material design flutter/packages/flutter/material repository. framework flutter/packages/flutter repository. See also f: labels.
Projects
None yet
Development

No branches or pull requests

7 participants