Я использую FutureBuilder
внутри моего Build
метода, и FutureBuilder
продолжает срабатывать снова и снова. Я хочу вызвать FutureBuilder
только один раз, пока мой future
не будет загружен, а затем вызвать другую функцию, как только это будет сделано. Это моя функция Build
-
@override
Widget build(BuildContext context) {
return FutureBuilder(
future: parsings(),
builder:
(BuildContext context, AsyncSnapshot<dynamic> snapshot) {
switch (snapshot.connectionState) {
case ConnectionState.waiting:
return LoadingState(context);
default:
if (snapshot.hasError)
return new Text(
'Error in snapshot: \n${snapshot.error}');
else {
return func1();
}
}
},
);
}
Как я уже сказал, моя функция Build
продолжает строиться снова и снова.
До этого я использовал свой future
внутри initState
, но из-за этого моя фактическая страница, которую я хотел вернуть, давала нулевые значения до тех пор, пока не был вызван API. Я вообще не хочу видеть нулевые значения, поэтому я хотел использовать FutureBuilder
и отображать LoadingState()
до тех пор, пока API не будет вызван, а затем показать мою страницу, которая имеет все вызываемые значения и не показывает null
значений. Любая помощь будет принята с благодарностью.
EDIT : Подробная проблема, с которой я сталкиваюсь, заключается в том, что функция build
вызывается снова и снова, я снова и снова вижу свой LoadingState()
, то есть появляется LoadingState()
, затем func1()
, затем снова LoadingState()
, затем func1()
и так далее. этот процесс вовсе не останавливается. Кроме того, я не хочу использовать parsings()
в initState, потому что при этом, до вызова API, func1()
показывает нулевые значения в моих данных, и как только он вызывается, функция сборки меняет свои значения на значения, вызываемые из API. Я не хочу видеть это таким, поэтому я хотел использовать FutureBuilder
.