Je récupère des données de Firestore comme ceci:

 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();
  }

Et je veux avoir un initialValue dans mon TextFormField, mais je dois utiliser controller au lieu de initialValue, mais controller doit être une variable TextEditingController. Mais je récupère String de la base de données. Je veux que la valeur de la base de données soit affichée dans TextFormField comme valeur initiale. J'obtiens l'erreur suivante: Erreur: Le type d'argument "String" ne peut pas être affecté au type de paramètre "TextEditingController".

TextFormField(
              controller: _fName,
              textAlign: TextAlign.left,
            ),

Merci pour l'aide!

-4
blueshit 29 août 2020 à 22:31

2 réponses

Meilleure réponse

Créez votre contrôleur:

var controller = TextEditingController();

Et puis une fois que vous avez la chaîne, faites

setState(() => controller.text = _fName);
1
iDecode 1 sept. 2020 à 16:46
TextEditingController controller = TextEditingController();

Vous pouvez le modifier après avoir créé un objet de TextEditingController en utilisant le setter de texte comme ceci:

controller.text = "my initial value";

Vous devez utiliser set state tho pour voir le changement

0
naif.mazen 31 août 2020 à 13:25