🐥
【Flutter】initStateでasync/awaitが使えなくて困った場合の対処
StatefullWidgetには、画面を開いた際に最初に呼び出されるinitStateがあります。ここにFuture型を戻り値とした関数を入れたいのに、エラーが出て困る時ってありませんか?
エラーが出るケース
例えばこんなケースです。
class _MyAppState extends State<MyApp> {
void initState() async {
super.initState();
final hogehoge = await Hogehoge() // これだとエラーになる
}
エラーの原因ですが、initStateではasyncが使えないからです。
一度Futureに入れよう
そんな時は、Futureを戻り値とした別の関数内で処理してから、initStateに入れてあげましょう。
class _MyAppState extends State<MyApp> {
void initState() {
super.initState();
initialize() //これならエラーが起きない
}
Future<void> initialize() async {
await Hogehoge();
}
まとめ
initStateではasync/awaitは使えません。一度Future型の別の関数で処理してから、initStateで呼び出しましょう。
![Flutter大学](https://storage.googleapis.com/zenn-user-upload/avatar/f485149097.jpeg)
Flutter大学はFlutterエンジニアに特化した学習コミュニティです! 初心者から中上級者まで幅広く在籍し、切磋琢磨しています! 入会をご希望の方はこちらから→ flutteruniv.com
Discussion