概要
Flutterを使うために最低限知っておくべきDart言語に関する自分用メモ
背景と目的
Flutterを使ってスマホアプリを作成する必要が出たため、まずは開発言語であるDartについて最低限必要な内容について学習し、メモしておく。
詳細
Playground
DartPadというものがある。
コメント
//
データ型
// int int i = 0; // double double a = 0.0; // 文字列 String name = 'abc'; String name = "abc"; // ''または"" // bool bool x = true; // false // List List<String> nameList = ['a', 'b', 'c']; // <型>で宣言する nameList[0]; // アクセス nameList.add('d'); // addメソッドで追加 // Map Map<String, String> nameMap = { 'a': 'x' }; // javascript objectと同じ感じ nameMap['a']; // xを取り出し // var = 型推論してくれる var name = 'abc'; // Stringになる // enum 列挙体 enum Animal { dog, cat, bear } Animal animal2 = Animal.dog;
文字列操作
'a' + 'b' // 'ab'
main関数
void main () {
}
関数
String aaa(int x, int y) { String name = 'abc'; return name; } // 名前付き引数 // 3種類の引数定義 void aaa({int? x, int? y}) { // 名前付き引数は、引数を与えるのが必須ではないので // null許容のための?をつける } void aaa({required int x = 0, required int y = 1}) { // 名前付き引数は、引数を与えるのが必須ではないので // requiredで必須化する } void aaa({int x = 0, int y = 1}) { // 名前付き引数は、引数を与えるのが必須ではないので // デフォルト値を与えられる } aaa(x: 10, y: 5); // 呼び出すとき
アロー関数
String abc() { return 'aaa'; } String abc() => 'aaa';
Future
非同期処理のための仕組み
Future<void> test2() async { Future.delayed(Duration(seconds: 3)); print('フィニッシュ'); } // 開始後、すぐにフィニッシュが表示される test2(); // 同期処理したいとき // async/awaitを使う Future<void> test2() async { await Future.delayed(Duration(seconds: 3)); print('フィニッシュ'); } // 3秒後にフィニッシュが表示される test2();
Widget
import 'package:flutter/material.dart'; void main() { Widget txt = Text('abc'); }
演算子
a / b; // 除算 a ~/ b; // 商 a % b; // a÷bの余り num++; // インクリメント num--; // デクリメント // *=, /=もある num += 3; // 加算 num -= 3; // 減算 // 比較演算子 a == b; a != b; a > b; a < b; a >= b; a <= b; // 論理 age >= 20 && age < 30; // かつ age < 20 || age >= 30; // または
三項演算子
elseはコロンで書く。
num == 0 ? print('numは0') : print('numは0でない');
制御構文
// forはC言語と全く同じ for (int i = 0; i < 5; i++) { } // for-in List<String> nameList = ['a', 'b', 'c']; for (String name in nameList) { print(name); } // while // break, continueあたりも同じ // switch // だいたいCと同じ switch(num) { case 0: break; case 1: break; default: break; }
try~catch~finally
throwでエラーを起こせる
try { // throw('エラーが発生'); } catch(e) { // print(e); } finally { }
Null Safety
?をつけるとNullが許容される
int num = null; // Null を許容していないので、エラー int? num = null; // Null許容しているのでエラーにならない x ?? 0; // xがNullなら、0にする
アクセス制御/修飾子
final と const
// finalとconstの違い // const: コンパイル時に定まっているべき定数 // final: 実行時に定まる定数 final String name = 'abc'; // コンパイル時に定まるように定義が必要 const String name2 = name; // 実行時に定まるように定義できる
class
privateはアンダーバーをつける。Pythonと同じ感じ。
class MyClass { int name; // パブリック int _age; // アンダーバーでprivateメンバにできる static String x = 'abc'; // 静的メンバ // コンストラクタ MyClass(this.name); }
print(0);
VSCode
拡張機能
SDK
https://dart.dev/get-dart#choose-an-installation-option
4つの方法があるが、Flutterをインストールする予定なので、Flutter同梱のDart SDKを用いることにする。
settings.json
"[dart]": { "editor.tabSize": 2, "editor.insertSpaces": true, "editor.detectIndentation": false, "editor.suggest.insertMode": "replace", "editor.defaultFormatter": "Dart-Code.dart-code", "editor.inlayHints.enabled": "offUnlessPressed" }
まとめ
Dart言語について、自分の中で最低限の知識を整理できた。