alibaba / alibaba/flutter_boost
[Bug]:使用了tabbarview第一次进入白屏
- Dominant language
- Dart
- Stars
- 7.2k
- Forks
- 1.3k
- PR merge metrics
- No merged PRs in 30d
Description
### 请描述遇到的问题,以及您所期望的正确的结果
用boost打开过页面,进入就不会白屏,第一次打开必现白屏
### 请说明如何操作会遇到上述问题
_No response_
### 在下面填入关键复现代码
```
```
2023-08-15 12:07:31.939924+0800 flutterDemo[86492:12250965] flutter: Null check operator used on a null value
2023-08-15 12:07:31.941630+0800 flutterDemo[86492:12250965] flutter: #0 _PagePosition.applyViewportDimension (package:flutter/src/widgets/page_view.dart:455)
2023-08-15 12:07:31.941724+0800 flutterDemo[86492:12250965] flutter: #1 RenderViewport.performLayout (package:flutter/src/rendering/viewport.dart:1456)
2023-08-15 12:07:31.941758+0800 flutterDemo[86492:12250965] flutter: #2 RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
2023-08-15 12:07:31.941814+0800 flutterDemo[86492:12250965] flutter: #3 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116)
2023-08-15 12:07:31.941848+0800 flutterDemo[86492:12250965] flutter: #4 RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
2023-08-15 12:07:31.941873+0800 flutterDemo[86492:12250965] flutter: #5 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116)
2023-08-15 12:07:31.941897+0800 flutterDemo[86492:12250965] flutter: #6 RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
2023-08-15 12:07:31.941921+0800 flutterDemo[86492:12250965] flutter: #7 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116)
2023-08-15 12:07:31.941944+0800 flutterDemo[86492:12250965] flutter: #8 RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
2023-08-15 12:07:31.941968+0800 flutterDemo[86492:12250965] flutter: #9 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116)
2023-08-15 12:07:31.941991+0800 flutterDemo[86492:12250965] flutter: #10 RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
2023-08-15 12:07:31.942015+0800 flutterDemo[86492:12250965] flutter: #11 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116)
2023-08-15 12:07:31.942041+0800 flutterDemo[86492:12250965] flutter: #12 RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
2023-08-15 12:07:31.942064+0800 flutterDemo[86492:12250965] flutter: #13 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116)
2023-08-15 12:07:31.942087+0800 flutterDemo[86492:12250965] flutter: #14 RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
2023-08-15 12:07:31.942110+0800 flutterDemo[86492:12250965] flutter: #15 ChildLayoutHelper.layoutChild (package:flutter/src/rendering/layout_helper.dart:56)
2023-08-15 12:07:31.942308+0800 flutterDemo[86492:12250965] flutter: #16 RenderFlex._computeSizes (package:flutter/src/rendering/flex.dart:896)
2023-08-15 12:07:31.942338+0800 flutterDemo[86492:12250965] flutter: #17 RenderFlex.performLayout (package:flutter/src/rendering/flex.dart:931)
2023-08-15 12:07:31.942362+0800 flutterDemo[86492:12250965] flutter: #18 RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
2023-08-15 12:07:31.942385+0800 flutterDemo[86492:12250965] flutter: #19 MultiChildLayoutDelegate.layoutChild (package:flutter/src/rendering/custom_layout.dart:171)
2023-08-15 12:07:31.942411+0800 flutterDemo[86492:12250965] flutter: #20 _ScaffoldLayout.performLayout (package:flutter/src/material/scaffold.dart:1003)
2023-08-15 12:07:31.942435+0800 flutterDemo[86492:12250965] flutter: #21 MultiChildLayoutDelegate._callPerformLayout (package:flutter/src/rendering/custom_layout.dart:240)
2023-08-15 12:07:31.942459+0800 flutterDemo[86492:12250965] flutter: #22 RenderCustomMultiChildLayoutBox.performLayout (package:flutter/src/rendering/custom_layout.dart:403)
2023-08-15 12:07:31.942483+0800 flutterDemo[86492:12250965] flutter: #23 RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
2023-08-15 12:07:31.942506+0800 flutterDemo[86492:12250965] flutter: #24 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116)
2023-08-15 12:07:31.942530+0800 flutterDemo[86492:12250965] flutter: #25 RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
2023-08-15 12:07:31.942552+0800 flutterDemo[86492:12250965] flutter: #26 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116)
2023-08-15 12:07:31.942744+0800 flutterDemo[86492:12250965] flutter: #27 _RenderCustomClip.performLayout (package:flutter/src/rendering/proxy_box.dart:1376)
2023-08-15 12:07:31.942772+0800 flutterDemo[86492:12250965] flutter: #28 RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
2023-08-15 12:07:31.942795+0800 flutterDemo[86492:12250965] flutter: #29 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116)
2023-08-15 12:07:31.942818+0800 flutterDemo[86492:12250965] flutter: #30 RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
2023-08-15 12:07:31.942844+0800 flutterDemo[86492:12250965] flutter: #31 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116)
2023-08-15 12:07:31.942866+0800 flutterDemo[86492:12250965] flutter: #32 RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
2023-08-15 12:07:31.943638+0800 flutterDemo[86492:12250965] flutter: #33 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116)
2023-08-15 12:07:31.943666+0800 flutterDemo[86492:12250965] flutter: #34 RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
2023-08-15 12:07:31.943689+0800 flutterDemo[86492:12250965] flutter: #35 ChildLayoutHelper.layoutChild (package:flutter/src/rendering/layout_helper.dart:56)
2023-08-15 12:07:31.943712+0800 flutterDemo[86492:12250965] flutter: #36 RenderStack._computeSize (package:flutter/src/rendering/stack.dart:552)
2023-08-15 12:07:31.943734+0800 flutterDemo[86492:12250965] flutter: #37 RenderStack.performLayout (package:flutter/src/rendering/stack.dart:579)
2023-08-15 12:07:31.943758+0800 flutterDemo[86492:12250965] flutter: #38 RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
2023-08-15 12:07:31.944725+0800 flutterDemo[86492:12250965] flutter: #39 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116)
2023-08-15 12:07:31.944752+0800 flutterDemo[86492:12250965] flutter: #40 RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
2023-08-15 12:07:31.944775+0800 flutterDemo[86492:12250965] flutter: #41 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116)
2023-08-15 12:07:31.944799+0800 flutterDemo[86492:12250965] flutter: #42 RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
2023-08-15 12:07:31.944822+0800 flutterDemo[86492:12250965] flutter: #43 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116)
2023-08-15 12:07:31.944845+0800 flutterDemo[86492:12250965] flutter: #44 RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
2023-08-15 12:07:31.944869+0800 flutterDemo[86492:12250965] flutter: #45 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116)
2023-08-15 12:07:31.944893+0800 flutterDemo[86492:12250965] flutter: #46 RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
2023-08-15 12:07:31.944917+0800 flutterDemo[86492:12250965] flutter: #47 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116)
2023-08-15 12:07:31.945050+0800 flutterDemo[86492:12250965] flutter: #48 RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
2023-08-15 12:07:31.945081+0800 flutterDemo[86492:12250965] flutter: #49 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116)
2023-08-15 12:07:31.945105+0800 flutterDemo[86492:12250965] flutter: #50 RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
2023-08-15 12:07:31.945129+0800 flutterDemo[86492:12250965] flutter: #51 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116)
2023-08-15 12:07:31.945152+0800 flutterDemo[86492:12250965] flutter: #52 RenderOffstage.performLayout (package:flutter/src/rendering/proxy_box.dart:3462)
2023-08-15 12:07:31.945174+0800 flutterDemo[86492:12250965] flutter: #53 RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
2023-08-15 12:07:31.945197+0800 flutterDemo[86492:12250965] flutter: #54 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116)
2023-08-15 12:07:31.945220+0800 flutterDemo[86492:12250965] flutter: #55 RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
2023-08-15 12:07:31.945245+0800 flutterDemo[86492:12250965] flutter: #56 _RenderTheatre.performLayout (package:flutter/src/widgets/overlay.dart:749)
2023-08-15 12:07:31.945268+0800 flutterDemo[86492:12250965] flutter: #57 RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
2023-08-15 12:07:31.945291+0800 flutterDemo[86492:12250965] flutter: #58 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116)
2023-08-15 12:07:31.945317+0800 flutterDemo[86492:12250965] flutter: #59 RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
2023-08-15 12:07:31.945340+0800 flutterDemo[86492:12250965] flutter: #60 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116)
2023-08-15 12:07:31.945362+0800 flutterDemo[86492:12250965] flutter: #61 RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
2023-08-15 12:07:31.945385+0800 flutterDemo[86492:12250965] flutter: #62 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116)
2023-08-15 12:07:31.945408+0800 flutterDemo[86492:12250965] flutter: #63 RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
2023-08-15 12:07:31.945430+0800 flutterDemo[86492:12250965] flutter: #64 _RenderTheatre.performLayout (package:flutter/src/widgets/overlay.dart:749)
2023-08-15 12:07:31.945540+0800 flutterDemo[86492:12250965] flutter: #65 RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
2023-08-15 12:07:31.945565+0800 flutterDemo[86492:12250965] flutter: #66 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116)
2023-08-15 12:07:31.945588+0800 flutterDemo[86492:12250965] flutter: #67 RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
2023-08-15 12:07:31.945612+0800 flutterDemo[86492:12250965] flutter: #68 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116)
2023-08-15 12:07:31.945635+0800 flutterDemo[86492:12250965] flutter: #69 RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
2023-08-15 12:07:31.945658+0800 flutterDemo[86492:12250965] flutter: #70 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116)
2023-08-15 12:07:31.945680+0800 flutterDemo[86492:12250965] flutter: #71 RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
2023-08-15 12:07:31.945704+0800 flutterDemo[86492:12250965] flutter: #72 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116)
2023-08-15 12:07:31.945730+0800 flutterDemo[86492:12250965] flutter: #73 RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
2023-08-15 12:07:31.945752+0800 flutterDemo[86492:12250965] flutter: #74 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116)
2023-08-15 12:07:31.945775+0800 flutterDemo[86492:12250965] flutter: #75 RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
2023-08-15 12:07:31.945798+0800 flutterDemo[86492:12250965] flutter: #76 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116)
2023-08-15 12:07:31.945821+0800 flutterDemo[86492:12250965] flutter: #77 RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
2023-08-15 12:07:31.945843+0800 flutterDemo[86492:12250965] flutter: #78 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116)
2023-08-15 12:07:31.945866+0800 flutterDemo[86492:12250965] flutter: #79 RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
2023-08-15 12:07:31.945888+0800 flutterDemo[86492:12250965] flutter: #80 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116)
2023-08-15 12:07:31.945911+0800 flutterDemo[86492:12250965] flutter: #81 RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
2023-08-15 12:07:31.945935+0800 flutterDemo[86492:12250965] flutter: #82 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116)
2023-08-15 12:07:31.946008+0800 flutterDemo[86492:12250965] flutter: #83 RenderObject.layout (package:flutter/src/rendering/object.dart:1915)
2023-08-15 12:07:31.946032+0800 flutterDemo[86492:12250965] flutter: #84 RenderView.performLayout (package:flutter/src/rendering/view.dart:165)
2023-08-15 12:07:31.946055+0800 flutterDemo[86492:12250965] flutter: #85 RenderObject._layoutWithoutResize (package:flutter/src/rendering/object.dart:1757)
2023-08-15 12:07:31.946078+0800 flutterDemo[86492:12250965] flutter: #86 PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:887)
2023-08-15 12:07:31.946328+0800 flutterDemo[86492:12250965] flutter: #87 RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:504)
2023-08-15 12:07:31.946357+0800 flutterDemo[86492:12250965] flutter: #88 WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:892)
2023-08-15 12:07:31.946380+0800 flutterDemo[86492:12250965] flutter: #89 RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:370)
2023-08-15 12:07:31.946404+0800 flutterDemo[86492:12250965] flutter: #90 SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1146)
2023-08-15 12:07:31.946427+0800 flutterDemo[86492:12250965] flutter: #91 SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1083)
2023-08-15 12:07:31.946450+0800 flutterDemo[86492:12250965] flutter: #92 SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:997)
2023-08-15 12:07:31.946473+0800 flutterDemo[86492:12250965] flutter: #96 _invoke (dart:ui/hooks.dart:151)
2023-08-15 12:07:31.946495+0800 flutterDemo[86492:12250965] flutter: #97 PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:308)
2023-08-15 12:07:31.946519+0800 flutterDemo[86492:12250965] flutter: #98 _drawFrame (dart:ui/hooks.dart:115)
2023-08-15 12:07:31.946543+0800 flutterDemo[86492:12250965] flutter: (elided 3 frames from dart:async)
### 复现的平台
Both
### Flutter SDK版本
3.0.0
### FlutterBoost版本
4.4.0
### 是否延迟初始化FlutterBoost
No
### 解决方案
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by reproducing the first-entry TabBarView white screen in the reported iOS setup and inspect the stack trace at Flutter's page_view.dart, especially _PagePosition.applyViewportDimension, with the surrounding viewport layout calls. Done means the page opens on the first attempt without a white screen or the reported null-check exception.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- dart, ios
- Domain
- mobile-dev
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100