【问题标题】:How to synchronise two TextFields in FlutterFlutter中如何同步两个TextField
【发布时间】:2021-04-27 09:57:06
【问题描述】:

假设我在 Flutter 中呈现了两个文本字段:“净价”和“总价”。我想同步它们,所以当用户更新净价时,会自动计算和更新总价。当用户更改总价时,应更新净价字段。如何在 Flutter 中实现这种行为?

【问题讨论】:

  • 使用TextEditingControllers。由于您的 TextFields 可能驻留在同一个小部件中,我认为 Provider 在这里有点过分......

标签: flutter


【解决方案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了解更多

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-17
    • 2020-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-17
    • 1970-01-01
    • 2021-11-16
    相关资源
    最近更新 更多