【发布时间】:2021-02-10 23:44:42
【问题描述】:
我有这个功能
String test() => 'test';
我想将它传递给TextEditingController 的文本参数,就像这个一样。
final TextEditingController _form1 = TextEditingController(text: test() );
但我收到此错误消息。
"The instance member 'Test' can't be accessed in an initializer.
Try replacing the reference to the instance member with a different expression"
我该如何解决?另外,为什么会这样?谢谢!
更新
我将函数移到类级别并且它可以工作。至少有这个例子。
String test() => 'test';
class SecondScreen extends StatefulWidget {
@override
_SecondScreenState createState() => _SecondScreenState();
}
class _SecondScreenState extends State<SecondScreen> {
Future _signOut() async {
await FirebaseAuth.instance.signOut();
}
final TextEditingController _form1 = TextEditingController(text: test() );
...
该示例完美运行。问题是我的 let's 调用 test() 函数,不是返回一个字符串那么简单,而是这个。
String uid2str(String uid) {
FirebaseFirestore.instance
.collection('Usuarios')
.doc(uid)
.get()
.then((DocumentSnapshot documentSnapshot) {
if (documentSnapshot.exists) {
Map<String, dynamic> data = documentSnapshot.data()['InfoUser'];
return '${data['Nombre']} ${data['Apellido']}';
} else {
return 'undefined';
}
});
}
final TextEditingController _form1 = TextEditingController(text: uid2str(userID) );
对于这种情况,它不起作用,我尝试使用 await/async,但似乎 text 无法获取不是 String 的类型。所以 Future 不能用。
我也不能在我的 TextFieldForm 中使用 initialValue,因为我已经有一个控制器,而且我似乎不能同时拥有它们。
【问题讨论】: