如何在 Flutter 中将 TextEditingController 转换为 String?
How can I cast TextEditingController to String in Flutter?
我正在像这样从 Firestore 中检索一些数据:
String _fName;
Future<dynamic>_retrieveData() async{
var firebaseUser = await FirebaseAuth.instance.currentUser();
await Firestore.instance.collection("tryingdata").document(firebaseUser.uid).snapshots().listen((DocumentSnapshot doc) async{
Map<String, dynamic> document = doc.data;
setState((){
_fName = document['firstName'];
});
print(_fName);
});
}
@override
void initState() {
// TODO: implement initState
super.initState();
_retrieveData();
}
我想在我的 TextFormField 中有一个 initialValue,但我必须使用控制器而不是 initialValue,但控制器必须是一个 TextEditingController 变量。但我从数据库中检索字符串。我希望数据库中的值作为初始值显示在 TextFormField 中。
我收到以下错误:错误:无法将参数类型 'String' 分配给参数类型 'TextEditingController'.
TextFormField(
controller: _fName,
textAlign: TextAlign.left,
),
感谢您的帮助!
创建您的控制器:
var controller = TextEditingController();
然后一旦你得到字符串,就做
setState(() => controller.text = _fName);
TextEditingController controller = TextEditingController();
您可以在使用文本 setter 创建 TextEditingController 对象后修改它,如下所示:
controller.text = "my initial value";
您必须使用设置状态才能看到更改
我正在像这样从 Firestore 中检索一些数据:
String _fName;
Future<dynamic>_retrieveData() async{
var firebaseUser = await FirebaseAuth.instance.currentUser();
await Firestore.instance.collection("tryingdata").document(firebaseUser.uid).snapshots().listen((DocumentSnapshot doc) async{
Map<String, dynamic> document = doc.data;
setState((){
_fName = document['firstName'];
});
print(_fName);
});
}
@override
void initState() {
// TODO: implement initState
super.initState();
_retrieveData();
}
我想在我的 TextFormField 中有一个 initialValue,但我必须使用控制器而不是 initialValue,但控制器必须是一个 TextEditingController 变量。但我从数据库中检索字符串。我希望数据库中的值作为初始值显示在 TextFormField 中。 我收到以下错误:错误:无法将参数类型 'String' 分配给参数类型 'TextEditingController'.
TextFormField(
controller: _fName,
textAlign: TextAlign.left,
),
感谢您的帮助!
创建您的控制器:
var controller = TextEditingController();
然后一旦你得到字符串,就做
setState(() => controller.text = _fName);
TextEditingController controller = TextEditingController();
您可以在使用文本 setter 创建 TextEditingController 对象后修改它,如下所示:
controller.text = "my initial value";
您必须使用设置状态才能看到更改