You have two way :
1 ) get text from prefs BEFORE navigate - or construct widget -. So you can get final variable.
2 ) Load text after initState
class Foo extends StatefulWidget {
@override
_FooState createState() {
return _FooState();
}
}
class _FooState extends State<Foo> {
TextEditingController _controller;
//For check text loaded. bool textLoaded;
bool textLoaded;
String text;
@override
void initState() {
textLoaded = false;
super.initState();
}
Future<void> setText() async {
setState(() {
text = "GET TEXT FROM PREF";
_controller = TextEditingController(text: text);
textLoaded = true;
});
}
@override
Widget build(BuildContext context) {
return Column(
children: <Widget>[
textLoaded
? TextField(
controller: _controller,
)
: const CircularProgressIndicator(),
RaisedButton(
onPressed: () {
_controller.clear();
},
child: const Text('CLEAR'),
),
],
);
}
}