danPyk
danPyk

Reputation: 641

Flutter - how to supply init value of TextField with dynamic value from FutureBuilder?

I'm making an 'edit user profile' page where I want to download data from FutureBuilder into TextField, to allow users to modify it. I know that TextEditingController() has a property called text, but I don't know how to dynamically pass the global variable called createdUser to it.

FutureBuilder:

FutureBuilder<Prefix.User>(
      future: createUser(),
      builder: (context, snapshot) {
        var user;
          (...)
        if (snapshot.connectionState == ConnectionState.done) {
          final userName = snapshot.data.username;

          user = Prefix.User(username: userName);

          widget.createdUser = user;
        }

And I want do do something like that in TextEditingController :

  TextEditingController messageTextController = TextEditingController(
      text: createdUser.username);

I've tried to pass data through constructor, but without effect, I know there's need to be some simple solution. FutureBuilder works ok, because when I've tried to use it to display as hint value it was ok.

Upvotes: 3

Views: 565

Answers (1)

Deepak Lohmod
Deepak Lohmod

Reputation: 2272

Declare your controller like this:-

TextEditingController messageTextController = TextEditingController();

and in your future builder

    FutureBuilder<Prefix.User>(
          future: createUser(),
          builder: (context, snapshot) {
            var user;
              (...)
            if (snapshot.connectionState == ConnectionState.done) {
              final userName = snapshot.data.username;
    
              user = Prefix.User(username: userName);
    
              widget.createdUser = user;
              messageTextController.text=createdUser.username;//this will add the value of username to the controller
            }

Upvotes: 1

Related Questions