Как я могу преобразовать TextEditingController в String во 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();
}
и я хочу иметь initialValue в моем TextFormField, но я должен использовать контроллер вместо initialValue, но контроллер должен быть переменной TextEditingController. Но я извлекаю строку из базы данных. Я хочу, чтобы значение из базы данных отображалось в TextFormField как начальное значение. Я получаю следующую ошибку: Ошибка: тип аргумента String не может быть назначен типу параметра TextEditingController.
TextFormField(
controller: _fName,
textAlign: TextAlign.left,
),
Спасибо за помощь!
2 ответа
Создайте свой контроллер:
var controller = TextEditingController();
А затем, как только вы получите строку, просто сделайте
setState(() => controller.text = _fName);
TextEditingController controller = TextEditingController();
вы можете изменить его после создания объекта TextEditingController с помощью установщика текста следующим образом:
controller.text = "my initial value";
вы должны использовать установленное состояние, чтобы увидеть изменение