Подтвердить что ты не робот

Как запустить код после некоторой задержки в Flutter?

Я хочу выполнить функцию после некоторой задержки после создания моего виджета. Какой идиоматический способ сделать это во Флаттере?

То, что я пытаюсь достичь: Я хотел бы начать с виджета FlutterLogo по умолчанию, а затем изменить его свойство style через некоторое время.

4b9b3361

Ответ 1

Выяснил это 😎

class AnimatedFlutterLogo extends StatefulWidget {
  @override
  State<StatefulWidget> createState() => new _AnimatedFlutterLogoState();
}

class _AnimatedFlutterLogoState extends State<AnimatedFlutterLogo> {
  Timer _timer;
  FlutterLogoStyle _logoStyle = FlutterLogoStyle.markOnly;

  _AnimatedFlutterLogoState() {
    _timer = new Timer(const Duration(milliseconds: 400), () {
      setState(() {
        _logoStyle = FlutterLogoStyle.horizontal;
      });
    });
  }

  @override
  void dispose() {
    super.dispose();
    _timer.cancel();
  }

  @override
  Widget build(BuildContext context) {
    return new FlutterLogo(
      size: 200.0,
      textColor: Palette.white,
      style: _logoStyle,
    );
  }
}

Ответ 2

Вы можете использовать Future.delayed для запуска кода через некоторое время. например.:

Future.delayed(const Duration(milliseconds: 500), () {

// Here you can write your code

  setState(() {
    // Here you can write your code for open new view
  });

});

В функции setState вы можете написать код, связанный с пользовательским интерфейсом приложения, например, обновить данные экрана, изменить текст метки и т.д.

Ответ 3

Просто добавив больше описания над ответами выше

Функциональность таймера также работает со временем ниже:

const Duration(
      {int days = 0,
      int hours = 0,
      int minutes = 0,
      int seconds = 0,
      int milliseconds = 0,
      int microseconds = 0})

Пример:

  Timer(Duration(seconds: 3), () {
    print("print after every 3 seconds");
  });