flutter - 在 Null-Safety Flutter 上构建期间调用的 setState() 或 markNeedsBuild()
问题描述
有人可以解释一下这个错误的含义以及如何解决它吗?
我在更新 null-safety 后得到了它,不知道如何修复它。
我已经在 stackoverflow 上检查了其他线程,但无法理解问题所在。也许有人可以以更好的方式向我解释。
每次我从主页切换到另一个页面时都会出现
setState() or markNeedsBuild() called during build.
This _InheritedProviderScope<JourneyProvider?> widget cannot be marked as needing to build because the framework is already in the process of building widgets. A widget can be marked as needing to be built during the build phase only if one of its ancestors is currently building. This exception is allowed because the framework builds parent widgets before children, which means a dirty descendant will always be built. Otherwise, the framework might not visit this widget during this build phase.
The widget on which setState() or markNeedsBuild() was called was: _InheritedProviderScope<JourneyProvider?>
value: Instance of 'JourneyProvider'
listening to value
The widget which was currently being built when the offending call was made was: Builder
When the exception was thrown, this was the stack:
#0 Element.markNeedsBuild.<anonymous closure> (package:flutter/src/widgets/framework.dart:4305:11)
#1 Element.markNeedsBuild (package:flutter/src/widgets/framework.dart:4320:6)
#2 _InheritedProviderScopeElement.markNeedsNotifyDependents (package:provider/src/inherited_provider.dart:570:5)
#3 ChangeNotifier.notifyListeners (package:flutter/src/foundation/change_notifier.dart:308:24)
#4 JourneyProvider.getMyJourney (package:PinkDrive/providers/journeyProvider.dart:303:5)
#5 MyJourneyState.initData (package:PinkDrive/views/journey/myJounrey.dart:55:58)
#6 MyJourneyState.initState (package:PinkDrive/views/journey/myJounrey.dart:49:9)
#7 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4805:57)
#8 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4638:5)
... Normal element mounting (169 frames)
#177 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3673:14)
#178 MultiChildRenderObjectElement.inflateWidget (package:flutter/src/widgets/framework.dart:6333:36)
#179 Element.updateChild (package:flutter/src/widgets/framework.dart:3425:18)
#180 RenderObjectElement.updateChildren (package:flutter/src/widgets/framework.dart:5758:32)
#181 MultiChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6356:17)
#182 Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
#183 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4690:16)
#184 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4840:11)
#185 Element.rebuild (package:flutter/src/widgets/framework.dart:4355:5)
#186 StatefulElement.update (package:flutter/src/widgets/framework.dart:4872:5)
#187 Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
#188 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4690:16)
#189 Element.rebuild (package:flutter/src/widgets/framework.dart:4355:5)
#190 ProxyElement.update (package:flutter/src/widgets/framework.dart:5020:5)
#191 Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
#192 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4690:16)
#193 Element.rebuild (package:flutter/src/widgets/framework.dart:4355:5)
#194 ProxyElement.update (package:flutter/src/widgets/framework.dart:5020:5)
#195 _InheritedNotifierElement.update (package:flutter/src/widgets/inherited_notifier.dart:181:11)
#196 Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
#197 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6202:14)
#198 Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
#199 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4690:16)
#200 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4840:11)
#201 Element.rebuild (package:flutter/src/widgets/framework.dart:4355:5)
#202 StatefulElement.update (package:flutter/src/widgets/framework.dart:4872:5)
#203 Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
#204 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6202:14)
#205 Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
#206 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6202:14)
#207 Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
#208 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4690:16)
#209 Element.rebuild (package:flutter/src/widgets/framework.dart:4355:5)
#210 ProxyElement.update (package:flutter/src/widgets/framework.dart:5020:5)
#211 Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
#212 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4690:16)
#213 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4840:11)
#214 Element.rebuild (package:flutter/src/widgets/framework.dart:4355:5)
#215 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2620:33)
#216 WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:882:21)
#217 RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:319:5)
#218 SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1143:15)
#219 SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1080:9)
#220 SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:996:5)
#224 _invoke (dart:ui/hooks.dart:166:10)
#225 PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:270:5)
#226 _drawFrame (dart:ui/hooks.dart:129:31)
(elided 3 frames from dart:async)
The JourneyProvider sending notification was: Instance of 'JourneyProvider'
解决方案
推荐阅读
- recaptcha - 即使失败,reCaptcha 也会显示成功消息
- python - 如何以最佳方式基于子字符串列表从字符串的数据框列中获取子字符串列表?
- sql - 不断收到错误说明错误:用于编码“UTF8”的无效字节序列:0x93
- javascript - 使用 mongorestore 将许多文档插入临时集合
- .net - VB.NET Executereader 切换到中文时内存不足
- javascript - Animated.Image 上的 React Native 交错动画接收 TypeError: undefined is not an object (evalating 'value.getValue')
- r - 在本地闪亮的应用程序中保持会话连接
- git - 在本地开发期间将特定的 Maven 依赖项设置为最新版本
- reactjs - 没有当前用户 AWS Amplify 身份验证错误 - 无需登录即可访问
- angular - 如何通过字符串动态创建 Angular 类组件和模板 HTML