如何在Flutter中导航返回时自动重置窗体

tvz2xvvm  于 2023-05-30  发布在  Flutter
关注(0)|答案(3)|浏览(140)

我有一个屏幕必须textformfield 1- customAmountController,2-messageController和我填写,并转到下一个屏幕,但当我从这个屏幕弹出到我的窗体屏幕我的2 textformfiled应该是空的,所以我怎么能做到这一点

2w3kk1z5

2w3kk1z51#

你的问题不是很清楚,但我假设你不希望在访问某个页面之间保持更改。通过代码,我们还可以确定问题发生的确切原因,因此我将继续演绎提出可能的问题。

**可能的问题#1:**更改持久化可能是由于TextEditingController的范围比页面小部件更高。如果控制器不是另一个作用域的控制器,那么每次页面加载时,它都将重置为初始状态。可以通过在页的生成方法中重置控制器或在类内部移动控制器来解决此问题。
**可能的问题#2:**另一个可能的问题是,当使用pop方法导航到页面时,页面不会被重新加载。如果方法1不起作用,请尝试使用以下方法导航离开此页面:Navigator.of(context).pushNamed("/myRoute").then((value) => setState(() {})); Popping在此之后肯定会重新加载页面(如果它是一个有状态的小部件)。如果您提供代码,我可以告诉您,而不必猜测问题。

w8rqjzmb

w8rqjzmb2#

你可以使用whenComplete()来清除你的TextEditingControllers,下面是一个例子:

Navigator.of(context).push(
  MaterialPageRoute(builder: (context) => YourPage()),
).whenComplete(() {
  customAmountController.clear();
  messageController.clear();
});

在此代码片段中,whenComplete()用于在导航到YourPage页面后清除TextEditingControllerscustomAmountControllermessageController)。这确保了当用户从YourPage页面返回时,文本字段被清除。

bjp0bcyl

bjp0bcyl3#

我认为这是因为您使用了Navigator.pop(context);回到你的页面。
记住,Navigator.pop(context);不是重置你以前的活动。所以,如果你想你的TextFormField空当你回到你的页面,只要改变你的Navigation.pop(上下文);到路由功能,如
push(context,MaterialPageRoute(builder:(context)=> yourPage());
或者是
pushNamed(context,'/routeName');
希望能有所帮助。

相关问题