Reputation: 641
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
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