因此,在我的应用中,我希望在小部件挂载后立即发出 AJAX 请求,而不是在initState()中。
initState()
j0pj023g1#
如果Widget没有mounted,则返回。在setState方法之前执行此操作
if (!mounted) return; setState(() {});
或
if (mounted) { //Do something }; setState(() {});
ljo96ir52#
如果您想在小部件加载后立即执行某些代码,您可以简单地将这些代码放入initstate中,如下所示;
initstate
void initState() { super.initState(); WidgetsBinding.instance.addPostFrameCallback((_) => yourFunction(context)); }
通过这种方式,yourFunction将在小工具的第一帧加载到屏幕上时立即执行。
yourFunction
7nbnzgx93#
我觉得现在不太可能。下面是mounted属性:https://github.com/flutter/flutter/blob/master/packages/flutter/lib/src/widgets/framework.dart#L974
mounted
bool get mounted => _element != null;
下面是设置_element时的情况:https://github.com/flutter/flutter/blob/master/packages/flutter/lib/src/widgets/framework.dart#L3816
_element
_state._element = this
我没看到这个代码有什么能告诉我们的。为什么不使用initState呢?这可能正是您想要的。下面是mounted属性上方的注解:https://github.com/flutter/flutter/blob/master/packages/flutter/lib/src/widgets/framework.dart#L967
initState
/// After creating a [State] object and before calling [initState], the /// framework "mounts" the [State] object by associating it with a /// [BuildContext]. The [State] object remains mounted until the framework
jk9hmnmh4#
简单地按照以下步骤操作。
if (this.mounted) { setState(() { //Your code }); }
4si2a6ki5#
我知道这个答案来得有点晚,但是...在你的方法中,你应该有这样的东西:
if(mounted){ setState(() {}); }
这将有助于仅在发生变化时重建UI。我自己在一个方法中使用了这一点,在该方法中,我用来自firestore的用户填充了我的列表。在生成之前尝试调用setState时,mounted属性有助于避免错误。
5条答案
按热度按时间j0pj023g1#
如果Widget没有mounted,则返回。在setState方法之前执行此操作
或
ljo96ir52#
如果您想在小部件加载后立即执行某些代码,您可以简单地将这些代码放入
initstate
中,如下所示;通过这种方式,
yourFunction
将在小工具的第一帧加载到屏幕上时立即执行。7nbnzgx93#
我觉得现在不太可能。
下面是
mounted
属性:https://github.com/flutter/flutter/blob/master/packages/flutter/lib/src/widgets/framework.dart#L974下面是设置
_element
时的情况:https://github.com/flutter/flutter/blob/master/packages/flutter/lib/src/widgets/framework.dart#L3816我没看到这个代码有什么能告诉我们的。
为什么不使用
initState
呢?这可能正是您想要的。下面是mounted
属性上方的注解:https://github.com/flutter/flutter/blob/master/packages/flutter/lib/src/widgets/framework.dart#L967jk9hmnmh4#
简单地按照以下步骤操作。
4si2a6ki5#
我知道这个答案来得有点晚,但是...
在你的方法中,你应该有这样的东西:
这将有助于仅在发生变化时重建UI。我自己在一个方法中使用了这一点,在该方法中,我用来自firestore的用户填充了我的列表。
在生成之前尝试调用setState时,mounted属性有助于避免错误。