Introduction

備忘録。

Flutter のこういうコード。

1
2
3
4
5
void main() {
runApp(
const ProviderScope(child: MyApp()),
);
}

初期化処理を非同期で行いたいけど、そもそも mainasync ついてない。
それに、非同期にするのは簡単だけど、それで何か問題が起きたりしないのか?という。

Conlusion?

公式のドキュメント Working with futures: async and await にて main を非同期にする例が記述している。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Future<String> createOrderMessage() async {
var order = await fetchUserOrder();
return 'Your order is: $order';
}

Future<String> fetchUserOrder() =>
// Imagine that this function is
// more complex and slow.
Future.delayed(
const Duration(seconds: 2),
() => 'Large Latte',
);

Future<void> main() async {
print('Fetching user order...');
print(await createOrderMessage());
}

安心して async を付与できる。