В вашем коде есть несколько ошибок.
- Вы передаете
initialData
. Таким образом, snapshot.hasData будет истинным в самом начале. - Вы не инициализировали случайный случай в первый раз.
- Вы должны ждать своего Future.delay
Изменение реализации getRandom:
Future<String> getRandom() async{
await Future.delayed(const Duration(seconds: 5));
return "the number is"+ Random().nextInt(100).toString();
}
Реализация initState для инициализации случайного будущего:
@override
void initState() {
super.initState();
random = getRandom();
}
Смена будущего компоновщика:
FutureBuilder(
future:random,
builder: (context, snapshot) {
if (snapshot.hasData && snapshot.connectionState == ConnectionState.done) {
return Column(children: [
Text(snapshot.data,textScaleFactor: 4),
getNextButton()
]);
} else if (snapshot.hasError) {
return Text("ERROR");
}
return CircularProgressIndicator();
}
)