Как запустить код после некоторой задержки в Flutter?
Я хочу выполнить функцию после некоторой задержки после создания моего виджета. Какой идиоматический способ сделать это во Флаттере?
То, что я пытаюсь достичь:
Я хотел бы начать с виджета FlutterLogo
по умолчанию, а затем изменить его свойство style
через некоторое время.
Ответы
Ответ 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");
});