「Dart」の版間の差分
ナビゲーションに移動
検索に移動
(→ログ) |
|||
8行目: | 8行目: | ||
==基本== | ==基本== | ||
===Install=== | ===Install=== | ||
+ | ---- | ||
====[[Windows]]==== | ====[[Windows]]==== | ||
+ | ---- | ||
*http://www.gekorm.com/dart-windows/ | *http://www.gekorm.com/dart-windows/ | ||
====[[Mac]]==== | ====[[Mac]]==== | ||
+ | ---- | ||
*https://dart.dev/get-dart | *https://dart.dev/get-dart | ||
*install | *install | ||
19行目: | 22行目: | ||
$ brew upgrade dart | $ brew upgrade dart | ||
===[[Dart]]Pad=== | ===[[Dart]]Pad=== | ||
+ | ---- | ||
*https://dartpad.dartlang.org/ | *https://dartpad.dartlang.org/ | ||
===APIリファレンス=== | ===APIリファレンス=== | ||
+ | ---- | ||
*https://api.dart.dev/stable/2.5.0/index.html | *https://api.dart.dev/stable/2.5.0/index.html | ||
===パッケージ=== | ===パッケージ=== | ||
+ | ---- | ||
*[[Dart]]標準は、dart: | *[[Dart]]標準は、dart: | ||
import 'dart:html'; | import 'dart:html'; | ||
28行目: | 34行目: | ||
*pubパッケージマネージャ | *pubパッケージマネージャ | ||
====パッケージから特定のオブジェクトのみimportする==== | ====パッケージから特定のオブジェクトのみimportする==== | ||
+ | ---- | ||
*import [package] show [objects] | *import [package] show [objects] | ||
import 'package:google_sign_in/google_sign_in.dart' | import 'package:google_sign_in/google_sign_in.dart' | ||
33行目: | 40行目: | ||
===Hello=== | ===Hello=== | ||
+ | ---- | ||
*hello.dart | *hello.dart | ||
void main() { | void main() { | ||
41行目: | 49行目: | ||
Hello [[Dart]]! | Hello [[Dart]]! | ||
==型== | ==型== | ||
+ | ---- | ||
===数値=== | ===数値=== | ||
+ | ---- | ||
====numのサブクラス==== | ====numのサブクラス==== | ||
+ | ---- | ||
*int | *int | ||
*double | *double | ||
===真偽=== | ===真偽=== | ||
+ | ---- | ||
*bool | *bool | ||
===文字列=== | ===文字列=== | ||
+ | ---- | ||
====String==== | ====String==== | ||
+ | ---- | ||
*https://api.dart.dev/stable/2.5.0/dart-core/String-class.html | *https://api.dart.dev/stable/2.5.0/dart-core/String-class.html | ||
=====補完===== | =====補完===== | ||
+ | ---- | ||
*${} | *${} | ||
print("Hello ${this.name}."); | print("Hello ${this.name}."); | ||
====リテラル==== | ====リテラル==== | ||
+ | ---- | ||
*一重、二重引用符 | *一重、二重引用符 | ||
*引用符3�つ重ねで複数行 | *引用符3�つ重ねで複数行 | ||
====StringBuffer==== | ====StringBuffer==== | ||
+ | ---- | ||
*https://api.dart.dev/stable/2.7.2/dart-core/StringBuffer-class.html | *https://api.dart.dev/stable/2.7.2/dart-core/StringBuffer-class.html | ||
====Runes==== | ====Runes==== | ||
+ | ---- | ||
*UTF-32型の文字 | *UTF-32型の文字 | ||
*絵文字などの表現 | *絵文字などの表現 | ||
===コレクション=== | ===コレクション=== | ||
+ | ---- | ||
====List==== | ====List==== | ||
+ | ---- | ||
*[] | *[] | ||
*add | *add | ||
78行目: | 98行目: | ||
*reduce | *reduce | ||
====Map==== | ====Map==== | ||
+ | ---- | ||
*{} | *{} | ||
*remove | *remove | ||
85行目: | 106行目: | ||
====== | ====== | ||
====Symbol==== | ====Symbol==== | ||
+ | ---- | ||
*[[Dart]]の構文での演算子や識別子 | *[[Dart]]の構文での演算子や識別子 | ||
====Functions==== | ====Functions==== | ||
+ | ---- | ||
*関数 | *関数 | ||
====Enum==== | ====Enum==== | ||
+ | ---- | ||
*列挙 | *列挙 | ||
enum Menu { google_sign_in, firestore_cloud_vision } | enum Menu { google_sign_in, firestore_cloud_vision } | ||
101行目: | 125行目: | ||
==文法== | ==文法== | ||
===基本=== | ===基本=== | ||
+ | ---- | ||
*セミコロン必須 | *セミコロン必須 | ||
====エントリーポイント ==== | ====エントリーポイント ==== | ||
+ | ---- | ||
*void main() もしくは、void main(List<String> args) | *void main() もしくは、void main(List<String> args) | ||
====コメント ==== | ====コメント ==== | ||
+ | ---- | ||
*// | *// | ||
*/*...*/ | */*...*/ | ||
110行目: | 137行目: | ||
===変数=== | ===変数=== | ||
+ | ---- | ||
====var==== | ====var==== | ||
+ | ---- | ||
*型推論 | *型推論 | ||
*初期値null | *初期値null | ||
*型宣言 | *型宣言 | ||
===定数=== | ===定数=== | ||
+ | ---- | ||
====final==== | ====final==== | ||
+ | ---- | ||
*再代入不可 | *再代入不可 | ||
====const==== | ====const==== | ||
+ | ---- | ||
*コンパイル時点で評価 | *コンパイル時点で評価 | ||
:;オブジェクトの変更禁止 | :;オブジェクトの変更禁止 | ||
126行目: | 158行目: | ||
list2.add(4); // エラーが発生 | list2.add(4); // エラーが発生 | ||
===コンストラクタ=== | ===コンストラクタ=== | ||
+ | ---- | ||
*https://dev.classmethod.jp/articles/about_dart_constructors/ | *https://dev.classmethod.jp/articles/about_dart_constructors/ | ||
class Book { | class Book { | ||
143行目: | 176行目: | ||
===関数=== | ===関数=== | ||
+ | ---- | ||
*第1級オブジェクト | *第1級オブジェクト | ||
*宣言 | *宣言 | ||
150行目: | 184行目: | ||
} | } | ||
====1行==== | ====1行==== | ||
+ | ---- | ||
bool isHoge(String str) => str == "hoge"; | bool isHoge(String str) => str == "hoge"; | ||
====引数の指定==== | ====引数の指定==== | ||
+ | ---- | ||
someFunc3(a: 1, b: 2, c: 3); | someFunc3(a: 1, b: 2, c: 3); | ||
====オプション引数==== | ====オプション引数==== | ||
+ | ---- | ||
String conc(String a, String b, [String c]) | String conc(String a, String b, [String c]) | ||
====デフォルト引数==== | ====デフォルト引数==== | ||
+ | ---- | ||
int someFunc4(int a, {int b = 2}) | int someFunc4(int a, {int b = 2}) | ||
====無名関数(ラムダ、[[クロージャ]])==== | ====無名関数(ラムダ、[[クロージャ]])==== | ||
+ | ---- | ||
list.forEach((item) => print(item)); | list.forEach((item) => print(item)); | ||
====ブロック==== | ====ブロック==== | ||
+ | ---- | ||
*変数のスコープ分離 | *変数のスコープ分離 | ||
====[[クロージャ]]==== | ====[[クロージャ]]==== | ||
+ | ---- | ||
*変数のスコープから外れても利用できる | *変数のスコープから外れても利用できる | ||
====カスケード表記==== | ====カスケード表記==== | ||
+ | ---- | ||
*..でインスタンスの記述を省略できる | *..でインスタンスの記述を省略できる | ||
*メソッドを連続で呼び出すことができる | *メソッドを連続で呼び出すことができる | ||
===演算子=== | ===演算子=== | ||
+ | ---- | ||
====型演算子==== | ====型演算子==== | ||
+ | ---- | ||
*as | *as | ||
*is | *is | ||
*is! | *is! | ||
====条件付きメンバアクセス==== | ====条件付きメンバアクセス==== | ||
+ | ---- | ||
*?. | *?. | ||
===構文=== | ===構文=== | ||
+ | ---- | ||
====try catch==== | ====try catch==== | ||
+ | ---- | ||
*例外チェックは行わない | *例外チェックは行わない | ||
try { | try { | ||
184行目: | 231行目: | ||
==ジェネリクス== | ==ジェネリクス== | ||
+ | ---- | ||
void hoge(List<T> list){} | void hoge(List<T> list){} | ||
==オブジェクト指向== | ==オブジェクト指向== | ||
+ | ---- | ||
*https://dart.dev/guides/language/language-tour#classes | *https://dart.dev/guides/language/language-tour#classes | ||
*[[Dart]]はクラスとミックスインベースのインターフェースによるオブジェクト指向言語。 | *[[Dart]]はクラスとミックスインベースのインターフェースによるオブジェクト指向言語。 | ||
192行目: | 241行目: | ||
====キーワード==== | ====キーワード==== | ||
+ | ---- | ||
*継承 extends | *継承 extends | ||
*継承元呼び出し super | *継承元呼び出し super | ||
197行目: | 247行目: | ||
===クラス=== | ===クラス=== | ||
+ | ---- | ||
==非同期処理== | ==非同期処理== | ||
*asyncパッケージをインポート | *asyncパッケージをインポート | ||
204行目: | 255行目: | ||
===File=== | ===File=== | ||
+ | ---- | ||
*https://api.dart.dev/stable/2.5.0/dart-io/File-class.html | *https://api.dart.dev/stable/2.5.0/dart-io/File-class.html | ||
==Tips== | ==Tips== | ||
===実行時の型を調べる=== | ===実行時の型を調べる=== | ||
+ | ---- | ||
runtimeType | runtimeType | ||
print(o.runtimeType); | print(o.runtimeType); | ||
===ログ=== | ===ログ=== | ||
+ | ---- | ||
*https://stackoverflow.com/questions/42440061/how-to-fully-dump-print-variable-to-console-in-the-dart-language | *https://stackoverflow.com/questions/42440061/how-to-fully-dump-print-variable-to-console-in-the-dart-language | ||
<pre> | <pre> |
2021年7月15日 (木) 09:06時点における版
Dart
Flutter |
基本
Install
Windows
Mac
- https://dart.dev/get-dart
- install
$ brew tap dart-lang/dart $ brew install dart
- update
$ brew upgrade dart
DartPad
APIリファレンス
パッケージ
- Dart標準は、dart:
import 'dart:html';
- ローカルは相対パス(dart:省略)
- pubパッケージマネージャ
パッケージから特定のオブジェクトのみimportする
- import [package] show [objects]
import 'package:google_sign_in/google_sign_in.dart' show GoogleSignIn, GoogleSignInAccount;
Hello
- hello.dart
void main() { print("Hello Dart!"); }
- 実行
>dart hello.dart Hello Dart!
型
数値
numのサブクラス
- int
- double
真偽
- bool
文字列
String
補完
- ${}
print("Hello ${this.name}.");
リテラル
- 一重、二重引用符
- 引用符3�つ重ねで複数行
StringBuffer
Runes
- UTF-32型の文字
- 絵文字などの表現
コレクション
List
- []
- add
- insert
- removeAt
- indexOf
- sort
- shuffle
- forEach
- every
- map
- reduce
Map
- {}
- remove
- addAll
- forEach
- containsKey
==
Symbol
- Dartの構文での演算子や識別子
Functions
- 関数
Enum
- 列挙
enum Menu { google_sign_in, firestore_cloud_vision }
- 値を割り当てるだめの妥協
class Status { static const int created = 10; static const int deleted = 90; }
文法
基本
- セミコロン必須
エントリーポイント
- void main() もしくは、void main(List<String> args)
コメント
- //
- /*...*/
- /// ドキュメンテーションコメント
変数
var
- 型推論
- 初期値null
- 型宣言
定数
final
- 再代入不可
const
- コンパイル時点で評価
- オブジェクトの変更禁止
final List<int> list1 = [1, 2, 3]; list1.add(4); // [1, 2, 3, 4]
List<int> list2 = const [1, 2, 3]; list2.add(4); // エラーが発生
コンストラクタ
class Book { String title; String author; Book(); Book.fromMapWithTitle({Map<String, dynamic> map, String title}) { title = title; author = map["author"]; } Book.fromMap(Map<String, dynamic> map) : this.fromMapWithTitle(map:map); }
関数
- 第1級オブジェクト
- 宣言
<blockquote>常</blockquote>
int someFunc2(int a, int b) { return a + b; }
1行
bool isHoge(String str) => str == "hoge";
引数の指定
someFunc3(a: 1, b: 2, c: 3);
オプション引数
String conc(String a, String b, [String c])
デフォルト引数
int someFunc4(int a, {int b = 2})
無名関数(ラムダ、クロージャ)
list.forEach((item) => print(item));
ブロック
- 変数のスコープ分離
クロージャ
- 変数のスコープから外れても利用できる
カスケード表記
- ..でインスタンスの記述を省略できる
- メソッドを連続で呼び出すことができる
演算子
型演算子
- as
- is
- is!
条件付きメンバアクセス
- ?.
構文
try catch
- 例外チェックは行わない
try { } on Exception catch (e) { } catch (e, s) { // sはスタックトレース } finally{}
ジェネリクス
void hoge(List<T> list){}
オブジェクト指向
- https://dart.dev/guides/language/language-tour#classes
- Dartはクラスとミックスインベースのインターフェースによるオブジェクト指向言語。
- すべてのオブジェクトはクラスのインスタンスでObjectの子孫
キーワード
- 継承 extends
- 継承元呼び出し super
- オーバーライド @overrideアノテーション
クラス
非同期処理
- asyncパッケージをインポート
import 'dart:async';
言語サンプル
File
Tips
実行時の型を調べる
runtimeType
print(o.runtimeType);
ログ
import 'dart:developer'; inspect(myVar);
import 'dart:convert'; print(json.encode(yourMapVariable));
© 2006 矢木浩人