Dart
実行環境
DartPad
チュートリアル
Tutorials | Dart
命名規則
Effective Dart: Style | Dart
非同期処理
JavaScript のPromiseがFuture。
Future 内でまた非同期処理の結果を待つ場合、メソッドにasyncを付与する。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 | Future<CognitoAuth> cognitoLogIn(
CognitoLogInRef ref, String userName, String password) async {
final url = Uri.https(cognitoEndpoint, "/");
final headers = {
"Content-Type": "application/x-amz-json-1.1",
"X-Amz-Target": "AWSCognitoIdentityProviderService.InitiateAuth",
};
final body = jsonEncode({
"ClientId": cognitoClientId,
"AuthFlow": "USER_PASSWORD_AUTH",
"AuthParameters": {"USERNAME": userName, "PASSWORD": password}
});
final response = await http.post(url, headers: headers, body: body);
final json = jsonDecode(response.body);
final auth = CognitoAuth(
accessToken: json["AuthenticationResult"]["AccessToken"],
expiresIn: json["AuthenticationResult"]["ExpiresIn"],
idToken: json["AuthenticationResult"]["IdToken"],
refreshToken: json["AuthenticationResult"]["RefreshToken"],
tokenType: json["AuthenticationResult"]["TokenType"],
);
ref.read(cognitoAuthProvider.notifier).state = auth;
logger.d(auth);
return auth;
}
|
言語
Dart basics | Dart
new
他の言語でオブジェクト生成に使うnewは Dart では書かなくて良い。(書いても良い。昔は書く記法だったが、現在は不要らしい)
配列
List<型>で書く。型[]ではない。
public, private
Dart では 変数名やメソッド名に_をつけると private になる。
const, final
Variables | Dart
finalは 1 回だけ代入可能。
constはコンパイル時の定数。(constは暗黙的にfinal)
アロー関数的なやつ
アロー演算子を使う場合、インラインになる。
| void main() {
final f = () => 0;
print(f());
}
|
式を使う場合はアロー演算子を使わず、ブロックで囲う。
| void main() {
final f = () {
return 0;
};
print(f());
}
|
非 null アサーション演算子
Flutter – Dart を学ぶ際に押さえておきたい「?」と「!」 | IT ミュージアム
value!みたいな書き方。valueは null 許容だが、この式が参照されるときは絶対に null じゃないと言い切れる場合はこの演算子を使って警告を無視することができる。
Exception と Error の違い
アプリの振る舞いの制御には Error を使う。
【Dart】Exception(例外)と Error(間違い)の使い方