问题标签 [statefulwidget]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
string - 将值复制到另一个 StatefulWidget
我试图重建这个视频的代码(https://www.youtube.com/watch?v=d5PpeNb-dOY),这是关于如何将一个String
值复制到另一个StatefulWidget
,但现在我得到了BodyConstructionState(value)
红色下划线,它说“位置参数太多:预期为 0,但找到了 1。 ”Value
来自另一个小部件。我不知道为什么,因为我的做法和视频中的那个人一样。谁能告诉我我的错误是什么?提前致谢!
flutter - 更改 Flutter 有状态小部件的最终小部件变量而状态变量不更改的原因
考虑以下代码片段:
在上面的代码中,每次调用_CustomStateFulWidget的build 方法时,navigatorKeyFinal 变量的值都会发生变化,但 navigatorKeyLocal 变量保持不变。谁能解释我这种行为的原因?
flutter - 当我在颤动中执行 setState 时,下拉字段的值属性不会更新
我正在从 API 动态更新下拉表。当我选择一个小时时,会从 API 中检索相应的主题。
假设我在几个小时之间切换。
第 5 小时有科目 A 和 B,而第 4 小时只有科目 B。
最初选择第 5 小时时,选择 A 作为所选主题。
当我选择第 4 小时时,新列表是从 API 获得的,但我得到“项目不在 dropdownbuttonitemlist 错误中”。
我知道这是因为 DropDownMenuField 的 value 属性,这就是为什么我在从 API 成功检索信息时将值设置为 null 的原因。
片段如下:
下拉按钮:
setState 方法(在 API 成功获取时调用):
subjectController 被定义为 State 类的一个属性。
这是错误:
提前谢谢你的帮助!
flutter - 如何访问 Statefulwidget 中传递的值?
我将一个String
从另一个传递StatefulWidget
到下面CardItem StatefulWidget
,然后从这里String
传递到_CardItemState
下面的代码中。但是String
应该如何访问这个传递的_CardItemState(String itemTitle);
flutter - 带有 statefull 小部件的 Flutter listview builder 不会使用父小部件中的设置状态进行更新
我使用有状态小部件创建的 listviewbuilder 仅在滚动时更新。当我使用无状态小部件时,它会完美重新加载,但它不适用于有状态,我有一个调用数据获取方法的 RefreshIndicator,我不知道出了什么问题,有人可以帮忙吗?
我的数据检索方法 =>
初始化状态 =>
}
身体=>
flutter - 通过 Draggable&DragTarget 重新排序时如何保持我的小部件状态?
我正在使用这个reorderables包。这个包的工作原理是有一个子小部件列表,每个小部件都用Draggable包装并放在DragTarget中。在此之前 childs 键被分配给GlobalObjectKey。
在创建 dragTarget 之后,它被分配(或重建?)到KeyedSubTree:
dragTarget = KeyedSubtree(key: keyIndexGlobalKey, child: dragTarget);
根据包源代码中的注释,这应该在拖动时保留子小部件状态(toWrap):
// 我们将 toWrapWithGlobalKey 传递给 Draggable,这样当列表
项被拖动时,// 可访问性框架可以保留
拖动项的选中状态。
最终 GlobalObjectKey keyIndexGlobalKey = GlobalObjectKey(toWrap.key);
重新排序本身不是发生在 DragTarget 接受 Draggable 拖入其中的情况下,而是通过在每个子项周围使用 DragTarget 来获取 Draggable 悬停在当前位置的索引。当放开 Draggable 时,将调用一个重新排序函数,该函数从列表中删除(被拖动的)小部件并将其插入到新位置。
现在出现了我的问题:小部件的状态没有被保留。我做了一个简单的 TestWidget 来测试这个:
这个小部件有一个带有初始蓝色背景 (boxColor) 的容器和一个按钮。当按下按钮时,它会将 boxColor 更改为红色。开始拖动小部件的那一刻,它被重建并默认为初始状态(至少 Draggable 反馈是)。重新排序后不会更改并且小部件仍处于默认状态。
我的计划是列出不同的自定义小部件,用户可以在其中修改他们的内容,如果他们对订单不满意,他们可以拖动这些小部件并重新排列它们。
我的问题是:如何保留小部件的状态?
我正在考虑为每个带有所有状态相关变量的小部件创建一个类,并使用它来构建我的小部件,但这似乎非常臃肿,而且并不真正考虑到颤动。那不应该是StatefulWidget的状态的作用吗?
编辑:
所以我解决了我的问题,方法是使用ChangeNotifier为我的小部件状态创建一个额外的类,然后将我想要跟踪的所有变量移动到这个类中。所以我现在基本上有两个列表,一个用于可重新排序列表中的小部件,另一个用于它们的状态。我仍然认为这有点磨损。如果我的列表中的一个小部件有自己的其他子级,我需要为每个需要它的子级创建单独的状态类并将它们保存在某个地方。这会变得非常混乱,非常快。
flutter - Flutter 在重新创建 Widget 时重置 StatefulWidget 状态
在我的 Flutter 小部件中,我有一个StreamBuilder
检查snapshot.hasError
,在这种特定情况下,它将返回我的ErrorRetryWidget()
.
只是显示ErrorRetryWidget()
一条错误消息和一个重试按钮。当您按下此按钮时,我将按钮文本替换为进度指示器。因此我需要使这个小部件有状态,因为它的状态包含一个isRetrying
我在 中设置为 false 的变量,initState
然后在按下后设置为 true。
按下按钮时,ErrorRetryWidget
通过 a 告诉父VoidCallback
级重新触发流逻辑。它运作良好,但问题是如果错误再次出现,我StreamBuilder
将ErrorRetryWidget
再次“返回”。
构造函数被称为新时间,但不是initState
。我怎样才能让它在每次重新创建小部件时重置状态?因此,isRetrying
已经(或仍然)设置为 true。
我发现的唯一快速解决方案是在我的错误小部件中实现这一点:
不确定这是一个好习惯。
flutter - 在构建 Widget 之前 Flutter 初始化变量
我正在尝试启动“水表”。当我打开应用程序时,应该生成此值。我的问题是,当我构建小部件时,它不会呈现实际值。只有当我转到另一个屏幕或热重载屏幕时,它才会呈现值。在这里我计算并设置状态。
后来在我的构建方法中,我使用了我为我的小部件全局定义的这个变量
显然我做错了什么,因为没有直接设置状态。运行此集合状态“plantDate()”的函数在另一个小部件中被调用。
有人有想法吗?
编辑:这是完整课程的代码https://pastebin.com/N4M55YnA
EDIT2: 是那样做的,但不是那样工作的。
flutter - Flutter StatefulWidget 不会更新
所以我有一个小部件和内部构建方法:
当我在另一个函数中调用 setState 时,小部件不会更新。它仍然会显示旧的“swipeTile”。
我已经尝试过使用 Container 并在小时候使用滑动磁贴为其分配唯一键。这确实有效,但后来我收到了以下错误消息:'package:flutter/src/widgets/framework.dart': Failed assertion: line 4606 pos 12: '_state._element == null': is not true。