Flutter中如何同步两个TextField
Posted
技术标签:
【中文标题】Flutter中如何同步两个TextField【英文标题】:How to synchronise two TextFields in Flutter 【发布时间】:2021-04-27 09:57:06 【问题描述】:假设我在 Flutter 中呈现了两个文本字段:“净价”和“总价”。我想同步它们,所以当用户更新净价时,会自动计算和更新总价。当用户更改总价时,应更新净价字段。如何在 Flutter 中实现这种行为?
【问题讨论】:
使用TextEditingControllers。由于您的 TextFields 可能驻留在同一个小部件中,我认为 Provider 在这里有点过分...... 【参考方案1】:我建议使用provider package 来解决这个问题。
基本上,您创建一个扩展 ChangeNotifier
的类并保存两个 TextField 的值,然后为两个 Text 小部件提供它,在一个公共父小部件的某处:
ChangeNotifierProvider(
create: (context) => MyClass(),
child: MyApp(),
),
现在,每当您更改其中一个 TextField 时,只需从 MyClass 调用一个函数,该函数计算另一个 TextField 的新值应该是什么。 例如:
void calculate()
// Some calculation and updating the values of the TextFields
notifyListeners();
注意notifyListeners()
调用,它告诉正在侦听此模型的小部件进行重建。
要收听此模型,请将您的 Text 小部件包装在消费者中,例如:
return Consumer<MyClass>(
builder: (context, myClass, child)
return Text("Total price: $myClass.netPrice");
);
你可以从flutter状态管理tutorial了解更多
【讨论】:
以上是关于Flutter中如何同步两个TextField的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Flutter 的同一屏幕中管理两个带有数据的 ListView