【问题标题】:Flutter navigation destroy and kill page valuesFlutter 导航破坏和杀死页面值
【发布时间】:2021-07-02 20:50:57
【问题描述】:

我有两页,一页是 A,另一页是 B。 A 是我查看正在存储的数据列表的主页, B 是临时的第二页(我的自定义文本编辑器),我在其中输入要保存的不同值,然后在 A 中查看。

当我从 A 去 B 时使用:

Navigator.push(context,MaterialPageRoute(builder: (context) => B_page())); 在我输入数据列表的值并单击保存后,它会将我带到 A 使用 Navigator.of(context).pop();

但是当我再次单击以在 B 中创建另一个数据列表时,页面并未恢复或清理为先前初始化的数据仍然存在,就像页面恢复了一样。

Navigator.of(context).pop(); 有什么替代方法吗?我想销毁并清除在 A 中单击时要重新创建的页面。

例如:TextField 更改为name = 'Name1', nickname = 'Boss', company = 'SmallDoda';index = 8;.pop() 时,第一个初始化值如String name = '', nickname = '', company = '';int index = 1; 然后再次导航到B 值相同index = 8; 而不是index = 1; 我想杀死当前页面重新创建。

【问题讨论】:

  • 请把你称为页面 B 的代码和页面 B 的起始代码放在一起。你说的没有意义,我相信正在发生的事情是你必须传递一些东西到页面B
  • 对此感到抱歉,据我所知Navigator.of(context).pop(); 应该删除一个页面而不是存储任何内容吗?

标签: android ios flutter dart


【解决方案1】:

如果您自己不提供TextField,则会创建一个TextEditingController

我猜有一个对您的 B 页面/屏幕的引用,它将您的 TextField 保留在内存中的该页面上,而不是处理它。所以当你回到B时,TextField和它的TextEditingController还是和之前一样,显示之前的值。

您可以手动控制TextFieldTextEditingController,方法是提供自己的TextEditingController 并在.pop() 返回页面A 时清除其值。

这是另一个answer showing you exactly how

【讨论】:

  • 感谢您的回复,抱歉没有说清楚。在我的程序中,在开始 index=1 时,当我使用 pop(); 时,每次用户在页面 B 中添加对象时我 ++index 不应该清除页面 B 中的所有值吗?因为当我再次创建它时,前一个索引是相同的 index=7 而不是 1。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-22
  • 2017-01-27
  • 1970-01-01
  • 2015-12-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多