ウィジェットを作成してから一定の遅延後に関数を実行したいのですが。Flutterでこれを行う慣用的な方法は何ですか?
私が達成しようとしていること:デフォルトのFlutterLogo
ウィジェットから始めて、style
しばらくしてからそのプロパティを変更したいと思います。
ウィジェットを作成してから一定の遅延後に関数を実行したいのですが。Flutterでこれを行う慣用的な方法は何ですか?
私が達成しようとしていること:デフォルトのFlutterLogo
ウィジェットから始めて、style
しばらくしてからそのプロパティを変更したいと思います。
回答:
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関数では、アプリのUIに関連するコードを記述できます。たとえば、画面データの更新、ラベルテキストの変更などです。
それを理解しました😎
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,
);
}
}
Timer
から輸入しましたか?
import 'dart:async'
timer = ...
、initState
オーバーライドを配置することです。そうすればwidget
、State<>
コンストラクターで設定されているものにアクセスできます。
カウントダウン後にアクションをトリガーする
Timer(Duration(seconds: 3), () {
print("Yeah, this line is printed after 3 seconds");
});
アクションを繰り返す
Timer.periodic(Duration(seconds: 5), (timer) {
print(DateTime.now());
});
タイマーをすぐにトリガーする
Timer(Duration(seconds: 0), () {
print("Yeah, this line is printed immediately");
});
次の2つの方法1でそれを行うことができますすることであるFuture.delayed
と2がありますTimer
タイマーの使用
Timer
は、時間の終わりに達するとアクションをトリガーするように構成されたカウントダウンタイマーを表すクラスであり、1回または繰り返し起動できます。
dart:async
使用するプログラムの開始にパッケージ をインポートしてください Timer
Timer(Duration(seconds: 5), () {
print(" This line is execute after 5 seconds");
});
Future.delayedの使用
Future.delayed
isは、遅延後に計算を実行するfutureを作成します。
import "dart:async";
使用するプログラムの開始に必ずパッケージ化して ください Future.delayed
Future.delayed(Duration(seconds: 5), () {
print(" This line is execute after 5 seconds");
});