Как я могу преобразовать 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";

вы должны использовать установленное состояние, чтобы увидеть изменение

Другие вопросы по тегам