Заставка появляется с задержкой

Я пытаюсь реализовать плагин Flutter Getx и сделал заставку, подобную этой:

class SplashScreen extends StatelessWidget {
  const SplashScreen({Key key}) : super(key: key);
  @override
  Widget build(BuildContext context) {
    return GetBuilder(
      init: SplashController(),
        builder: (_) => Scaffold(
          body: Center(
            child: CircularProgressIndicator(),
          ),
        )
    );
  }
}

Затем я написал всплескконтроллер, подобный этому:

class SplashController extends GetxController {
  @override
  void onReady() {
    // TODO: implement onReady
    super.onReady();
    myFunctionCalculations();
    final Controller _controller = Get.put(controller());
    List items = _controller.items;
    if (items > 0) {
      Get.off(OnePlayerScreen());
    }
  }
}

Теперь с моего домашнего экрана я нажимаю кнопку, чтобы перейти к этой заставке. Больше ничего не делает только

onPressed: () {
                  Get.to(SplashScreen());
               }

Дело в том, что я хочу показать круговой индикатор, пока моя функция работает, и когда она заполняет элементы списка, чтобы перейти на экран элементов, но когда я нажимаю кнопку, чтобы получить заставку, проходит некоторое время, пока не появится заставка а затем сразу же переходит на экран «Элементы», потому что тем временем он заполнил список. Когда я не инициализирую функцию, она сразу же попадает на заставку, и я вижу индикатор.

Почему я получаю эту функциональность? Я думал, что он должен показывать индикатор загрузки и тем временем заполнять список. Но кажется, что когда я нажимаю кнопку на главном экране, функция инициализируется, и когда она не появляется, появляется заставка. Что я делаю не так?


person i6x86    schedule 29.12.2020    source источник


Ответы (1)


Вы не забыли вызвать update() в своей расчетной функции?

И кажется, что ваша функция async, поэтому вы должны await ее перед заполнением списка

person Andrey Gritsay    schedule 29.12.2020
comment
Я пробовал await, но это не имеет значения, проблема в том, что заставка не появляется до тех пор, пока не будут выполнены вычисления, и предполагается, что они должны быть выполнены после ее появления. - person i6x86; 29.12.2020