【问题标题】:Flutter: how to hold both ID & Text in a Controller?Flutter:如何在控制器中同时保存 ID 和文本?
【发布时间】:2021-06-26 12:47:03
【问题描述】:

我想知道是否有可能在 TextEditingController 这样的控制器中同时保存 ID 和文本,并且可以随时访问这两个值。

假设我有以下控制器:

final TextEditingController customerController = new TextEditingController();

在向用户显示输入时,我想显示文本(“John Doe”),但在保存到数据库时,我只需要 ID(2192)。我知道我可以创建一个变量来保存 ID,但我想知道我是否可以使用控制器来保存这两个值。

我尝试使用text & value 属性但没有成功:

customerController.text = "2192";
customerController.value = TextEditingValue(text: "John Doe");

print(customerController.text); // Prints "John Doe"
print(customerController.value); // Prints "John Doe"

【问题讨论】:

  • 我建议你研究一下 dart 的扩展方法。

标签: flutter dart


【解决方案1】:

查看TextEditingController 的文档是不可能的,除非您将值更改为同时保存TextEditingController 的ID 和文本值。

正如documentation 所说:

text ↔ String
The current string the user is editing.

value ↔ TextEditingValue
The current value stored in this notifier.

这意味着您可以使用customerController.text 来显示您想要的文本,但是在您可以存储的值中,例如2192_TheValueOfYourTextProperty,然后在存储到数据库中时,将值拆分为下划线。

虽然我不认为你应该那样使用它。一个单独的变量或一个类会更好地存储这样的东西。

【讨论】:

  • 嗨,是的,我考虑过拆分,但我想知道是否有更好的方法可用,例如 C# Winforms,您可以在其中使用 tag 属性来存储任何值。
  • 如果您查看 TextEditingController 的文档。做这样的事情是不可能的。也许看看 ChangeNotifier,它允许您在更改值时存储值(例如在文本字段中)。这确实允许您将一个类传递给 ChangeNotifier(使用 Provider 包使其更容易)。这意味着您可以根据需要创建具有任意数量属性的类 Customer,然后在文本字段的 onChange() 上,您可以更新该特定类中的值。
猜你喜欢
  • 2019-12-23
  • 1970-01-01
  • 1970-01-01
  • 2017-04-23
  • 2019-01-14
  • 2021-05-17
  • 1970-01-01
  • 1970-01-01
  • 2021-09-19
相关资源
最近更新 更多