我有一个屏幕必须textformfield 1- customAmountController,2-messageController和我填写,并转到下一个屏幕,但当我从这个屏幕弹出到我的窗体屏幕我的2 textformfiled应该是空的,所以我怎么能做到这一点
2w3kk1z51#
你的问题不是很清楚,但我假设你不希望在访问某个页面之间保持更改。通过代码,我们还可以确定问题发生的确切原因,因此我将继续演绎提出可能的问题。
**可能的问题#1:**更改持久化可能是由于TextEditingController的范围比页面小部件更高。如果控制器不是另一个作用域的控制器,那么每次页面加载时,它都将重置为初始状态。可以通过在页的生成方法中重置控制器或在类内部移动控制器来解决此问题。**可能的问题#2:**另一个可能的问题是,当使用pop方法导航到页面时,页面不会被重新加载。如果方法1不起作用,请尝试使用以下方法导航离开此页面:Navigator.of(context).pushNamed("/myRoute").then((value) => setState(() {})); Popping在此之后肯定会重新加载页面(如果它是一个有状态的小部件)。如果您提供代码,我可以告诉您,而不必猜测问题。
TextEditingController
Navigator.of(context).pushNamed("/myRoute").then((value) => setState(() {}));
w8rqjzmb2#
你可以使用whenComplete()来清除你的TextEditingControllers,下面是一个例子:
whenComplete()
TextEditingControllers
Navigator.of(context).push( MaterialPageRoute(builder: (context) => YourPage()), ).whenComplete(() { customAmountController.clear(); messageController.clear(); });
在此代码片段中,whenComplete()用于在导航到YourPage页面后清除TextEditingControllers(customAmountController和messageController)。这确保了当用户从YourPage页面返回时,文本字段被清除。
YourPage
customAmountController
messageController
bjp0bcyl3#
我认为这是因为您使用了Navigator.pop(context);回到你的页面。记住,Navigator.pop(context);不是重置你以前的活动。所以,如果你想你的TextFormField空当你回到你的页面,只要改变你的Navigation.pop(上下文);到路由功能,如push(context,MaterialPageRoute(builder:(context)=> yourPage());或者是pushNamed(context,'/routeName');希望能有所帮助。
3条答案
按热度按时间2w3kk1z51#
你的问题不是很清楚,但我假设你不希望在访问某个页面之间保持更改。通过代码,我们还可以确定问题发生的确切原因,因此我将继续演绎提出可能的问题。
**可能的问题#1:**更改持久化可能是由于
TextEditingController
的范围比页面小部件更高。如果控制器不是另一个作用域的控制器,那么每次页面加载时,它都将重置为初始状态。可以通过在页的生成方法中重置控制器或在类内部移动控制器来解决此问题。**可能的问题#2:**另一个可能的问题是,当使用pop方法导航到页面时,页面不会被重新加载。如果方法1不起作用,请尝试使用以下方法导航离开此页面:
Navigator.of(context).pushNamed("/myRoute").then((value) => setState(() {}));
Popping在此之后肯定会重新加载页面(如果它是一个有状态的小部件)。如果您提供代码,我可以告诉您,而不必猜测问题。w8rqjzmb2#
你可以使用
whenComplete()
来清除你的TextEditingControllers
,下面是一个例子:在此代码片段中,
whenComplete()
用于在导航到YourPage
页面后清除TextEditingControllers
(customAmountController
和messageController
)。这确保了当用户从YourPage
页面返回时,文本字段被清除。bjp0bcyl3#
我认为这是因为您使用了Navigator.pop(context);回到你的页面。
记住,Navigator.pop(context);不是重置你以前的活动。所以,如果你想你的TextFormField空当你回到你的页面,只要改变你的Navigation.pop(上下文);到路由功能,如
push(context,MaterialPageRoute(builder:(context)=> yourPage());
或者是
pushNamed(context,'/routeName');
希望能有所帮助。