公式ページのイントロダクションをもとにした使用例のメモです。
dart.dev
void main() {
print('${DateTime.now()} すぐに表示');
printWithDelay('1秒後に表示されるかな?');
print('${DateTime.now()} すぐに表示?');
}
const oneSecond = Duration(seconds: 1);
Future<void> printWithDelay(String message) async {
await Future.delayed(oneSecond);
print('${DateTime.now()} $message');
}
gitのプログラムをもとにした使用例のメモです。
github.com
void main() {
xxx();
}
xxx() async {
print('${formate(DateTime.now())} xxx: 私は x です');
print('${formate(DateTime.now())} xxx: y を await します');
await yyy();
print('${formate(DateTime.now())} xxx: y を await しました');
}
Future yyy() async {
print('${formate(DateTime.now())} yyy: 私は y です');
print('${formate(DateTime.now())} yyy: z を await します');
await zzz();
print('${formate(DateTime.now())} yyy: z を await しました');
}
Future zzz() async {
print('${formate(DateTime.now())} zzz: 私は z です');
print('${formate(DateTime.now())} zzz: 通信中...しばらくお待ちください');
await Future.delayed(const Duration(seconds: 1));
print('${formate(DateTime.now())} zzz: 1秒後です');
}
String formate(DateTime datetime) {
return "${datetime.hour}:${datetime.minute}:${datetime.second}.${datetime.millisecond}";
}
Flutterの初期カウントアップのプログラムに適用したときのメモです。
以下のサイトを参考にさせていただきました。
qiita.com
import 'package:flutter/material.dart';
import 'dart:io';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
useMaterial3: true,
),
home: const MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({super.key, required this.title});
final String title;
@override
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
int _counter = 0;
void _incrementCounter() {
setState(() {
_counter++;
print('onPressed インクリメントしました。');
});
}
void _setCounter(int num) {
setState(() {
_counter = num;
});
}
@override
void initState() {
print("MyHomePage画面が表示されました。");
Async().asynctest3AndSetCount(_setCounter);
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Theme.of(context).colorScheme.inversePrimary,
title: Text(widget.title),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
const Text(
'You have pushed the button this many times:',
),
Text(
'$_counter',
style: Theme.of(context).textTheme.headlineMedium,
),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: _incrementCounter,
tooltip: 'Increment',
child: const Icon(Icons.add),
),
);
}
}
class Async {
void asynctest1() {
print("method begin");
print(DateTime.now().toString());
print("data1 start");
print(syncFunc("data1", 3));
print("data2 start");
print(syncFunc("data2", 2));
print("data3 start");
print(syncFunc("data3", 1));
}
void asynctest2() {
print("method begin");
print(DateTime.now().toString());
print("data1 start");
print(asyncFunc("data1", 3));
print("data2 start");
print(asyncFunc("data2", 2));
print("data3 start");
print(asyncFunc("data3", 1));
}
void asynctest3() async {
print("method begin");
print(DateTime.now().toString());
print("data1 start");
Future<String> result1 = asyncFunc("data1", 3);
result1.then((result) {
print(result);
});
print("data2 start");
Future<String> result2 = asyncFunc("data2", 2);
result2.then((result) {
print(result);
});
print("data3 start");
Future<String> result3 = asyncFunc("data3", 1);
result3.then((result) {
print(result);
});
}
void asynctest3AndSetCount(Function setCounter) async {
print("method begin");
print(DateTime.now().toString());
print("data1 start");
Future<String> result1 = asyncFunc("data1", 8);
result1.then((result) {
print(result);
setCounter(1000);
print('data1 _Counterを1000に設定しました。');
});
print("data2 start");
Future<String> result2 = asyncFunc("data2", 5);
result2.then((result) {
print(result);
setCounter(2000);
print('data2 _Counterを2000に設定しました。');
});
print("data3 start");
Future<String> result3 = asyncFunc("data3", 2);
result3.then((result) {
print(result);
setCounter(3000);
print('data3 _Counterを3000に設定しました。');
});
}
void asynctest4() async {
print("method begin");
print(DateTime.now().toString());
print("data1 start");
print(await asyncFunc("data1", 3));
print("data2 start");
print(await asyncFunc("data2", 2));
print("data3 start");
print(await asyncFunc("data3", 1));
}
String syncFunc(String name, int time) {
sleep(Duration(seconds: time));
return name + ":" + DateTime.now().toString();
}
Future<String> asyncFunc(String name, int time) async {
return Future.delayed(Duration(seconds: time), () {
return name + ":" + DateTime.now().toString();
});
}
}