【发布时间】:2020-12-18 16:04:52
【问题描述】:
我使用颤振创建了一个应用程序。该应用程序运行良好,但一项重要功能不起作用。当我从 Firestore 数据库中检索数据并在列表视图中显示记录时,我想单击任何记录并转到可以编辑记录的屏幕。单击记录并导航到编辑页面可以正常工作,但是数据不会填充到 TextField 中。当我调试应用程序时,数据就在那里,但 TextFields 永远不会填充数据。下面是我的一些代码。
这是编辑页面 '''
// existing record: Put data from database into the TextFields
// Updates Controllers
clientFNameController.text = widget.trxns.clientFName;
// Updates State
new Future.delayed(Duration.zero, () {
final trxnProvider = Provider.of<TrxnProvider>(context, listen: false);
trxnProvider.loadValues(widget.trxns);
});
super.initState();
@override
Widget build(BuildContext context) {
final trxnProvider = Provider.of<TrxnProvider>(context);
final trxns = Provider.of<List<Trxns>>(context);
TextField(
textAlign: TextAlign.center,
onChanged: (value) {
trxnProvider.changeclientLName(value, loggedInUid);
},
decoration:
kTextFieldDecoration.copyWith(hintText: 'Client Last Name'),
),
'''
这是提供者类 '''
class TrxnProvider with ChangeNotifier {
final firestoreService = FirestoreService();
String _clientLName;
String get clientLName => _clientLName;
loadValues(Trxns trxns) {
_clientLName = trxns.clientLName;
}
'''
【问题讨论】:
-
也许您忘记将
clientFNameController分配给TextField? -
为什么在initState之外还有super.initState?
-
很抱歉没有在我的帖子中提供所有细节。 super.initstate 在 initState 中。此代码也在 initState 中:clientLNameController.text = widget.trxns.clientLName;