- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
每次我离开一个小部件然后返回到它时,我都会收到对该小部件的 initState
方法的“n+1”次调用。
我的设置与此类似。我从小部件 A 开始,当识别到对卡片的点击时,我们执行 Navigator.pushNamed(B.routeName)
以显示该项目的详细信息屏幕。一旦完成了一些额外的处理,用户单击 B 上的“提交”按钮,并使用 Navigator.pushNamed(A.routeName)
返回到 a。
class A extends StatefulWidget {
static String routeName = 'aroutename';
A({Key key}) : super(key: key);
_AState createState() => _AState();
}
class _AState extends State<A> {
@override
void initState() {
super.initState();
getSomeDataForScreenA().then((result) => setState(...));
}
whenDone(){
Navigator.of(context).pushNamed(B.routeName);
}
@override
Widget build(BuildContext context) {
return Container(
);
}
}
class B extends StatefulWidget {
B({Key key}) : super(key: key);
_BState createState() => _BState();
}
class _BState extends State<B> {
static String routeName = 'broutename';
@override
void initState() {
super.initState();
getSomeDataForScreenB().then((result) => setState(...));
}
whenDone(){
Navigator.of(context).pushNamed(A.routeName);
}
@override
Widget build(BuildContext context) {
return Container(
);
}
}
我们第一次看到 A 时,没关系,它只运行一次。然后我们去B,然后一旦我们回到A,就会调用两次initState()。第三次我们做这个循环,它被称为 3 次,等等......
希望有人能在这里指出我做错了什么的正确方向。我知道这可能是由于缺乏对 Navigator.of(context)
内部工作原理的理解,但我似乎无法在任何地方找到答案。
最佳答案
Navigator
像堆栈一样工作。它用于推送和弹出“路由”。最上面的路线是可见的。
这就是你正在做的:
我的猜测是因为堆栈中所有 A 和 B 的 routeName 都相同,所以状态已恢复。
你应该做的是:完成后弹出 B,而不是再次按下 A。
whenDone 应该是这样的:
whenDone(){
Navigator.of(context).pop();
}
关于dart - 多次调用 Flutter Initstate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55582425/
在文档中是这样写的,但我无法理解。 Called when this object is inserted into the tree. The framework will call this me
我正在 initstate 中通过 RestAPI 创建一个企业列表。我需要使用 sharedpreference 值作为其参数之一,但是当我尝试加载数据时,sharepreference 值初始为空
看看这段代码 - 用于获取数据并显示在列表中的小部件: class _MyEventsFragmentState extends State { var events; @override
在我的应用程序中,我有一个抽屉导航,正文根据抽屉中按下的磁贴进行更新。每个类的主体都是相同的,它是一个有状态的小部件并返回一个 ListView 。对于此类的每个实例(以及每个图 block ),我需
我正在使用 initState 并遇到 Navigator 问题: I/flutter ( 5726): The following assertion was thrown building Bui
一直在学习处理flutter中的async函数。我定义了一个 async 函数,并在两个地方调用了它 1。来自 build 函数。 2.来自 initState。 当从 build 函数调用时,函数被
我想在 initState 中创建一个 TextController,然后像处理好 child 一样处理它。但出于某种原因, Controller 在 intiState 之外不可用: class _
我在 initState() 中调用异步函数,但系统实际上等待异步函数的结果。谁能告诉我为什么? 这是我的代码: import 'package:flutter/material.dart'; voi
这个问题在这里已经有了答案: Is there a way to load async data on InitState method? (14 个回答) 2个月前关闭。 Flutter - 有没有
我正在创建 TextEditingController ,并初始化它,我可以做 class _HomePageState extends State { var _controller = Tex
在多次调用的选项卡 initstate() 之间切换。 我的标签栏 A、B、C 和 D 中有 4 个标签。 情况 (1) 如果我像从选项卡 A 切换到选项卡 B 那样切换选项卡,则它工作正常。 情况
我不知道在哪里调用 super.initSate()在 flutter ?在某些代码示例中,它在开头调用,而在其他代码示例中则在结尾调用。有区别吗? 我试图用谷歌搜索,但没有找到关于这个函数调用位置的
我有以下方法: getCalendarEventList() async { print('here we go agsain'); await Firestore.instanc
我是 Flutter 的新手,遇到了一个问题。 我的应用中有一个 Feed 模型,如下所示: import 'package:uuid/uuid.dart'; class Feed { // St
在 StatefulWidget 中制作 AnimationController final 的最佳方法是什么,以下代码会出错。 final AnimationController _controll
我正在 initState(){} 中初始化一个变量: @override void initState() { getDataFromFirestore(); super.ini
我正在开发这个应用程序,您可以在其中导航到带有状态小部件的屏幕,该小部件具有在 initState() 中运行的一堆复杂函数。 由于这些功能,触发导航功能后导航到此屏幕需要将近两秒钟,即非常慢 我的代
我正在使用 Flutter 创建一个应用程序。我想从 firebase 获取数据并显示 GridView 。数据从 firebase 正确获取。 initState() 中的数据获取 但它并没有更新另
initState() 在我路由到的第一个 Widget 上被调用了两次。 我已经删除了 initState() 方法中的所有方法调用和正在完成的工作,以排除它以某种方式调用自身的任何可能性。它所做的
每次我离开一个小部件然后返回到它时,我都会收到对该小部件的 initState 方法的“n+1”次调用。 我的设置与此类似。我从小部件 A 开始,当识别到对卡片的点击时,我们执行 Navigator.
我是一名优秀的程序员,十分优秀!