Flutterでアプリを開発するにあたって開発言語であるDartについて理解する必要があると考えたので、Dartの基礎を学習しはじめました。
Dartについて
FlutterはAndroid・iOS、デスクトップアプリを開発することが可能なフレームワークです。Flutterの開発には、Googleが開発したDartという言語を使います。Dartを極めて大雑把に要約すると、JavaScriptの拡張性・メンテナンス性を改善し大規模システムに適した仕様とした言語です。
メリットとしてはJavaScriptに似ているので学習ハードルが低いこと・Flutterに使用されているので将来性が高いことですが、デメリットは日本語情報がまだまだ少ないことです。
データ型・変数・関数
データ型の基礎
変数に使えるデータ型の基礎として、int, String, bool
の3つがあります。これはそれぞれ整数・文字列・真偽値を扱うのに用いるデータ型です。
変数の定義は、データ型 変数名 = 値;
の構文で行います。
void main(){
int intVal = 123;
String strVal = "Elen";
bool boolVal = true;
print(intVal);
print(strVal);
print(boolVal);
}
123
Elen
true
リスト型
リスト型を使うと、Pythonのコレクションの様に複数の値を格納できます。Pythonとは違い、リストに含まれるデータ型を明示する必要があります。
void main(){
List<int> numberList = [0,1,3,4];
List<String> nameList = ["Elen","Mikasa","Armin"];
print(numberList);
print(nameList);
print(numberList[0]);
print(nameList[1]);
}
[0, 1, 3, 4]
[Elen, Mikasa, Armin]
0
Mikasa
リスト型には、あとから値を加えることもできます。
また、イテレーターを使った処理を行うのにlengthメソッドをよく使います。
void main(){
List<String> nameList = ["Elen","Mikasa","Armin"];
nameList.add("Jean");
print(nameList);
print(nameList.length);
}
[Elen, Mikasa, Armin, Jean]
4
マップ型
キーに対応する値を格納するには、マップ型を使います。
マップ型は、Pythonの辞書型の様に値と値を1対1対応にしたい時に使います。
void main(){
Map<int, String> nameMap = {1:"Elen", 2:"Mikasa"};
print(nameMap);
print(nameMap[1]);
nameMap[3] = "Armin";
print(nameMap[3]);
}
{1: Elen, 2: Mikasa}
Elen
Armin
型推論
変数を定義する際にvarで定義すると、型推論を行えます。
型推論とは、データの型を自動で割り振る機能です。
void main(){
var name = "Elen";
var number = 123
print(name);
print(number);
}
Elen
123
関数
関数とは、メソッド・関数処理をまとめたものです。
void main(){
void printNumber(int x, int y){
int number = 0;
print(number + x + y);
}
printNumber(123, 567);
}
690
フューチャー関数
フューチャー関数は、非同期処理を行いたい時に使います。
非同期処理を行えば、時間のかかる処理による遅延を起こさずに指定時間後に確実に処理を実行できます。
void main(){
Future<void> test() async{
print("処理開始");
//3行後に確実に終了させる
Future.delayed(Duration(seconds:3));
print("処理完了");
}
test();
}
処理開始
処理完了
ウィジェット
ウィジェットは、主にFlutterのUIを構成するコンポーネントです。
大雑把に表すと、UIを制作したい時に使うデータ型という理解をしています。DartPadでは、Flutterのパッケージをインポートすることもできます。
import "package:flutter/material.dart";
void main(){
Widget txt = Text("Elen");
Widget container = Container(width:10, height:5);
Widget icon = Icon(Icons.keyboard);
Widget column = Column();
}
Nullセーフティー
Dartでは、int・String等にnull値を格納するとエラーとなってしまいます。int?
と記述すると、null値を格納できるnullセーフティーに対応した型にできます。また変数がnullである場合、どの値として処理するかというnullチェックもできます
void main(){
int? num01 = null;
String? num02 = null;
void sum(int? x){
//xがnullである場合は、0として処理する
print((x ?? 0) + 1);
}
sum(num01);
}
1
今回は基礎の基礎であるデータ型・変数と関数について学びました。次回以降はfor文・if文、またオブジェクト指向な書き方などを学んでいきます。全3回ほどになる予定です。